blob: 83e7df6dcf0ccfd42969026cccbda2e5661e5712 [file] [log] [blame]
Robert Oliverd1323f42020-04-27 12:05:16 -04001// Copyright 2020 The Pigweed Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4// use this file except in compliance with the License. You may obtain a copy of
5// the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12// License for the specific language governing permissions and limitations under
13// the License.
14//
15// This is a simple test that ensures a provided trace backend compiles.
16
17#define PW_TRACE_MODULE_NAME "TST"
18#include "gtest/gtest.h"
19#include "pw_trace/trace.h"
20
21namespace {
22
23void TraceFunction() { PW_TRACE_FUNCTION(); }
24void TraceFunctionGroup() { PW_TRACE_FUNCTION("FunctionGroup"); }
25
26const char kSomeData[] = "SOME DATA";
27
28} // namespace
29
30TEST(BasicTrace, Instant) { PW_TRACE_INSTANT("Test"); }
31
32TEST(BasicTrace, InstantGroup) { PW_TRACE_INSTANT("Test", "group"); }
33
34TEST(BasicTrace, Duration) {
35 PW_TRACE_START("Test");
36 PW_TRACE_END("Test");
37}
38
39TEST(BasicTrace, DurationGroup) {
40 PW_TRACE_START("Parent", "group");
41 PW_TRACE_START("Child", "group");
42 PW_TRACE_END("child", "group");
43 PW_TRACE_START("Other Child", "group");
44 PW_TRACE_END("Other Child", "group");
45 PW_TRACE_END("Parent", "group");
46}
47
48TEST(BasicTrace, Async) {
49 uint32_t trace_id = 1;
50 PW_TRACE_START("label for start", "group", trace_id);
51 PW_TRACE_INSTANT("label for step", "group", trace_id);
52 PW_TRACE_END("label for end", "group", trace_id);
53}
54
55TEST(BasicTrace, Scope) { PW_TRACE_SCOPE("scoped trace"); }
56
57TEST(BasicTrace, ScopeGroup) {
58 PW_TRACE_SCOPE("scoped group trace", "group");
59 { PW_TRACE_SCOPE("sub scoped group trace", "group"); }
60}
61
62TEST(BasicTrace, Function) { TraceFunction(); }
63
64TEST(BasicTrace, FunctionGroup) { TraceFunctionGroup(); }
65
66TEST(BasicTrace, InstantData) {
67 PW_TRACE_INSTANT_DATA("Test", "s", kSomeData, sizeof(kSomeData));
68}
69
70TEST(BasicTrace, InstantGroupData) {
71 PW_TRACE_INSTANT_DATA("Test", "Group", "s", kSomeData, sizeof(kSomeData));
72}
73
74TEST(BasicTrace, DurationData) {
75 PW_TRACE_START_DATA("Test", "s", kSomeData, sizeof(kSomeData));
76 PW_TRACE_END_DATA("Test", "s", kSomeData, sizeof(kSomeData));
77}
78
79TEST(BasicTrace, DurationGroupData) {
80 PW_TRACE_START_DATA("Parent", "group", "s", kSomeData, sizeof(kSomeData));
81 PW_TRACE_START_DATA("Child", "group", "s", kSomeData, sizeof(kSomeData));
82 PW_TRACE_END_DATA("child", "group", "s", kSomeData, sizeof(kSomeData));
83 PW_TRACE_START_DATA(
84 "Other Child", "group", "s", kSomeData, sizeof(kSomeData));
85 PW_TRACE_END_DATA("Other Child", "group", "s", kSomeData, sizeof(kSomeData));
86 PW_TRACE_END_DATA("Parent", "group", "s", kSomeData, sizeof(kSomeData));
87}
88
89TEST(BasicTrace, AsyncData) {
90 uint32_t trace_id = 1;
91 PW_TRACE_START_DATA(
92 "label for start", "group", trace_id, "s", kSomeData, sizeof(kSomeData));
93 PW_TRACE_INSTANT_DATA(
94 "label for step", "group", trace_id, "s", kSomeData, sizeof(kSomeData));
95 PW_TRACE_END_DATA(
96 "label for end", "group", trace_id, "s", kSomeData, sizeof(kSomeData));
97}