OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/trace_event/trace_event.h" | 5 #include "base/trace_event/trace_event.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 3262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3273 // This is scoped so we can test the end event being filtered. | 3273 // This is scoped so we can test the end event being filtered. |
3274 { TRACE_EVENT0("filtered_cat", "another cat whoa"); } | 3274 { TRACE_EVENT0("filtered_cat", "another cat whoa"); } |
3275 | 3275 |
3276 EndTraceAndFlush(); | 3276 EndTraceAndFlush(); |
3277 | 3277 |
3278 EXPECT_EQ(3u, TestEventFilter::filter_trace_event_hit_count()); | 3278 EXPECT_EQ(3u, TestEventFilter::filter_trace_event_hit_count()); |
3279 EXPECT_EQ(1u, TestEventFilter::end_event_hit_count()); | 3279 EXPECT_EQ(1u, TestEventFilter::end_event_hit_count()); |
3280 } | 3280 } |
3281 | 3281 |
3282 TEST_F(TraceEventTestFixture, EventWhitelistFiltering) { | 3282 TEST_F(TraceEventTestFixture, EventWhitelistFiltering) { |
3283 const char config_json[] = | 3283 std::string config_json = StringPrintf( |
3284 "{" | 3284 "{" |
3285 " \"included_categories\": [" | 3285 " \"included_categories\": [" |
3286 " \"filtered_cat\"," | 3286 " \"filtered_cat\"," |
3287 " \"unfiltered_cat\"]," | 3287 " \"unfiltered_cat\"]," |
3288 " \"event_filters\": [" | 3288 " \"event_filters\": [" |
3289 " {" | 3289 " {" |
3290 " \"filter_predicate\": \"event_whitelist_predicate\", " | 3290 " \"filter_predicate\": \"%s\", " |
3291 " \"included_categories\": [\"*\"], " | 3291 " \"included_categories\": [\"*\"], " |
3292 " \"excluded_categories\": [\"unfiltered_cat\"], " | 3292 " \"excluded_categories\": [\"unfiltered_cat\"], " |
3293 " \"filter_args\": {" | 3293 " \"filter_args\": {" |
3294 " \"event_name_whitelist\": [\"a snake\", \"a dog\"]" | 3294 " \"event_name_whitelist\": [\"a snake\", \"a dog\"]" |
3295 " }" | 3295 " }" |
3296 " }" | 3296 " }" |
3297 " " | 3297 " " |
3298 " ]" | 3298 " ]" |
3299 "}"; | 3299 "}", |
| 3300 TraceLog::TraceEventFilter::kEventWhitelistPredicate); |
3300 | 3301 |
3301 TraceConfig trace_config(config_json); | 3302 TraceConfig trace_config(config_json); |
3302 TraceLog::GetInstance()->SetEnabled(trace_config, TraceLog::RECORDING_MODE); | 3303 TraceLog::GetInstance()->SetEnabled(trace_config, TraceLog::RECORDING_MODE); |
3303 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); | 3304 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
3304 | 3305 |
3305 TRACE_EVENT0("filtered_cat", "a snake"); | 3306 TRACE_EVENT0("filtered_cat", "a snake"); |
3306 TRACE_EVENT0("filtered_cat", "a mushroom"); | 3307 TRACE_EVENT0("filtered_cat", "a mushroom"); |
3307 TRACE_EVENT0("unfiltered_cat", "a cat"); | 3308 TRACE_EVENT0("unfiltered_cat", "a cat"); |
3308 | 3309 |
3309 EndTraceAndFlush(); | 3310 EndTraceAndFlush(); |
3310 | 3311 |
3311 EXPECT_TRUE(FindMatchingValue("name", "a snake")); | 3312 EXPECT_TRUE(FindMatchingValue("name", "a snake")); |
3312 EXPECT_FALSE(FindMatchingValue("name", "a mushroom")); | 3313 EXPECT_FALSE(FindMatchingValue("name", "a mushroom")); |
3313 EXPECT_TRUE(FindMatchingValue("name", "a cat")); | 3314 EXPECT_TRUE(FindMatchingValue("name", "a cat")); |
3314 } | 3315 } |
3315 | 3316 |
| 3317 TEST_F(TraceEventTestFixture, HeapProfilerFiltering) { |
| 3318 std::string config_json = StringPrintf( |
| 3319 "{" |
| 3320 " \"included_categories\": [" |
| 3321 " \"filtered_cat\"," |
| 3322 " \"unfiltered_cat\"]," |
| 3323 " \"excluded_categories\": [\"excluded_cat\"]," |
| 3324 " \"event_filters\": [" |
| 3325 " {" |
| 3326 " \"filter_predicate\": \"%s\", " |
| 3327 " \"included_categories\": [\"*\"]" |
| 3328 " }" |
| 3329 " ]" |
| 3330 "}", |
| 3331 TraceLog::TraceEventFilter::kHeapProfilerPredicate); |
| 3332 |
| 3333 TraceConfig trace_config(config_json); |
| 3334 TraceLog::GetInstance()->SetEnabled(trace_config, TraceLog::RECORDING_MODE); |
| 3335 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
| 3336 |
| 3337 TRACE_EVENT0("filtered_cat", "a snake"); |
| 3338 TRACE_EVENT0("excluded_cat", "a mushroom"); |
| 3339 TRACE_EVENT0("unfiltered_cat", "a cat"); |
| 3340 |
| 3341 EndTraceAndFlush(); |
| 3342 |
| 3343 // The predicate should not change behavior of the trace events. |
| 3344 EXPECT_TRUE(FindMatchingValue("name", "a snake")); |
| 3345 EXPECT_FALSE(FindMatchingValue("name", "a mushroom")); |
| 3346 EXPECT_TRUE(FindMatchingValue("name", "a cat")); |
| 3347 } |
| 3348 |
3316 TEST_F(TraceEventTestFixture, ClockSyncEventsAreAlwaysAddedToTrace) { | 3349 TEST_F(TraceEventTestFixture, ClockSyncEventsAreAlwaysAddedToTrace) { |
3317 BeginSpecificTrace("-*"); | 3350 BeginSpecificTrace("-*"); |
3318 TRACE_EVENT_CLOCK_SYNC_RECEIVER(1); | 3351 TRACE_EVENT_CLOCK_SYNC_RECEIVER(1); |
3319 EndTraceAndFlush(); | 3352 EndTraceAndFlush(); |
3320 EXPECT_TRUE(FindNamePhase("clock_sync", "c")); | 3353 EXPECT_TRUE(FindNamePhase("clock_sync", "c")); |
3321 } | 3354 } |
3322 | 3355 |
3323 } // namespace trace_event | 3356 } // namespace trace_event |
3324 } // namespace base | 3357 } // namespace base |
OLD | NEW |