Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3181)

Unified Diff: base/trace_event/trace_event_unittest.cc

Issue 2323483005: [tracing] Add filtering mode in TraceLog (Closed)
Patch Set: SetEnabled takes a bitmap. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/trace_event/trace_event_unittest.cc
diff --git a/base/trace_event/trace_event_unittest.cc b/base/trace_event/trace_event_unittest.cc
index cec48b7885a899489c7df557f86757dca8625f5e..7e07bf6fa9853f88147e976661433d741993968f 100644
--- a/base/trace_event/trace_event_unittest.cc
+++ b/base/trace_event/trace_event_unittest.cc
@@ -136,7 +136,8 @@ class TraceEventTestFixture : public testing::Test {
}
void EndTraceAndFlushAsync(WaitableEvent* flush_complete_event) {
- TraceLog::GetInstance()->SetDisabled();
+ TraceLog::GetInstance()->SetDisabled(TraceLog::RECORDING_MODE |
+ TraceLog::FILTERING_MODE);
TraceLog::GetInstance()->Flush(
base::Bind(&TraceEventTestFixture::OnTraceDataCollected,
base::Unretained(static_cast<TraceEventTestFixture*>(this)),
@@ -3206,30 +3207,118 @@ class TestEventFilter : public TraceLog::TraceEventFilter {
public:
bool FilterTraceEvent(const TraceEvent& trace_event) const override {
filter_trace_event_hit_count_++;
- return true;
+ return filter_return_value_;
}
void EndEvent(const char* category_group, const char* name) override {
end_event_hit_count_++;
}
+ static void set_filter_return_value(bool value) {
+ filter_return_value_ = value;
+ }
+
static size_t filter_trace_event_hit_count() {
return filter_trace_event_hit_count_;
}
static size_t end_event_hit_count() { return end_event_hit_count_; }
+ static void clear_counts() {
+ filter_trace_event_hit_count_ = 0;
+ end_event_hit_count_ = 0;
+ }
+
private:
static size_t filter_trace_event_hit_count_;
static size_t end_event_hit_count_;
+ static bool filter_return_value_;
};
size_t TestEventFilter::filter_trace_event_hit_count_ = 0;
size_t TestEventFilter::end_event_hit_count_ = 0;
+bool TestEventFilter::filter_return_value_ = false;
std::unique_ptr<TraceLog::TraceEventFilter> ConstructTestEventFilter() {
return WrapUnique(new TestEventFilter);
}
+TEST_F(TraceEventTestFixture, TraceFilteringMode) {
+ const char config_json[] =
+ "{"
+ " \"event_filters\": ["
+ " {"
+ " \"filter_predicate\": \"testing_predicate\", "
+ " \"included_categories\": [\"*\"]"
+ " }"
+ " ]"
+ "}";
+
+ // Run RECORDING_MODE within FILTERING_MODE.
+ TestEventFilter::set_filter_return_value(true);
+ TraceLog::SetTraceEventFilterConstructorForTesting(ConstructTestEventFilter);
+ TraceLog::GetInstance()->SetEnabled(TraceConfig(config_json),
+ TraceLog::FILTERING_MODE);
+ EXPECT_EQ(TraceLog::FILTERING_MODE, TraceLog::GetInstance()->enabled_modes());
Primiano Tucci (use gerrit) 2016/10/12 17:50:17 can you add some comments every time you do setena
ssid 2016/10/12 19:04:43 Done.
+ {
Primiano Tucci (use gerrit) 2016/10/12 17:50:17 why there are scope enclosers here? is it just for
ssid 2016/10/12 19:04:43 I am measuring the end_event_hit_count. To check t
+ void* ptr = this;
+ TRACE_EVENT0("c0", "name0");
+ TRACE_EVENT_ASYNC_BEGIN0("c1", "name1", ptr);
+ TRACE_EVENT_INSTANT0("c0", "name0", TRACE_EVENT_SCOPE_THREAD);
+ TRACE_EVENT_ASYNC_END0("c1", "name1", ptr);
+ }
+ TraceLog::GetInstance()->SetEnabled(TraceConfig("", ""),
+ TraceLog::RECORDING_MODE);
+ EXPECT_EQ(TraceLog::RECORDING_MODE | TraceLog::FILTERING_MODE,
+ TraceLog::GetInstance()->enabled_modes());
+ { TRACE_EVENT0("c2", "name2"); }
Primiano Tucci (use gerrit) 2016/10/12 17:50:17 here either use newlines (e.g. {\nTRACE...\n}) or
ssid 2016/10/12 19:04:43 Um, this is a fight against git cl format :(
+ TraceLog::GetInstance()->SetDisabled();
+ EXPECT_EQ(TraceLog::FILTERING_MODE, TraceLog::GetInstance()->enabled_modes());
+ { TRACE_EVENT0("c0", "name0"); }
+ TraceLog::GetInstance()->SetDisabled(TraceLog::FILTERING_MODE);
+ EXPECT_EQ(0, TraceLog::GetInstance()->enabled_modes());
+
+ EndTraceAndFlush();
+ EXPECT_FALSE(FindMatchingValue("cat", "c0"));
+ EXPECT_FALSE(FindMatchingValue("cat", "c1"));
+ EXPECT_FALSE(FindMatchingValue("name", "name0"));
+ EXPECT_FALSE(FindMatchingValue("name", "name1"));
+ EXPECT_TRUE(FindMatchingValue("cat", "c2"));
+ EXPECT_TRUE(FindMatchingValue("name", "name2"));
+ EXPECT_EQ(6u, TestEventFilter::filter_trace_event_hit_count());
+ EXPECT_EQ(3u, TestEventFilter::end_event_hit_count());
+ Clear();
+ TestEventFilter::clear_counts();
+
+ // Run FILTERING_MODE within RECORDING_MODE.
+ TestEventFilter::set_filter_return_value(false);
+ TraceLog::GetInstance()->SetEnabled(TraceConfig("", ""),
+ TraceLog::RECORDING_MODE);
+ EXPECT_EQ(TraceLog::RECORDING_MODE, TraceLog::GetInstance()->enabled_modes());
+ { TRACE_EVENT0("c0", "name0"); }
+ TraceLog::GetInstance()->SetEnabled(TraceConfig(config_json),
+ TraceLog::FILTERING_MODE);
+ EXPECT_EQ(TraceLog::RECORDING_MODE | TraceLog::FILTERING_MODE,
+ TraceLog::GetInstance()->enabled_modes());
+ { TRACE_EVENT0("c1", "name1"); }
+ TraceLog::GetInstance()->SetDisabled(TraceLog::FILTERING_MODE);
+ EXPECT_EQ(TraceLog::RECORDING_MODE, TraceLog::GetInstance()->enabled_modes());
+ { TRACE_EVENT0("c2", "name2"); }
+ TraceLog::GetInstance()->SetDisabled();
+ EXPECT_EQ(0, TraceLog::GetInstance()->enabled_modes());
+
+ EndTraceAndFlush();
+ EXPECT_TRUE(FindMatchingValue("cat", "c0"));
+ EXPECT_TRUE(FindMatchingValue("cat", "c2"));
+ EXPECT_TRUE(FindMatchingValue("name", "name0"));
+ EXPECT_TRUE(FindMatchingValue("name", "name2"));
+ EXPECT_FALSE(FindMatchingValue("cat", "c1"));
+ EXPECT_FALSE(FindMatchingValue("name", "name1"));
+ EXPECT_EQ(1u, TestEventFilter::filter_trace_event_hit_count());
+ EXPECT_EQ(1u, TestEventFilter::end_event_hit_count());
+ Clear();
+ TestEventFilter::clear_counts();
+}
+
TEST_F(TraceEventTestFixture, EventFiltering) {
const char config_json[] =
"{"
@@ -3245,9 +3334,11 @@ TEST_F(TraceEventTestFixture, EventFiltering) {
" ]"
"}";
+ TestEventFilter::set_filter_return_value(true);
TraceLog::SetTraceEventFilterConstructorForTesting(ConstructTestEventFilter);
TraceConfig trace_config(config_json);
- TraceLog::GetInstance()->SetEnabled(trace_config, TraceLog::RECORDING_MODE);
+ TraceLog::GetInstance()->SetEnabled(
+ trace_config, TraceLog::RECORDING_MODE | TraceLog::FILTERING_MODE);
ASSERT_TRUE(TraceLog::GetInstance()->IsEnabled());
TRACE_EVENT0("filtered_cat", "a snake");
@@ -3261,6 +3352,7 @@ TEST_F(TraceEventTestFixture, EventFiltering) {
EXPECT_EQ(3u, TestEventFilter::filter_trace_event_hit_count());
EXPECT_EQ(1u, TestEventFilter::end_event_hit_count());
+ TestEventFilter::clear_counts();
}
TEST_F(TraceEventTestFixture, EventWhitelistFiltering) {
@@ -3284,7 +3376,8 @@ TEST_F(TraceEventTestFixture, EventWhitelistFiltering) {
TraceLog::TraceEventFilter::kEventWhitelistPredicate);
TraceConfig trace_config(config_json);
- TraceLog::GetInstance()->SetEnabled(trace_config, TraceLog::RECORDING_MODE);
+ TraceLog::GetInstance()->SetEnabled(
+ trace_config, TraceLog::RECORDING_MODE | TraceLog::FILTERING_MODE);
EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
TRACE_EVENT0("filtered_cat", "a snake");
@@ -3315,7 +3408,8 @@ TEST_F(TraceEventTestFixture, HeapProfilerFiltering) {
TraceLog::TraceEventFilter::kHeapProfilerPredicate);
TraceConfig trace_config(config_json);
- TraceLog::GetInstance()->SetEnabled(trace_config, TraceLog::RECORDING_MODE);
+ TraceLog::GetInstance()->SetEnabled(
+ trace_config, TraceLog::RECORDING_MODE | TraceLog::FILTERING_MODE);
EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
TRACE_EVENT0("filtered_cat", "a snake");

Powered by Google App Engine
This is Rietveld 408576698