xref: /aosp_15_r20/external/pigweed/pw_trace/trace_facade_test.cc (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker // Copyright 2020 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker //
3*61c4878aSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker // use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker // the License at
6*61c4878aSAndroid Build Coastguard Worker //
7*61c4878aSAndroid Build Coastguard Worker //     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker //
9*61c4878aSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker // License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker // the License.
14*61c4878aSAndroid Build Coastguard Worker 
15*61c4878aSAndroid Build Coastguard Worker #define PW_TRACE_MODULE_NAME "TST"
16*61c4878aSAndroid Build Coastguard Worker #include "pw_trace/trace.h"
17*61c4878aSAndroid Build Coastguard Worker #include "pw_trace_test/fake_backend.h"
18*61c4878aSAndroid Build Coastguard Worker #include "pw_unit_test/framework.h"
19*61c4878aSAndroid Build Coastguard Worker 
20*61c4878aSAndroid Build Coastguard Worker using namespace trace_fake_backend;
21*61c4878aSAndroid Build Coastguard Worker 
22*61c4878aSAndroid Build Coastguard Worker // Used by fake backend
23*61c4878aSAndroid Build Coastguard Worker LastEvent LastEvent::instance_;
24*61c4878aSAndroid Build Coastguard Worker 
25*61c4878aSAndroid Build Coastguard Worker namespace {
26*61c4878aSAndroid Build Coastguard Worker 
TraceFunction()27*61c4878aSAndroid Build Coastguard Worker void TraceFunction() {
28*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_FUNCTION();
29*61c4878aSAndroid Build Coastguard Worker   // Can't check label, since might change depending on compiler.
30*61c4878aSAndroid Build Coastguard Worker   EXPECT_TRUE(LastEvent::Instance().Get().IsEqualIgnoreLabel(
31*61c4878aSAndroid Build Coastguard Worker       Event(DurationStart,
32*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_FLAGS_DEFAULT,
33*61c4878aSAndroid Build Coastguard Worker             nullptr,
34*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_GROUP_LABEL_DEFAULT,
35*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_TRACE_ID_DEFAULT)));
36*61c4878aSAndroid Build Coastguard Worker }
37*61c4878aSAndroid Build Coastguard Worker 
TraceFunctionGroup()38*61c4878aSAndroid Build Coastguard Worker void TraceFunctionGroup() {
39*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_FUNCTION("FunctionGroup");
40*61c4878aSAndroid Build Coastguard Worker   // Can't check label, since might change depending on compiler.
41*61c4878aSAndroid Build Coastguard Worker   EXPECT_TRUE(LastEvent::Instance().Get().IsEqualIgnoreLabel(
42*61c4878aSAndroid Build Coastguard Worker       Event(DurationGroupStart,
43*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_FLAGS_DEFAULT,
44*61c4878aSAndroid Build Coastguard Worker             nullptr,
45*61c4878aSAndroid Build Coastguard Worker             "FunctionGroup",
46*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_TRACE_ID_DEFAULT)));
47*61c4878aSAndroid Build Coastguard Worker }
48*61c4878aSAndroid Build Coastguard Worker 
49*61c4878aSAndroid Build Coastguard Worker const char kSomeData[] = "SOME DATA";
50*61c4878aSAndroid Build Coastguard Worker 
51*61c4878aSAndroid Build Coastguard Worker }  // namespace
52*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,Instant)53*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, Instant) {
54*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT("Test");
55*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
56*61c4878aSAndroid Build Coastguard Worker             Event(Instantaneous,
57*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
58*61c4878aSAndroid Build Coastguard Worker                   "Test",
59*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
60*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
61*61c4878aSAndroid Build Coastguard Worker }
62*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,InstantGroup)63*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, InstantGroup) {
64*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT("Test", "group");
65*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
66*61c4878aSAndroid Build Coastguard Worker             Event(InstantaneousGroup,
67*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
68*61c4878aSAndroid Build Coastguard Worker                   "Test",
69*61c4878aSAndroid Build Coastguard Worker                   "group",
70*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
71*61c4878aSAndroid Build Coastguard Worker }
72*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,Duration)73*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, Duration) {
74*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_START("Test");
75*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
76*61c4878aSAndroid Build Coastguard Worker             Event(DurationStart,
77*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
78*61c4878aSAndroid Build Coastguard Worker                   "Test",
79*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
80*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
81*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_END("Test");
82*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
83*61c4878aSAndroid Build Coastguard Worker             Event(DurationEnd,
84*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
85*61c4878aSAndroid Build Coastguard Worker                   "Test",
86*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
87*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
88*61c4878aSAndroid Build Coastguard Worker }
89*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,DurationGroup)90*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, DurationGroup) {
91*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_START("Parent", "group");
92*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
93*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupStart,
94*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
95*61c4878aSAndroid Build Coastguard Worker                   "Parent",
96*61c4878aSAndroid Build Coastguard Worker                   "group",
97*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
98*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_START("Child", "group");
99*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
100*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupStart,
101*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
102*61c4878aSAndroid Build Coastguard Worker                   "Child",
103*61c4878aSAndroid Build Coastguard Worker                   "group",
104*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
105*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_END("Child", "group");
106*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
107*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupEnd,
108*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
109*61c4878aSAndroid Build Coastguard Worker                   "Child",
110*61c4878aSAndroid Build Coastguard Worker                   "group",
111*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
112*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_START("Other Child", "group");
113*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
114*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupStart,
115*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
116*61c4878aSAndroid Build Coastguard Worker                   "Other Child",
117*61c4878aSAndroid Build Coastguard Worker                   "group",
118*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
119*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_END("Other Child", "group");
120*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
121*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupEnd,
122*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
123*61c4878aSAndroid Build Coastguard Worker                   "Other Child",
124*61c4878aSAndroid Build Coastguard Worker                   "group",
125*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
126*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_END("Parent", "group");
127*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
128*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupEnd,
129*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
130*61c4878aSAndroid Build Coastguard Worker                   "Parent",
131*61c4878aSAndroid Build Coastguard Worker                   "group",
132*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
133*61c4878aSAndroid Build Coastguard Worker }
134*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,Async)135*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, Async) {
136*61c4878aSAndroid Build Coastguard Worker   uint32_t trace_id = 1;
137*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_START("async", "group", trace_id);
138*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(
139*61c4878aSAndroid Build Coastguard Worker       LastEvent::Instance().Get(),
140*61c4878aSAndroid Build Coastguard Worker       Event(AsyncStart, PW_TRACE_FLAGS_DEFAULT, "async", "group", trace_id));
141*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT("step", "group", trace_id);
142*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(
143*61c4878aSAndroid Build Coastguard Worker       LastEvent::Instance().Get(),
144*61c4878aSAndroid Build Coastguard Worker       Event(AsyncStep, PW_TRACE_FLAGS_DEFAULT, "step", "group", trace_id));
145*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_END("async", "group", trace_id);
146*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(
147*61c4878aSAndroid Build Coastguard Worker       LastEvent::Instance().Get(),
148*61c4878aSAndroid Build Coastguard Worker       Event(AsyncEnd, PW_TRACE_FLAGS_DEFAULT, "async", "group", trace_id));
149*61c4878aSAndroid Build Coastguard Worker }
150*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,Scope)151*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, Scope) {
152*61c4878aSAndroid Build Coastguard Worker   {
153*61c4878aSAndroid Build Coastguard Worker     PW_TRACE_SCOPE("scoped trace");
154*61c4878aSAndroid Build Coastguard Worker     EXPECT_EQ(LastEvent::Instance().Get(),
155*61c4878aSAndroid Build Coastguard Worker               Event(DurationStart,
156*61c4878aSAndroid Build Coastguard Worker                     PW_TRACE_FLAGS_DEFAULT,
157*61c4878aSAndroid Build Coastguard Worker                     "scoped trace",
158*61c4878aSAndroid Build Coastguard Worker                     PW_TRACE_GROUP_LABEL_DEFAULT,
159*61c4878aSAndroid Build Coastguard Worker                     PW_TRACE_TRACE_ID_DEFAULT));
160*61c4878aSAndroid Build Coastguard Worker   }
161*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
162*61c4878aSAndroid Build Coastguard Worker             Event(DurationEnd,
163*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
164*61c4878aSAndroid Build Coastguard Worker                   "scoped trace",
165*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
166*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
167*61c4878aSAndroid Build Coastguard Worker }
168*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,ScopeGroup)169*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, ScopeGroup) {
170*61c4878aSAndroid Build Coastguard Worker   {
171*61c4878aSAndroid Build Coastguard Worker     PW_TRACE_SCOPE("scoped group trace", "group");
172*61c4878aSAndroid Build Coastguard Worker     EXPECT_EQ(LastEvent::Instance().Get(),
173*61c4878aSAndroid Build Coastguard Worker               Event(DurationGroupStart,
174*61c4878aSAndroid Build Coastguard Worker                     PW_TRACE_FLAGS_DEFAULT,
175*61c4878aSAndroid Build Coastguard Worker                     "scoped group trace",
176*61c4878aSAndroid Build Coastguard Worker                     "group",
177*61c4878aSAndroid Build Coastguard Worker                     PW_TRACE_TRACE_ID_DEFAULT));
178*61c4878aSAndroid Build Coastguard Worker     {
179*61c4878aSAndroid Build Coastguard Worker       PW_TRACE_SCOPE("sub scoped group trace", "group");
180*61c4878aSAndroid Build Coastguard Worker       EXPECT_EQ(LastEvent::Instance().Get(),
181*61c4878aSAndroid Build Coastguard Worker                 Event(DurationGroupStart,
182*61c4878aSAndroid Build Coastguard Worker                       PW_TRACE_FLAGS_DEFAULT,
183*61c4878aSAndroid Build Coastguard Worker                       "sub scoped group trace",
184*61c4878aSAndroid Build Coastguard Worker                       "group",
185*61c4878aSAndroid Build Coastguard Worker                       PW_TRACE_TRACE_ID_DEFAULT));
186*61c4878aSAndroid Build Coastguard Worker     }
187*61c4878aSAndroid Build Coastguard Worker     EXPECT_EQ(LastEvent::Instance().Get(),
188*61c4878aSAndroid Build Coastguard Worker               Event(DurationGroupEnd,
189*61c4878aSAndroid Build Coastguard Worker                     PW_TRACE_FLAGS_DEFAULT,
190*61c4878aSAndroid Build Coastguard Worker                     "sub scoped group trace",
191*61c4878aSAndroid Build Coastguard Worker                     "group",
192*61c4878aSAndroid Build Coastguard Worker                     PW_TRACE_TRACE_ID_DEFAULT));
193*61c4878aSAndroid Build Coastguard Worker   }
194*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
195*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupEnd,
196*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
197*61c4878aSAndroid Build Coastguard Worker                   "scoped group trace",
198*61c4878aSAndroid Build Coastguard Worker                   "group",
199*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
200*61c4878aSAndroid Build Coastguard Worker }
201*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,ScopeTraceId)202*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, ScopeTraceId) {
203*61c4878aSAndroid Build Coastguard Worker   static constexpr uint32_t kTraceId = 5;
204*61c4878aSAndroid Build Coastguard Worker   {
205*61c4878aSAndroid Build Coastguard Worker     PW_TRACE_SCOPE("scoped trace id", "group", kTraceId);
206*61c4878aSAndroid Build Coastguard Worker     EXPECT_EQ(LastEvent::Instance().Get(),
207*61c4878aSAndroid Build Coastguard Worker               Event(AsyncStart,
208*61c4878aSAndroid Build Coastguard Worker                     PW_TRACE_FLAGS_DEFAULT,
209*61c4878aSAndroid Build Coastguard Worker                     "scoped trace id",
210*61c4878aSAndroid Build Coastguard Worker                     "group",
211*61c4878aSAndroid Build Coastguard Worker                     kTraceId));
212*61c4878aSAndroid Build Coastguard Worker   }
213*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
214*61c4878aSAndroid Build Coastguard Worker             Event(AsyncEnd,
215*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
216*61c4878aSAndroid Build Coastguard Worker                   "scoped trace id",
217*61c4878aSAndroid Build Coastguard Worker                   "group",
218*61c4878aSAndroid Build Coastguard Worker                   kTraceId));
219*61c4878aSAndroid Build Coastguard Worker }
220*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,Function)221*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, Function) {
222*61c4878aSAndroid Build Coastguard Worker   TraceFunction();
223*61c4878aSAndroid Build Coastguard Worker   // Can't check label, since might change depending on compiler.
224*61c4878aSAndroid Build Coastguard Worker   EXPECT_TRUE(LastEvent::Instance().Get().IsEqualIgnoreLabel(
225*61c4878aSAndroid Build Coastguard Worker       Event(DurationEnd,
226*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_FLAGS_DEFAULT,
227*61c4878aSAndroid Build Coastguard Worker             nullptr,
228*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_GROUP_LABEL_DEFAULT,
229*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_TRACE_ID_DEFAULT)));
230*61c4878aSAndroid Build Coastguard Worker }
231*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,FunctionGroup)232*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, FunctionGroup) {
233*61c4878aSAndroid Build Coastguard Worker   TraceFunctionGroup();
234*61c4878aSAndroid Build Coastguard Worker   // Can't check label, since might change depending on compiler.
235*61c4878aSAndroid Build Coastguard Worker   EXPECT_TRUE(LastEvent::Instance().Get().IsEqualIgnoreLabel(
236*61c4878aSAndroid Build Coastguard Worker       Event(DurationGroupEnd,
237*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_FLAGS_DEFAULT,
238*61c4878aSAndroid Build Coastguard Worker             nullptr,
239*61c4878aSAndroid Build Coastguard Worker             "FunctionGroup",
240*61c4878aSAndroid Build Coastguard Worker             PW_TRACE_TRACE_ID_DEFAULT)));
241*61c4878aSAndroid Build Coastguard Worker }
242*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,InstantData)243*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, InstantData) {
244*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT_DATA("Test", "s", kSomeData, sizeof(kSomeData));
245*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
246*61c4878aSAndroid Build Coastguard Worker             Event(Instantaneous,
247*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
248*61c4878aSAndroid Build Coastguard Worker                   "Test",
249*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
250*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
251*61c4878aSAndroid Build Coastguard Worker                   "s",
252*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
253*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
254*61c4878aSAndroid Build Coastguard Worker }
255*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,InstantGroupData)256*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, InstantGroupData) {
257*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT_DATA("Test", "Group", "s", kSomeData, sizeof(kSomeData));
258*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
259*61c4878aSAndroid Build Coastguard Worker             Event(InstantaneousGroup,
260*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
261*61c4878aSAndroid Build Coastguard Worker                   "Test",
262*61c4878aSAndroid Build Coastguard Worker                   "Group",
263*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
264*61c4878aSAndroid Build Coastguard Worker                   "s",
265*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
266*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
267*61c4878aSAndroid Build Coastguard Worker }
268*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,DurationData)269*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, DurationData) {
270*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_START_DATA("Test", "s", kSomeData, sizeof(kSomeData));
271*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
272*61c4878aSAndroid Build Coastguard Worker             Event(DurationStart,
273*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
274*61c4878aSAndroid Build Coastguard Worker                   "Test",
275*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
276*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
277*61c4878aSAndroid Build Coastguard Worker                   "s",
278*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
279*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
280*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_END_DATA("Test", "s", kSomeData, sizeof(kSomeData));
281*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
282*61c4878aSAndroid Build Coastguard Worker             Event(DurationEnd,
283*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
284*61c4878aSAndroid Build Coastguard Worker                   "Test",
285*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
286*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
287*61c4878aSAndroid Build Coastguard Worker                   "s",
288*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
289*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
290*61c4878aSAndroid Build Coastguard Worker }
291*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,DurationGroupData)292*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, DurationGroupData) {
293*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_START_DATA("Parent", "group", "s", kSomeData, sizeof(kSomeData));
294*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
295*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupStart,
296*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
297*61c4878aSAndroid Build Coastguard Worker                   "Parent",
298*61c4878aSAndroid Build Coastguard Worker                   "group",
299*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
300*61c4878aSAndroid Build Coastguard Worker                   "s",
301*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
302*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
303*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_START_DATA("Child", "group", "s", kSomeData, sizeof(kSomeData));
304*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
305*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupStart,
306*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
307*61c4878aSAndroid Build Coastguard Worker                   "Child",
308*61c4878aSAndroid Build Coastguard Worker                   "group",
309*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
310*61c4878aSAndroid Build Coastguard Worker                   "s",
311*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
312*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
313*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_END_DATA("Child", "group", "s", kSomeData, sizeof(kSomeData));
314*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
315*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupEnd,
316*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
317*61c4878aSAndroid Build Coastguard Worker                   "Child",
318*61c4878aSAndroid Build Coastguard Worker                   "group",
319*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
320*61c4878aSAndroid Build Coastguard Worker                   "s",
321*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
322*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
323*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_END_DATA("Parent", "group", "s", kSomeData, sizeof(kSomeData));
324*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
325*61c4878aSAndroid Build Coastguard Worker             Event(DurationGroupEnd,
326*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
327*61c4878aSAndroid Build Coastguard Worker                   "Parent",
328*61c4878aSAndroid Build Coastguard Worker                   "group",
329*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
330*61c4878aSAndroid Build Coastguard Worker                   "s",
331*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
332*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
333*61c4878aSAndroid Build Coastguard Worker }
334*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,AsyncData)335*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, AsyncData) {
336*61c4878aSAndroid Build Coastguard Worker   uint32_t trace_id = 1;
337*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_START_DATA(
338*61c4878aSAndroid Build Coastguard Worker       "label for start", "group", trace_id, "s", kSomeData, sizeof(kSomeData));
339*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
340*61c4878aSAndroid Build Coastguard Worker             Event(AsyncStart,
341*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
342*61c4878aSAndroid Build Coastguard Worker                   "label for start",
343*61c4878aSAndroid Build Coastguard Worker                   "group",
344*61c4878aSAndroid Build Coastguard Worker                   trace_id,
345*61c4878aSAndroid Build Coastguard Worker                   "s",
346*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
347*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
348*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT_DATA(
349*61c4878aSAndroid Build Coastguard Worker       "label for step", "group", trace_id, "s", kSomeData, sizeof(kSomeData));
350*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
351*61c4878aSAndroid Build Coastguard Worker             Event(AsyncStep,
352*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
353*61c4878aSAndroid Build Coastguard Worker                   "label for step",
354*61c4878aSAndroid Build Coastguard Worker                   "group",
355*61c4878aSAndroid Build Coastguard Worker                   trace_id,
356*61c4878aSAndroid Build Coastguard Worker                   "s",
357*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
358*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
359*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_END_DATA(
360*61c4878aSAndroid Build Coastguard Worker       "label for end", "group", trace_id, "s", kSomeData, sizeof(kSomeData));
361*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
362*61c4878aSAndroid Build Coastguard Worker             Event(AsyncEnd,
363*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
364*61c4878aSAndroid Build Coastguard Worker                   "label for end",
365*61c4878aSAndroid Build Coastguard Worker                   "group",
366*61c4878aSAndroid Build Coastguard Worker                   trace_id,
367*61c4878aSAndroid Build Coastguard Worker                   "s",
368*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
369*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
370*61c4878aSAndroid Build Coastguard Worker }
371*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,ProvideFlag)372*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, ProvideFlag) {
373*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT_FLAG(5, "Test");
374*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
375*61c4878aSAndroid Build Coastguard Worker             Event(Instantaneous,
376*61c4878aSAndroid Build Coastguard Worker                   5,
377*61c4878aSAndroid Build Coastguard Worker                   "Test",
378*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
379*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
380*61c4878aSAndroid Build Coastguard Worker }
381*61c4878aSAndroid Build Coastguard Worker 
TEST(BasicTrace,MacroFlag)382*61c4878aSAndroid Build Coastguard Worker TEST(BasicTrace, MacroFlag) {
383*61c4878aSAndroid Build Coastguard Worker #undef PW_TRACE_FLAGS
384*61c4878aSAndroid Build Coastguard Worker #define PW_TRACE_FLAGS 6
385*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT("Test");
386*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
387*61c4878aSAndroid Build Coastguard Worker             Event(Instantaneous,
388*61c4878aSAndroid Build Coastguard Worker                   6,
389*61c4878aSAndroid Build Coastguard Worker                   "Test",
390*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
391*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
392*61c4878aSAndroid Build Coastguard Worker #undef PW_TRACE_FLAGS
393*61c4878aSAndroid Build Coastguard Worker #define PW_TRACE_FLAGS PW_TRACE_FLAGS_DEFAULT
394*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT("Test");
395*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
396*61c4878aSAndroid Build Coastguard Worker             Event(Instantaneous,
397*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
398*61c4878aSAndroid Build Coastguard Worker                   "Test",
399*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
400*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
401*61c4878aSAndroid Build Coastguard Worker }
402*61c4878aSAndroid Build Coastguard Worker 
TEST(DisableTrace,Instant)403*61c4878aSAndroid Build Coastguard Worker TEST(DisableTrace, Instant) {
404*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT("Test");
405*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
406*61c4878aSAndroid Build Coastguard Worker             Event(Instantaneous,
407*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
408*61c4878aSAndroid Build Coastguard Worker                   "Test",
409*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
410*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
411*61c4878aSAndroid Build Coastguard Worker #undef PW_TRACE_ENABLE
412*61c4878aSAndroid Build Coastguard Worker #define PW_TRACE_ENABLE 0
413*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT("TestDisabled");
414*61c4878aSAndroid Build Coastguard Worker 
415*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
416*61c4878aSAndroid Build Coastguard Worker             Event(Instantaneous,
417*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
418*61c4878aSAndroid Build Coastguard Worker                   "Test",
419*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
420*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT));
421*61c4878aSAndroid Build Coastguard Worker #undef PW_TRACE_ENABLE
422*61c4878aSAndroid Build Coastguard Worker #define PW_TRACE_ENABLE 1
423*61c4878aSAndroid Build Coastguard Worker }
424*61c4878aSAndroid Build Coastguard Worker 
TEST(DisableTrace,InstantData)425*61c4878aSAndroid Build Coastguard Worker TEST(DisableTrace, InstantData) {
426*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT_DATA("Test", "s", kSomeData, sizeof(kSomeData));
427*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
428*61c4878aSAndroid Build Coastguard Worker             Event(Instantaneous,
429*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
430*61c4878aSAndroid Build Coastguard Worker                   "Test",
431*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
432*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
433*61c4878aSAndroid Build Coastguard Worker                   "s",
434*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
435*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
436*61c4878aSAndroid Build Coastguard Worker 
437*61c4878aSAndroid Build Coastguard Worker #undef PW_TRACE_ENABLE
438*61c4878aSAndroid Build Coastguard Worker #define PW_TRACE_ENABLE 0
439*61c4878aSAndroid Build Coastguard Worker   PW_TRACE_INSTANT_DATA("TestDisabled", "s", kSomeData, sizeof(kSomeData));
440*61c4878aSAndroid Build Coastguard Worker   EXPECT_EQ(LastEvent::Instance().Get(),
441*61c4878aSAndroid Build Coastguard Worker             Event(Instantaneous,
442*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_FLAGS_DEFAULT,
443*61c4878aSAndroid Build Coastguard Worker                   "Test",
444*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_GROUP_LABEL_DEFAULT,
445*61c4878aSAndroid Build Coastguard Worker                   PW_TRACE_TRACE_ID_DEFAULT,
446*61c4878aSAndroid Build Coastguard Worker                   "s",
447*61c4878aSAndroid Build Coastguard Worker                   kSomeData,
448*61c4878aSAndroid Build Coastguard Worker                   sizeof(kSomeData)));
449*61c4878aSAndroid Build Coastguard Worker #undef PW_TRACE_ENABLE
450*61c4878aSAndroid Build Coastguard Worker #define PW_TRACE_ENABLE 1
451*61c4878aSAndroid Build Coastguard Worker }
452