OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/trace_event/memory_dump_manager.h" | 10 #include "base/trace_event/memory_dump_manager.h" |
11 #include "base/trace_event/trace_config.h" | 11 #include "base/trace_event/trace_config.h" |
12 #include "base/trace_event/trace_config_memory_test_util.h" | 12 #include "base/trace_event/trace_config_memory_test_util.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 | 14 |
15 namespace base { | 15 namespace base { |
16 namespace trace_event { | 16 namespace trace_event { |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 const char kDefaultTraceConfigString[] = | 20 const char kDefaultTraceConfigString[] = |
21 "{" | 21 "{" |
22 "\"enable_argument_filter\":false," | 22 "\"enable_argument_filter\":false," |
23 "\"enable_sampling\":false," | |
24 "\"enable_systrace\":false," | 23 "\"enable_systrace\":false," |
25 "\"record_mode\":\"record-until-full\"" | 24 "\"record_mode\":\"record-until-full\"" |
26 "}"; | 25 "}"; |
27 | 26 |
28 const char kCustomTraceConfigString[] = | 27 const char kCustomTraceConfigString[] = |
29 "{" | 28 "{" |
30 "\"enable_argument_filter\":true," | 29 "\"enable_argument_filter\":true," |
31 "\"enable_sampling\":true," | |
32 "\"enable_systrace\":true," | 30 "\"enable_systrace\":true," |
33 "\"event_filters\":[" | 31 "\"event_filters\":[" |
34 "{" | 32 "{" |
35 "\"excluded_categories\":[\"unfiltered_cat\"]," | 33 "\"excluded_categories\":[\"unfiltered_cat\"]," |
36 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," | 34 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," |
37 "\"filter_predicate\":\"event_whitelist_predicate\"," | 35 "\"filter_predicate\":\"event_whitelist_predicate\"," |
38 "\"included_categories\":[\"*\"]" | 36 "\"included_categories\":[\"*\"]" |
39 "}" | 37 "}" |
40 "]," | 38 "]," |
41 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 39 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
(...skipping 10 matching lines...) Expand all Loading... |
52 "{\"mode\":\"light\",\"periodic_interval_ms\":50}," | 50 "{\"mode\":\"light\",\"periodic_interval_ms\":50}," |
53 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" | 51 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" |
54 "]" | 52 "]" |
55 "}," | 53 "}," |
56 "\"record_mode\":\"record-continuously\"," | 54 "\"record_mode\":\"record-continuously\"," |
57 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" | 55 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" |
58 "}"; | 56 "}"; |
59 | 57 |
60 void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) { | 58 void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) { |
61 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 59 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
62 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
63 EXPECT_FALSE(tc.IsSystraceEnabled()); | 60 EXPECT_FALSE(tc.IsSystraceEnabled()); |
64 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 61 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
65 | 62 |
66 // Default trace config enables every category filter except the | 63 // Default trace config enables every category filter except the |
67 // disabled-by-default-* ones. | 64 // disabled-by-default-* ones. |
68 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1")); | 65 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1")); |
69 EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category")); | 66 EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category")); |
70 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); | 67 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); |
71 | 68 |
72 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,not-excluded-category")); | 69 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,not-excluded-category")); |
73 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,disabled-by-default-cc")); | 70 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,disabled-by-default-cc")); |
74 EXPECT_FALSE(tc.IsCategoryGroupEnabled( | 71 EXPECT_FALSE(tc.IsCategoryGroupEnabled( |
75 "disabled-by-default-cc,disabled-by-default-cc2")); | 72 "disabled-by-default-cc,disabled-by-default-cc2")); |
76 } | 73 } |
77 | 74 |
78 } // namespace | 75 } // namespace |
79 | 76 |
80 TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) { | 77 TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) { |
81 // From trace options strings | 78 // From trace options strings |
82 TraceConfig config("", "record-until-full"); | 79 TraceConfig config("", "record-until-full"); |
83 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 80 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
84 EXPECT_FALSE(config.IsSamplingEnabled()); | |
85 EXPECT_FALSE(config.IsSystraceEnabled()); | 81 EXPECT_FALSE(config.IsSystraceEnabled()); |
86 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 82 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
87 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 83 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
88 | 84 |
89 config = TraceConfig("", "record-continuously"); | 85 config = TraceConfig("", "record-continuously"); |
90 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); | 86 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); |
91 EXPECT_FALSE(config.IsSamplingEnabled()); | |
92 EXPECT_FALSE(config.IsSystraceEnabled()); | 87 EXPECT_FALSE(config.IsSystraceEnabled()); |
93 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 88 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
94 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); | 89 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); |
95 | 90 |
96 config = TraceConfig("", "trace-to-console"); | 91 config = TraceConfig("", "trace-to-console"); |
97 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 92 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
98 EXPECT_FALSE(config.IsSamplingEnabled()); | |
99 EXPECT_FALSE(config.IsSystraceEnabled()); | 93 EXPECT_FALSE(config.IsSystraceEnabled()); |
100 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 94 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
101 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); | 95 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); |
102 | 96 |
103 config = TraceConfig("", "record-as-much-as-possible"); | 97 config = TraceConfig("", "record-as-much-as-possible"); |
104 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); | 98 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); |
105 EXPECT_FALSE(config.IsSamplingEnabled()); | |
106 EXPECT_FALSE(config.IsSystraceEnabled()); | 99 EXPECT_FALSE(config.IsSystraceEnabled()); |
107 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 100 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
108 EXPECT_STREQ("record-as-much-as-possible", | 101 EXPECT_STREQ("record-as-much-as-possible", |
109 config.ToTraceOptionsString().c_str()); | 102 config.ToTraceOptionsString().c_str()); |
110 | 103 |
111 config = TraceConfig("", "record-until-full, enable-sampling"); | |
112 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | |
113 EXPECT_TRUE(config.IsSamplingEnabled()); | |
114 EXPECT_FALSE(config.IsSystraceEnabled()); | |
115 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | |
116 EXPECT_STREQ("record-until-full,enable-sampling", | |
117 config.ToTraceOptionsString().c_str()); | |
118 | |
119 config = TraceConfig("", "enable-systrace, record-continuously"); | 104 config = TraceConfig("", "enable-systrace, record-continuously"); |
120 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); | 105 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); |
121 EXPECT_FALSE(config.IsSamplingEnabled()); | |
122 EXPECT_TRUE(config.IsSystraceEnabled()); | 106 EXPECT_TRUE(config.IsSystraceEnabled()); |
123 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 107 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
124 EXPECT_STREQ("record-continuously,enable-systrace", | 108 EXPECT_STREQ("record-continuously,enable-systrace", |
125 config.ToTraceOptionsString().c_str()); | 109 config.ToTraceOptionsString().c_str()); |
126 | 110 |
127 config = TraceConfig("", "enable-argument-filter,record-as-much-as-possible"); | 111 config = TraceConfig("", "enable-argument-filter,record-as-much-as-possible"); |
128 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); | 112 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); |
129 EXPECT_FALSE(config.IsSamplingEnabled()); | |
130 EXPECT_FALSE(config.IsSystraceEnabled()); | 113 EXPECT_FALSE(config.IsSystraceEnabled()); |
131 EXPECT_TRUE(config.IsArgumentFilterEnabled()); | 114 EXPECT_TRUE(config.IsArgumentFilterEnabled()); |
132 EXPECT_STREQ("record-as-much-as-possible,enable-argument-filter", | 115 EXPECT_STREQ("record-as-much-as-possible,enable-argument-filter", |
133 config.ToTraceOptionsString().c_str()); | 116 config.ToTraceOptionsString().c_str()); |
134 | 117 |
135 config = TraceConfig( | 118 config = TraceConfig( |
136 "", | 119 "", |
137 "enable-systrace,trace-to-console,enable-sampling,enable-argument-filter"); | 120 "enable-systrace,trace-to-console,enable-argument-filter"); |
138 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 121 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
139 EXPECT_TRUE(config.IsSamplingEnabled()); | |
140 EXPECT_TRUE(config.IsSystraceEnabled()); | 122 EXPECT_TRUE(config.IsSystraceEnabled()); |
141 EXPECT_TRUE(config.IsArgumentFilterEnabled()); | 123 EXPECT_TRUE(config.IsArgumentFilterEnabled()); |
142 EXPECT_STREQ( | 124 EXPECT_STREQ( |
143 "trace-to-console,enable-sampling,enable-systrace,enable-argument-filter", | 125 "trace-to-console,enable-systrace,enable-argument-filter", |
144 config.ToTraceOptionsString().c_str()); | 126 config.ToTraceOptionsString().c_str()); |
145 | 127 |
146 config = TraceConfig( | 128 config = TraceConfig( |
147 "", "record-continuously, record-until-full, trace-to-console"); | 129 "", "record-continuously, record-until-full, trace-to-console"); |
148 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 130 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
149 EXPECT_FALSE(config.IsSamplingEnabled()); | |
150 EXPECT_FALSE(config.IsSystraceEnabled()); | 131 EXPECT_FALSE(config.IsSystraceEnabled()); |
151 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 132 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
152 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); | 133 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); |
153 | 134 |
154 // From TraceRecordMode | 135 // From TraceRecordMode |
155 config = TraceConfig("", RECORD_UNTIL_FULL); | 136 config = TraceConfig("", RECORD_UNTIL_FULL); |
156 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 137 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
157 EXPECT_FALSE(config.IsSamplingEnabled()); | |
158 EXPECT_FALSE(config.IsSystraceEnabled()); | 138 EXPECT_FALSE(config.IsSystraceEnabled()); |
159 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 139 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
160 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 140 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
161 | 141 |
162 config = TraceConfig("", RECORD_CONTINUOUSLY); | 142 config = TraceConfig("", RECORD_CONTINUOUSLY); |
163 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); | 143 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); |
164 EXPECT_FALSE(config.IsSamplingEnabled()); | |
165 EXPECT_FALSE(config.IsSystraceEnabled()); | 144 EXPECT_FALSE(config.IsSystraceEnabled()); |
166 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 145 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
167 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); | 146 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); |
168 | 147 |
169 config = TraceConfig("", ECHO_TO_CONSOLE); | 148 config = TraceConfig("", ECHO_TO_CONSOLE); |
170 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 149 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
171 EXPECT_FALSE(config.IsSamplingEnabled()); | |
172 EXPECT_FALSE(config.IsSystraceEnabled()); | 150 EXPECT_FALSE(config.IsSystraceEnabled()); |
173 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 151 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
174 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); | 152 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); |
175 | 153 |
176 config = TraceConfig("", RECORD_AS_MUCH_AS_POSSIBLE); | 154 config = TraceConfig("", RECORD_AS_MUCH_AS_POSSIBLE); |
177 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); | 155 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); |
178 EXPECT_FALSE(config.IsSamplingEnabled()); | |
179 EXPECT_FALSE(config.IsSystraceEnabled()); | 156 EXPECT_FALSE(config.IsSystraceEnabled()); |
180 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 157 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
181 EXPECT_STREQ("record-as-much-as-possible", | 158 EXPECT_STREQ("record-as-much-as-possible", |
182 config.ToTraceOptionsString().c_str()); | 159 config.ToTraceOptionsString().c_str()); |
183 | 160 |
184 // From category filter strings | 161 // From category filter strings |
185 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", ""); | 162 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", ""); |
186 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | 163 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
187 config.ToCategoryFilterString().c_str()); | 164 config.ToCategoryFilterString().c_str()); |
188 | 165 |
(...skipping 11 matching lines...) Expand all Loading... |
200 EXPECT_STREQ("included,disabled-by-default-cc", | 177 EXPECT_STREQ("included,disabled-by-default-cc", |
201 config.ToCategoryFilterString().c_str()); | 178 config.ToCategoryFilterString().c_str()); |
202 | 179 |
203 config = TraceConfig("DELAY(test.Delay1;16),included", ""); | 180 config = TraceConfig("DELAY(test.Delay1;16),included", ""); |
204 EXPECT_STREQ("included,DELAY(test.Delay1;16)", | 181 EXPECT_STREQ("included,DELAY(test.Delay1;16)", |
205 config.ToCategoryFilterString().c_str()); | 182 config.ToCategoryFilterString().c_str()); |
206 | 183 |
207 // From both trace options and category filter strings | 184 // From both trace options and category filter strings |
208 config = TraceConfig("", ""); | 185 config = TraceConfig("", ""); |
209 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 186 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
210 EXPECT_FALSE(config.IsSamplingEnabled()); | |
211 EXPECT_FALSE(config.IsSystraceEnabled()); | 187 EXPECT_FALSE(config.IsSystraceEnabled()); |
212 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 188 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
213 EXPECT_STREQ("", config.ToCategoryFilterString().c_str()); | 189 EXPECT_STREQ("", config.ToCategoryFilterString().c_str()); |
214 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 190 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
215 | 191 |
216 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", | 192 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", |
217 "enable-systrace, trace-to-console, enable-sampling"); | 193 "enable-systrace, trace-to-console"); |
218 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 194 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
219 EXPECT_TRUE(config.IsSamplingEnabled()); | |
220 EXPECT_TRUE(config.IsSystraceEnabled()); | 195 EXPECT_TRUE(config.IsSystraceEnabled()); |
221 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 196 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
222 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | 197 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
223 config.ToCategoryFilterString().c_str()); | 198 config.ToCategoryFilterString().c_str()); |
224 EXPECT_STREQ("trace-to-console,enable-sampling,enable-systrace", | 199 EXPECT_STREQ("trace-to-console,enable-systrace", |
225 config.ToTraceOptionsString().c_str()); | 200 config.ToTraceOptionsString().c_str()); |
226 | 201 |
227 // From both trace options and category filter strings with spaces. | 202 // From both trace options and category filter strings with spaces. |
228 config = TraceConfig(" included , -excluded, inc_pattern*, ,-exc_pattern* ", | 203 config = TraceConfig(" included , -excluded, inc_pattern*, ,-exc_pattern* ", |
229 "enable-systrace, ,trace-to-console, enable-sampling "); | 204 "enable-systrace, ,trace-to-console "); |
230 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 205 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
231 EXPECT_TRUE(config.IsSamplingEnabled()); | |
232 EXPECT_TRUE(config.IsSystraceEnabled()); | 206 EXPECT_TRUE(config.IsSystraceEnabled()); |
233 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 207 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
234 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | 208 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
235 config.ToCategoryFilterString().c_str()); | 209 config.ToCategoryFilterString().c_str()); |
236 EXPECT_STREQ("trace-to-console,enable-sampling,enable-systrace", | 210 EXPECT_STREQ("trace-to-console,enable-systrace", |
237 config.ToTraceOptionsString().c_str()); | 211 config.ToTraceOptionsString().c_str()); |
238 | 212 |
239 // From category filter string and TraceRecordMode | 213 // From category filter string and TraceRecordMode |
240 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", | 214 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", |
241 RECORD_CONTINUOUSLY); | 215 RECORD_CONTINUOUSLY); |
242 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); | 216 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); |
243 EXPECT_FALSE(config.IsSystraceEnabled()); | 217 EXPECT_FALSE(config.IsSystraceEnabled()); |
244 EXPECT_FALSE(config.IsSamplingEnabled()); | |
245 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 218 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
246 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | 219 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
247 config.ToCategoryFilterString().c_str()); | 220 config.ToCategoryFilterString().c_str()); |
248 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); | 221 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); |
249 } | 222 } |
250 | 223 |
251 TEST(TraceConfigTest, TraceConfigFromInvalidLegacyStrings) { | 224 TEST(TraceConfigTest, TraceConfigFromInvalidLegacyStrings) { |
252 TraceConfig config("", "foo-bar-baz"); | 225 TraceConfig config("", "foo-bar-baz"); |
253 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 226 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
254 EXPECT_FALSE(config.IsSamplingEnabled()); | |
255 EXPECT_FALSE(config.IsSystraceEnabled()); | 227 EXPECT_FALSE(config.IsSystraceEnabled()); |
256 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 228 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
257 EXPECT_STREQ("", config.ToCategoryFilterString().c_str()); | 229 EXPECT_STREQ("", config.ToCategoryFilterString().c_str()); |
258 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 230 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
259 | 231 |
260 config = TraceConfig("arbitrary-category", "foo-bar-baz, enable-systrace"); | 232 config = TraceConfig("arbitrary-category", "foo-bar-baz, enable-systrace"); |
261 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 233 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
262 EXPECT_FALSE(config.IsSamplingEnabled()); | |
263 EXPECT_TRUE(config.IsSystraceEnabled()); | 234 EXPECT_TRUE(config.IsSystraceEnabled()); |
264 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 235 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
265 EXPECT_STREQ("arbitrary-category", config.ToCategoryFilterString().c_str()); | 236 EXPECT_STREQ("arbitrary-category", config.ToCategoryFilterString().c_str()); |
266 EXPECT_STREQ("record-until-full,enable-systrace", | 237 EXPECT_STREQ("record-until-full,enable-systrace", |
267 config.ToTraceOptionsString().c_str()); | 238 config.ToTraceOptionsString().c_str()); |
268 | 239 |
269 const char* const configs[] = { | 240 const char* const configs[] = { |
270 "", | 241 "", |
271 "DELAY(", | 242 "DELAY(", |
272 "DELAY(;", | 243 "DELAY(;", |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 EXPECT_TRUE(tc.IsCategoryGroupEnabled("bar")); | 320 EXPECT_TRUE(tc.IsCategoryGroupEnabled("bar")); |
350 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-bar")); | 321 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-bar")); |
351 } | 322 } |
352 | 323 |
353 TEST(TraceConfigTest, TraceConfigFromDict) { | 324 TEST(TraceConfigTest, TraceConfigFromDict) { |
354 // Passing in empty dictionary will result in default trace config. | 325 // Passing in empty dictionary will result in default trace config. |
355 DictionaryValue dict; | 326 DictionaryValue dict; |
356 TraceConfig tc(dict); | 327 TraceConfig tc(dict); |
357 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 328 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
358 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 329 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
359 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
360 EXPECT_FALSE(tc.IsSystraceEnabled()); | 330 EXPECT_FALSE(tc.IsSystraceEnabled()); |
361 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 331 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
362 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 332 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
363 | 333 |
364 std::unique_ptr<Value> default_value( | 334 std::unique_ptr<Value> default_value( |
365 JSONReader::Read(kDefaultTraceConfigString)); | 335 JSONReader::Read(kDefaultTraceConfigString)); |
366 DCHECK(default_value); | 336 DCHECK(default_value); |
367 const DictionaryValue* default_dict = nullptr; | 337 const DictionaryValue* default_dict = nullptr; |
368 bool is_dict = default_value->GetAsDictionary(&default_dict); | 338 bool is_dict = default_value->GetAsDictionary(&default_dict); |
369 DCHECK(is_dict); | 339 DCHECK(is_dict); |
370 TraceConfig default_tc(*default_dict); | 340 TraceConfig default_tc(*default_dict); |
371 EXPECT_STREQ(kDefaultTraceConfigString, default_tc.ToString().c_str()); | 341 EXPECT_STREQ(kDefaultTraceConfigString, default_tc.ToString().c_str()); |
372 EXPECT_EQ(RECORD_UNTIL_FULL, default_tc.GetTraceRecordMode()); | 342 EXPECT_EQ(RECORD_UNTIL_FULL, default_tc.GetTraceRecordMode()); |
373 EXPECT_FALSE(default_tc.IsSamplingEnabled()); | |
374 EXPECT_FALSE(default_tc.IsSystraceEnabled()); | 343 EXPECT_FALSE(default_tc.IsSystraceEnabled()); |
375 EXPECT_FALSE(default_tc.IsArgumentFilterEnabled()); | 344 EXPECT_FALSE(default_tc.IsArgumentFilterEnabled()); |
376 EXPECT_STREQ("", default_tc.ToCategoryFilterString().c_str()); | 345 EXPECT_STREQ("", default_tc.ToCategoryFilterString().c_str()); |
377 | 346 |
378 std::unique_ptr<Value> custom_value( | 347 std::unique_ptr<Value> custom_value( |
379 JSONReader::Read(kCustomTraceConfigString)); | 348 JSONReader::Read(kCustomTraceConfigString)); |
380 DCHECK(custom_value); | 349 DCHECK(custom_value); |
381 const DictionaryValue* custom_dict = nullptr; | 350 const DictionaryValue* custom_dict = nullptr; |
382 is_dict = custom_value->GetAsDictionary(&custom_dict); | 351 is_dict = custom_value->GetAsDictionary(&custom_dict); |
383 DCHECK(is_dict); | 352 DCHECK(is_dict); |
384 TraceConfig custom_tc(*custom_dict); | 353 TraceConfig custom_tc(*custom_dict); |
385 EXPECT_STREQ(kCustomTraceConfigString, custom_tc.ToString().c_str()); | 354 EXPECT_STREQ(kCustomTraceConfigString, custom_tc.ToString().c_str()); |
386 EXPECT_EQ(RECORD_CONTINUOUSLY, custom_tc.GetTraceRecordMode()); | 355 EXPECT_EQ(RECORD_CONTINUOUSLY, custom_tc.GetTraceRecordMode()); |
387 EXPECT_TRUE(custom_tc.IsSamplingEnabled()); | |
388 EXPECT_TRUE(custom_tc.IsSystraceEnabled()); | 356 EXPECT_TRUE(custom_tc.IsSystraceEnabled()); |
389 EXPECT_TRUE(custom_tc.IsArgumentFilterEnabled()); | 357 EXPECT_TRUE(custom_tc.IsArgumentFilterEnabled()); |
390 EXPECT_STREQ("included,inc_pattern*," | 358 EXPECT_STREQ("included,inc_pattern*," |
391 "disabled-by-default-cc,disabled-by-default-memory-infra," | 359 "disabled-by-default-cc,disabled-by-default-memory-infra," |
392 "-excluded,-exc_pattern*," | 360 "-excluded,-exc_pattern*," |
393 "DELAY(test.Delay1;16),DELAY(test.Delay2;32)", | 361 "DELAY(test.Delay1;16),DELAY(test.Delay2;32)", |
394 custom_tc.ToCategoryFilterString().c_str()); | 362 custom_tc.ToCategoryFilterString().c_str()); |
395 } | 363 } |
396 | 364 |
397 TEST(TraceConfigTest, TraceConfigFromValidString) { | 365 TEST(TraceConfigTest, TraceConfigFromValidString) { |
398 // Using some non-empty config string. | 366 // Using some non-empty config string. |
399 const char config_string[] = | 367 const char config_string[] = |
400 "{" | 368 "{" |
401 "\"enable_argument_filter\":true," | 369 "\"enable_argument_filter\":true," |
402 "\"enable_sampling\":true," | |
403 "\"enable_systrace\":true," | 370 "\"enable_systrace\":true," |
404 "\"event_filters\":[" | 371 "\"event_filters\":[" |
405 "{" | 372 "{" |
406 "\"excluded_categories\":[\"unfiltered_cat\"]," | 373 "\"excluded_categories\":[\"unfiltered_cat\"]," |
407 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," | 374 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," |
408 "\"filter_predicate\":\"event_whitelist_predicate\"," | 375 "\"filter_predicate\":\"event_whitelist_predicate\"," |
409 "\"included_categories\":[\"*\"]" | 376 "\"included_categories\":[\"*\"]" |
410 "}" | 377 "}" |
411 "]," | 378 "]," |
412 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 379 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
413 "\"included_categories\":[\"included\"," | 380 "\"included_categories\":[\"included\"," |
414 "\"inc_pattern*\"," | 381 "\"inc_pattern*\"," |
415 "\"disabled-by-default-cc\"]," | 382 "\"disabled-by-default-cc\"]," |
416 "\"record_mode\":\"record-continuously\"," | 383 "\"record_mode\":\"record-continuously\"," |
417 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" | 384 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" |
418 "}"; | 385 "}"; |
419 TraceConfig tc(config_string); | 386 TraceConfig tc(config_string); |
420 | 387 |
421 EXPECT_STREQ(config_string, tc.ToString().c_str()); | 388 EXPECT_STREQ(config_string, tc.ToString().c_str()); |
422 EXPECT_EQ(RECORD_CONTINUOUSLY, tc.GetTraceRecordMode()); | 389 EXPECT_EQ(RECORD_CONTINUOUSLY, tc.GetTraceRecordMode()); |
423 EXPECT_TRUE(tc.IsSamplingEnabled()); | |
424 EXPECT_TRUE(tc.IsSystraceEnabled()); | 390 EXPECT_TRUE(tc.IsSystraceEnabled()); |
425 EXPECT_TRUE(tc.IsArgumentFilterEnabled()); | 391 EXPECT_TRUE(tc.IsArgumentFilterEnabled()); |
426 EXPECT_STREQ("included,inc_pattern*,disabled-by-default-cc,-excluded," | 392 EXPECT_STREQ("included,inc_pattern*,disabled-by-default-cc,-excluded," |
427 "-exc_pattern*,DELAY(test.Delay1;16),DELAY(test.Delay2;32)", | 393 "-exc_pattern*,DELAY(test.Delay1;16),DELAY(test.Delay2;32)", |
428 tc.ToCategoryFilterString().c_str()); | 394 tc.ToCategoryFilterString().c_str()); |
429 | 395 |
430 EXPECT_TRUE(tc.IsCategoryEnabled("included")); | 396 EXPECT_TRUE(tc.IsCategoryEnabled("included")); |
431 EXPECT_TRUE(tc.IsCategoryEnabled("inc_pattern_category")); | 397 EXPECT_TRUE(tc.IsCategoryEnabled("inc_pattern_category")); |
432 EXPECT_TRUE(tc.IsCategoryEnabled("disabled-by-default-cc")); | 398 EXPECT_TRUE(tc.IsCategoryEnabled("disabled-by-default-cc")); |
433 EXPECT_FALSE(tc.IsCategoryEnabled("excluded")); | 399 EXPECT_FALSE(tc.IsCategoryEnabled("excluded")); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 EXPECT_TRUE(tc2.IsCategoryEnabled("non-disabled-by-default-pattern")); | 438 EXPECT_TRUE(tc2.IsCategoryEnabled("non-disabled-by-default-pattern")); |
473 EXPECT_FALSE(tc2.IsCategoryEnabled("disabled-by-default-pattern")); | 439 EXPECT_FALSE(tc2.IsCategoryEnabled("disabled-by-default-pattern")); |
474 EXPECT_TRUE(tc2.IsCategoryGroupEnabled("non-disabled-by-default-pattern")); | 440 EXPECT_TRUE(tc2.IsCategoryGroupEnabled("non-disabled-by-default-pattern")); |
475 EXPECT_FALSE(tc2.IsCategoryGroupEnabled("disabled-by-default-pattern")); | 441 EXPECT_FALSE(tc2.IsCategoryGroupEnabled("disabled-by-default-pattern")); |
476 | 442 |
477 // Clear | 443 // Clear |
478 tc.Clear(); | 444 tc.Clear(); |
479 EXPECT_STREQ(tc.ToString().c_str(), | 445 EXPECT_STREQ(tc.ToString().c_str(), |
480 "{" | 446 "{" |
481 "\"enable_argument_filter\":false," | 447 "\"enable_argument_filter\":false," |
482 "\"enable_sampling\":false," | |
483 "\"enable_systrace\":false," | 448 "\"enable_systrace\":false," |
484 "\"record_mode\":\"record-until-full\"" | 449 "\"record_mode\":\"record-until-full\"" |
485 "}"); | 450 "}"); |
486 } | 451 } |
487 | 452 |
488 TEST(TraceConfigTest, TraceConfigFromInvalidString) { | 453 TEST(TraceConfigTest, TraceConfigFromInvalidString) { |
489 // The config string needs to be a dictionary correctly formatted as a JSON | 454 // The config string needs to be a dictionary correctly formatted as a JSON |
490 // string. Otherwise, it will fall back to the default initialization. | 455 // string. Otherwise, it will fall back to the default initialization. |
491 TraceConfig tc(""); | 456 TraceConfig tc(""); |
492 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 457 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
493 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 458 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
494 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
495 EXPECT_FALSE(tc.IsSystraceEnabled()); | 459 EXPECT_FALSE(tc.IsSystraceEnabled()); |
496 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 460 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
497 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 461 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
498 CheckDefaultTraceConfigBehavior(tc); | 462 CheckDefaultTraceConfigBehavior(tc); |
499 | 463 |
500 tc = TraceConfig("This is an invalid config string."); | 464 tc = TraceConfig("This is an invalid config string."); |
501 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 465 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
502 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 466 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
503 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
504 EXPECT_FALSE(tc.IsSystraceEnabled()); | 467 EXPECT_FALSE(tc.IsSystraceEnabled()); |
505 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 468 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
506 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 469 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
507 CheckDefaultTraceConfigBehavior(tc); | 470 CheckDefaultTraceConfigBehavior(tc); |
508 | 471 |
509 tc = TraceConfig("[\"This\", \"is\", \"not\", \"a\", \"dictionary\"]"); | 472 tc = TraceConfig("[\"This\", \"is\", \"not\", \"a\", \"dictionary\"]"); |
510 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 473 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
511 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 474 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
512 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
513 EXPECT_FALSE(tc.IsSystraceEnabled()); | 475 EXPECT_FALSE(tc.IsSystraceEnabled()); |
514 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 476 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
515 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 477 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
516 CheckDefaultTraceConfigBehavior(tc); | 478 CheckDefaultTraceConfigBehavior(tc); |
517 | 479 |
518 tc = TraceConfig("{\"record_mode\": invalid-value-needs-double-quote}"); | 480 tc = TraceConfig("{\"record_mode\": invalid-value-needs-double-quote}"); |
519 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 481 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
520 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 482 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
521 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
522 EXPECT_FALSE(tc.IsSystraceEnabled()); | 483 EXPECT_FALSE(tc.IsSystraceEnabled()); |
523 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 484 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
524 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 485 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
525 CheckDefaultTraceConfigBehavior(tc); | 486 CheckDefaultTraceConfigBehavior(tc); |
526 | 487 |
527 // If the config string a dictionary formatted as a JSON string, it will | 488 // If the config string a dictionary formatted as a JSON string, it will |
528 // initialize TraceConfig with best effort. | 489 // initialize TraceConfig with best effort. |
529 tc = TraceConfig("{}"); | 490 tc = TraceConfig("{}"); |
530 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 491 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
531 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
532 EXPECT_FALSE(tc.IsSystraceEnabled()); | 492 EXPECT_FALSE(tc.IsSystraceEnabled()); |
533 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 493 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
534 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 494 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
535 CheckDefaultTraceConfigBehavior(tc); | 495 CheckDefaultTraceConfigBehavior(tc); |
536 | 496 |
537 tc = TraceConfig("{\"arbitrary-key\":\"arbitrary-value\"}"); | 497 tc = TraceConfig("{\"arbitrary-key\":\"arbitrary-value\"}"); |
538 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 498 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
539 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
540 EXPECT_FALSE(tc.IsSystraceEnabled()); | 499 EXPECT_FALSE(tc.IsSystraceEnabled()); |
541 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 500 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
542 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 501 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
543 CheckDefaultTraceConfigBehavior(tc); | 502 CheckDefaultTraceConfigBehavior(tc); |
544 | 503 |
545 const char invalid_config_string[] = | 504 const char invalid_config_string[] = |
546 "{" | 505 "{" |
547 "\"enable_sampling\":\"true\"," | |
548 "\"enable_systrace\":1," | 506 "\"enable_systrace\":1," |
549 "\"excluded_categories\":[\"excluded\"]," | 507 "\"excluded_categories\":[\"excluded\"]," |
550 "\"included_categories\":\"not a list\"," | 508 "\"included_categories\":\"not a list\"," |
551 "\"record_mode\":\"arbitrary-mode\"," | 509 "\"record_mode\":\"arbitrary-mode\"," |
552 "\"synthetic_delays\":[\"test.Delay1;16\"," | 510 "\"synthetic_delays\":[\"test.Delay1;16\"," |
553 "\"invalid-delay\"," | 511 "\"invalid-delay\"," |
554 "\"test.Delay2;32\"]" | 512 "\"test.Delay2;32\"]" |
555 "}"; | 513 "}"; |
556 tc = TraceConfig(invalid_config_string); | 514 tc = TraceConfig(invalid_config_string); |
557 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 515 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
558 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
559 EXPECT_FALSE(tc.IsSystraceEnabled()); | 516 EXPECT_FALSE(tc.IsSystraceEnabled()); |
560 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 517 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
561 EXPECT_STREQ("-excluded,DELAY(test.Delay1;16),DELAY(test.Delay2;32)", | 518 EXPECT_STREQ("-excluded,DELAY(test.Delay1;16),DELAY(test.Delay2;32)", |
562 tc.ToCategoryFilterString().c_str()); | 519 tc.ToCategoryFilterString().c_str()); |
563 | 520 |
564 const char invalid_config_string_2[] = | 521 const char invalid_config_string_2[] = |
565 "{" | 522 "{" |
566 "\"included_categories\":[\"category\",\"disabled-by-default-pattern\"]," | 523 "\"included_categories\":[\"category\",\"disabled-by-default-pattern\"]," |
567 "\"excluded_categories\":[\"category\",\"disabled-by-default-pattern\"]" | 524 "\"excluded_categories\":[\"category\",\"disabled-by-default-pattern\"]" |
568 "}"; | 525 "}"; |
569 tc = TraceConfig(invalid_config_string_2); | 526 tc = TraceConfig(invalid_config_string_2); |
570 EXPECT_TRUE(tc.IsCategoryEnabled("category")); | 527 EXPECT_TRUE(tc.IsCategoryEnabled("category")); |
571 EXPECT_TRUE(tc.IsCategoryEnabled("disabled-by-default-pattern")); | 528 EXPECT_TRUE(tc.IsCategoryEnabled("disabled-by-default-pattern")); |
572 EXPECT_TRUE(tc.IsCategoryGroupEnabled("category")); | 529 EXPECT_TRUE(tc.IsCategoryGroupEnabled("category")); |
573 EXPECT_TRUE(tc.IsCategoryGroupEnabled("disabled-by-default-pattern")); | 530 EXPECT_TRUE(tc.IsCategoryGroupEnabled("disabled-by-default-pattern")); |
574 } | 531 } |
575 | 532 |
576 TEST(TraceConfigTest, MergingTraceConfigs) { | 533 TEST(TraceConfigTest, MergingTraceConfigs) { |
577 // Merge | 534 // Merge |
578 TraceConfig tc; | 535 TraceConfig tc; |
579 TraceConfig tc2("included,-excluded,inc_pattern*,-exc_pattern*", ""); | 536 TraceConfig tc2("included,-excluded,inc_pattern*,-exc_pattern*", ""); |
580 tc.Merge(tc2); | 537 tc.Merge(tc2); |
581 EXPECT_STREQ("{" | 538 EXPECT_STREQ("{" |
582 "\"enable_argument_filter\":false," | 539 "\"enable_argument_filter\":false," |
583 "\"enable_sampling\":false," | |
584 "\"enable_systrace\":false," | 540 "\"enable_systrace\":false," |
585 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 541 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
586 "\"record_mode\":\"record-until-full\"" | 542 "\"record_mode\":\"record-until-full\"" |
587 "}", | 543 "}", |
588 tc.ToString().c_str()); | 544 tc.ToString().c_str()); |
589 | 545 |
590 tc = TraceConfig("DELAY(test.Delay1;16)", ""); | 546 tc = TraceConfig("DELAY(test.Delay1;16)", ""); |
591 tc2 = TraceConfig("DELAY(test.Delay2;32)", ""); | 547 tc2 = TraceConfig("DELAY(test.Delay2;32)", ""); |
592 tc.Merge(tc2); | 548 tc.Merge(tc2); |
593 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size()); | 549 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size()); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 " bad_category ")); | 596 " bad_category ")); |
641 EXPECT_TRUE(TraceConfig::IsEmptyOrContainsLeadingOrTrailingWhitespace( | 597 EXPECT_TRUE(TraceConfig::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
642 "")); | 598 "")); |
643 EXPECT_FALSE(TraceConfig::IsEmptyOrContainsLeadingOrTrailingWhitespace( | 599 EXPECT_FALSE(TraceConfig::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
644 "good_category")); | 600 "good_category")); |
645 } | 601 } |
646 | 602 |
647 TEST(TraceConfigTest, SetTraceOptionValues) { | 603 TEST(TraceConfigTest, SetTraceOptionValues) { |
648 TraceConfig tc; | 604 TraceConfig tc; |
649 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 605 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
650 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
651 EXPECT_FALSE(tc.IsSystraceEnabled()); | 606 EXPECT_FALSE(tc.IsSystraceEnabled()); |
652 | 607 |
653 tc.SetTraceRecordMode(RECORD_AS_MUCH_AS_POSSIBLE); | 608 tc.SetTraceRecordMode(RECORD_AS_MUCH_AS_POSSIBLE); |
654 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, tc.GetTraceRecordMode()); | 609 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, tc.GetTraceRecordMode()); |
655 | 610 |
656 tc.EnableSampling(); | |
657 EXPECT_TRUE(tc.IsSamplingEnabled()); | |
658 | |
659 tc.EnableSystrace(); | 611 tc.EnableSystrace(); |
660 EXPECT_TRUE(tc.IsSystraceEnabled()); | 612 EXPECT_TRUE(tc.IsSystraceEnabled()); |
661 } | 613 } |
662 | 614 |
663 TEST(TraceConfigTest, TraceConfigFromMemoryConfigString) { | 615 TEST(TraceConfigTest, TraceConfigFromMemoryConfigString) { |
664 std::string tc_str1 = | 616 std::string tc_str1 = |
665 TraceConfigMemoryTestUtil::GetTraceConfig_PeriodicTriggers(200, 2000); | 617 TraceConfigMemoryTestUtil::GetTraceConfig_PeriodicTriggers(200, 2000); |
666 TraceConfig tc1(tc_str1); | 618 TraceConfig tc1(tc_str1); |
667 EXPECT_EQ(tc_str1, tc1.ToString()); | 619 EXPECT_EQ(tc_str1, tc1.ToString()); |
668 EXPECT_TRUE(tc1.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); | 620 EXPECT_TRUE(tc1.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
709 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); | 661 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); |
710 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); | 662 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); |
711 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler | 663 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler |
712 ::kDefaultBreakdownThresholdBytes, | 664 ::kDefaultBreakdownThresholdBytes, |
713 tc.memory_dump_config_.heap_profiler_options | 665 tc.memory_dump_config_.heap_profiler_options |
714 .breakdown_threshold_bytes); | 666 .breakdown_threshold_bytes); |
715 } | 667 } |
716 | 668 |
717 } // namespace trace_event | 669 } // namespace trace_event |
718 } // namespace base | 670 } // namespace base |
OLD | NEW |