xref: /aosp_15_r20/external/libchrome/dbus/dbus_statistics_unittest.cc (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker 
5*635a8641SAndroid Build Coastguard Worker #include "dbus/dbus_statistics.h"
6*635a8641SAndroid Build Coastguard Worker 
7*635a8641SAndroid Build Coastguard Worker #include "base/compiler_specific.h"
8*635a8641SAndroid Build Coastguard Worker #include "base/macros.h"
9*635a8641SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
10*635a8641SAndroid Build Coastguard Worker 
11*635a8641SAndroid Build Coastguard Worker namespace dbus {
12*635a8641SAndroid Build Coastguard Worker 
13*635a8641SAndroid Build Coastguard Worker class DBusStatisticsTest : public testing::Test {
14*635a8641SAndroid Build Coastguard Worker  public:
15*635a8641SAndroid Build Coastguard Worker   DBusStatisticsTest() = default;
16*635a8641SAndroid Build Coastguard Worker 
SetUp()17*635a8641SAndroid Build Coastguard Worker   void SetUp() override { statistics::Initialize(); }
18*635a8641SAndroid Build Coastguard Worker 
TearDown()19*635a8641SAndroid Build Coastguard Worker   void TearDown() override { statistics::Shutdown(); }
20*635a8641SAndroid Build Coastguard Worker 
21*635a8641SAndroid Build Coastguard Worker  protected:
AddTestMethodCalls()22*635a8641SAndroid Build Coastguard Worker   void AddTestMethodCalls() {
23*635a8641SAndroid Build Coastguard Worker     statistics::AddSentMethodCall(
24*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface1", "method1");
25*635a8641SAndroid Build Coastguard Worker     statistics::AddReceivedSignal(
26*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface1", "method1");
27*635a8641SAndroid Build Coastguard Worker     statistics::AddBlockingSentMethodCall(
28*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface1", "method1");
29*635a8641SAndroid Build Coastguard Worker 
30*635a8641SAndroid Build Coastguard Worker     statistics::AddSentMethodCall(
31*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface1", "method2");
32*635a8641SAndroid Build Coastguard Worker     statistics::AddSentMethodCall(
33*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface1", "method2");
34*635a8641SAndroid Build Coastguard Worker     statistics::AddReceivedSignal(
35*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface1", "method2");
36*635a8641SAndroid Build Coastguard Worker 
37*635a8641SAndroid Build Coastguard Worker     statistics::AddSentMethodCall(
38*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface1", "method3");
39*635a8641SAndroid Build Coastguard Worker     statistics::AddSentMethodCall(
40*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface1", "method3");
41*635a8641SAndroid Build Coastguard Worker     statistics::AddSentMethodCall(
42*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface1", "method3");
43*635a8641SAndroid Build Coastguard Worker 
44*635a8641SAndroid Build Coastguard Worker     statistics::AddSentMethodCall(
45*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface2", "method1");
46*635a8641SAndroid Build Coastguard Worker 
47*635a8641SAndroid Build Coastguard Worker     statistics::AddSentMethodCall(
48*635a8641SAndroid Build Coastguard Worker         "service1", "service1.interface2", "method2");
49*635a8641SAndroid Build Coastguard Worker 
50*635a8641SAndroid Build Coastguard Worker     statistics::AddSentMethodCall(
51*635a8641SAndroid Build Coastguard Worker         "service2", "service2.interface1", "method1");
52*635a8641SAndroid Build Coastguard Worker   }
53*635a8641SAndroid Build Coastguard Worker 
54*635a8641SAndroid Build Coastguard Worker  private:
55*635a8641SAndroid Build Coastguard Worker   DISALLOW_COPY_AND_ASSIGN(DBusStatisticsTest);
56*635a8641SAndroid Build Coastguard Worker };
57*635a8641SAndroid Build Coastguard Worker 
TEST_F(DBusStatisticsTest,TestDBusStatsBasic)58*635a8641SAndroid Build Coastguard Worker TEST_F(DBusStatisticsTest, TestDBusStatsBasic) {
59*635a8641SAndroid Build Coastguard Worker   int sent = 0, received = 0, block = 0;
60*635a8641SAndroid Build Coastguard Worker 
61*635a8641SAndroid Build Coastguard Worker   // Add a sent call
62*635a8641SAndroid Build Coastguard Worker   statistics::AddSentMethodCall("service1", "service1.interface1", "method1");
63*635a8641SAndroid Build Coastguard Worker   ASSERT_TRUE(statistics::testing::GetCalls(
64*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface1", "method1", &sent, &received, &block));
65*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, sent);
66*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, received);
67*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, block);
68*635a8641SAndroid Build Coastguard Worker 
69*635a8641SAndroid Build Coastguard Worker   // Add a received call
70*635a8641SAndroid Build Coastguard Worker   statistics::AddReceivedSignal("service1", "service1.interface1", "method1");
71*635a8641SAndroid Build Coastguard Worker   ASSERT_TRUE(statistics::testing::GetCalls(
72*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface1", "method1", &sent, &received, &block));
73*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, sent);
74*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, received);
75*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, block);
76*635a8641SAndroid Build Coastguard Worker 
77*635a8641SAndroid Build Coastguard Worker   // Add a block call
78*635a8641SAndroid Build Coastguard Worker   statistics::AddBlockingSentMethodCall(
79*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface1", "method1");
80*635a8641SAndroid Build Coastguard Worker   ASSERT_TRUE(statistics::testing::GetCalls(
81*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface1", "method1", &sent, &received, &block));
82*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, sent);
83*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, received);
84*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, block);
85*635a8641SAndroid Build Coastguard Worker }
86*635a8641SAndroid Build Coastguard Worker 
TEST_F(DBusStatisticsTest,TestDBusStatsMulti)87*635a8641SAndroid Build Coastguard Worker TEST_F(DBusStatisticsTest, TestDBusStatsMulti) {
88*635a8641SAndroid Build Coastguard Worker   int sent = 0, received = 0, block = 0;
89*635a8641SAndroid Build Coastguard Worker 
90*635a8641SAndroid Build Coastguard Worker   // Add some more stats to exercise accessing multiple different stats.
91*635a8641SAndroid Build Coastguard Worker   AddTestMethodCalls();
92*635a8641SAndroid Build Coastguard Worker 
93*635a8641SAndroid Build Coastguard Worker   // Make sure all entries can be found in the set and their counts were
94*635a8641SAndroid Build Coastguard Worker   // incremented correctly.
95*635a8641SAndroid Build Coastguard Worker   ASSERT_TRUE(statistics::testing::GetCalls(
96*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface1", "method1", &sent, &received, &block));
97*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, sent);
98*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, received);
99*635a8641SAndroid Build Coastguard Worker   ASSERT_TRUE(statistics::testing::GetCalls(
100*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface1", "method2", &sent, &received, &block));
101*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(2, sent);
102*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, received);
103*635a8641SAndroid Build Coastguard Worker   ASSERT_TRUE(statistics::testing::GetCalls(
104*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface1", "method3", &sent, &received, &block));
105*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(3, sent);
106*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, received);
107*635a8641SAndroid Build Coastguard Worker   ASSERT_TRUE(statistics::testing::GetCalls(
108*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface2", "method1", &sent, &received, &block));
109*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, sent);
110*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, received);
111*635a8641SAndroid Build Coastguard Worker   ASSERT_TRUE(statistics::testing::GetCalls(
112*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface2", "method2", &sent, &received, &block));
113*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, sent);
114*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, received);
115*635a8641SAndroid Build Coastguard Worker   ASSERT_TRUE(statistics::testing::GetCalls(
116*635a8641SAndroid Build Coastguard Worker       "service2", "service2.interface1", "method1", &sent, &received, &block));
117*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, sent);
118*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, received);
119*635a8641SAndroid Build Coastguard Worker 
120*635a8641SAndroid Build Coastguard Worker   ASSERT_FALSE(statistics::testing::GetCalls(
121*635a8641SAndroid Build Coastguard Worker       "service1", "service1.interface3", "method2", &sent, &received, &block));
122*635a8641SAndroid Build Coastguard Worker }
123*635a8641SAndroid Build Coastguard Worker 
TEST_F(DBusStatisticsTest,TestGetAsString)124*635a8641SAndroid Build Coastguard Worker TEST_F(DBusStatisticsTest, TestGetAsString) {
125*635a8641SAndroid Build Coastguard Worker   std::string output_none = GetAsString(statistics::SHOW_SERVICE,
126*635a8641SAndroid Build Coastguard Worker                                         statistics::FORMAT_TOTALS);
127*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ("No DBus calls.", output_none);
128*635a8641SAndroid Build Coastguard Worker 
129*635a8641SAndroid Build Coastguard Worker   AddTestMethodCalls();
130*635a8641SAndroid Build Coastguard Worker 
131*635a8641SAndroid Build Coastguard Worker   std::string output_service = GetAsString(statistics::SHOW_SERVICE,
132*635a8641SAndroid Build Coastguard Worker                                            statistics::FORMAT_TOTALS);
133*635a8641SAndroid Build Coastguard Worker   const std::string expected_output_service(
134*635a8641SAndroid Build Coastguard Worker       "service1: Sent (BLOCKING): 1 Sent: 8 Received: 2\n"
135*635a8641SAndroid Build Coastguard Worker       "service2: Sent: 1\n");
136*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected_output_service, output_service);
137*635a8641SAndroid Build Coastguard Worker 
138*635a8641SAndroid Build Coastguard Worker   std::string output_interface = GetAsString(statistics::SHOW_INTERFACE,
139*635a8641SAndroid Build Coastguard Worker                                              statistics::FORMAT_TOTALS);
140*635a8641SAndroid Build Coastguard Worker   const std::string expected_output_interface(
141*635a8641SAndroid Build Coastguard Worker       "service1.interface1: Sent (BLOCKING): 1 Sent: 6 Received: 2\n"
142*635a8641SAndroid Build Coastguard Worker       "service1.interface2: Sent: 2\n"
143*635a8641SAndroid Build Coastguard Worker       "service2.interface1: Sent: 1\n");
144*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected_output_interface, output_interface);
145*635a8641SAndroid Build Coastguard Worker 
146*635a8641SAndroid Build Coastguard Worker   std::string output_per_minute = GetAsString(statistics::SHOW_INTERFACE,
147*635a8641SAndroid Build Coastguard Worker                                               statistics::FORMAT_PER_MINUTE);
148*635a8641SAndroid Build Coastguard Worker   const std::string expected_output_per_minute(
149*635a8641SAndroid Build Coastguard Worker       "service1.interface1: Sent (BLOCKING): 1/min Sent: 6/min"
150*635a8641SAndroid Build Coastguard Worker       " Received: 2/min\n"
151*635a8641SAndroid Build Coastguard Worker       "service1.interface2: Sent: 2/min\n"
152*635a8641SAndroid Build Coastguard Worker       "service2.interface1: Sent: 1/min\n");
153*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected_output_per_minute, output_per_minute);
154*635a8641SAndroid Build Coastguard Worker 
155*635a8641SAndroid Build Coastguard Worker   std::string output_all = GetAsString(statistics::SHOW_INTERFACE,
156*635a8641SAndroid Build Coastguard Worker                                        statistics::FORMAT_ALL);
157*635a8641SAndroid Build Coastguard Worker   const std::string expected_output_all(
158*635a8641SAndroid Build Coastguard Worker       "service1.interface1: Sent (BLOCKING): 1 (1/min) Sent: 6 (6/min)"
159*635a8641SAndroid Build Coastguard Worker       " Received: 2 (2/min)\n"
160*635a8641SAndroid Build Coastguard Worker       "service1.interface2: Sent: 2 (2/min)\n"
161*635a8641SAndroid Build Coastguard Worker       "service2.interface1: Sent: 1 (1/min)\n");
162*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected_output_all, output_all);
163*635a8641SAndroid Build Coastguard Worker 
164*635a8641SAndroid Build Coastguard Worker 
165*635a8641SAndroid Build Coastguard Worker   std::string output_method = GetAsString(statistics::SHOW_METHOD,
166*635a8641SAndroid Build Coastguard Worker                                           statistics::FORMAT_TOTALS);
167*635a8641SAndroid Build Coastguard Worker   const std::string expected_output_method(
168*635a8641SAndroid Build Coastguard Worker       "service1.interface1.method1: Sent (BLOCKING): 1 Sent: 1 Received: 1\n"
169*635a8641SAndroid Build Coastguard Worker       "service1.interface1.method2: Sent: 2 Received: 1\n"
170*635a8641SAndroid Build Coastguard Worker       "service1.interface1.method3: Sent: 3\n"
171*635a8641SAndroid Build Coastguard Worker       "service1.interface2.method1: Sent: 1\n"
172*635a8641SAndroid Build Coastguard Worker       "service1.interface2.method2: Sent: 1\n"
173*635a8641SAndroid Build Coastguard Worker       "service2.interface1.method1: Sent: 1\n");
174*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected_output_method, output_method);
175*635a8641SAndroid Build Coastguard Worker 
176*635a8641SAndroid Build Coastguard Worker }
177*635a8641SAndroid Build Coastguard Worker 
178*635a8641SAndroid Build Coastguard Worker }  // namespace dbus
179