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

Unified Diff: base/debug/trace_event_unittest.cc

Issue 18338004: Don't use StaticMemorySingletonTraits for TraceLog. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: no need for ManualTestSetUp anymore per scheib Created 7 years, 5 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
« no previous file with comments | « base/debug/trace_event_impl.cc ('k') | base/debug/trace_event_win_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/debug/trace_event_unittest.cc
===================================================================
--- base/debug/trace_event_unittest.cc (revision 210376)
+++ base/debug/trace_event_unittest.cc (working copy)
@@ -49,9 +49,6 @@
class TraceEventTestFixture : public testing::Test {
public:
- // This fixture does not use SetUp() because the fixture must be manually set
- // up multiple times when testing AtExit. Use ManualTestSetUp for this.
- void ManualTestSetUp();
void OnTraceDataCollected(
const scoped_refptr<base::RefCountedString>& events_str);
void OnTraceNotification(int notification) {
@@ -97,6 +94,15 @@
const char* name = PlatformThread::GetName();
old_thread_name_ = name ? strdup(name) : NULL;
notifications_received_ = 0;
+
+ TraceLog::DeleteForTesting();
+ TraceLog* tracelog = TraceLog::GetInstance();
+ ASSERT_TRUE(tracelog);
+ ASSERT_FALSE(tracelog->IsEnabled());
+ tracelog->SetNotificationCallback(
+ base::Bind(&TraceEventTestFixture::OnTraceNotification,
+ base::Unretained(this)));
+ trace_buffer_.SetOutputCallback(json_output_.GetCallback());
}
virtual void TearDown() OVERRIDE {
if (TraceLog::GetInstance())
@@ -104,6 +110,8 @@
PlatformThread::SetName(old_thread_name_ ? old_thread_name_ : "");
free(old_thread_name_);
old_thread_name_ = NULL;
+ // We want our singleton torn down after each test.
+ TraceLog::DeleteForTesting();
}
char* old_thread_name_;
@@ -119,18 +127,6 @@
Lock lock_;
};
-void TraceEventTestFixture::ManualTestSetUp() {
- TraceLog::DeleteForTesting();
- TraceLog::Resurrect();
- TraceLog* tracelog = TraceLog::GetInstance();
- ASSERT_TRUE(tracelog);
- ASSERT_FALSE(tracelog->IsEnabled());
- tracelog->SetNotificationCallback(
- base::Bind(&TraceEventTestFixture::OnTraceNotification,
- base::Unretained(this)));
- trace_buffer_.SetOutputCallback(json_output_.GetCallback());
-}
-
void TraceEventTestFixture::OnTraceDataCollected(
const scoped_refptr<base::RefCountedString>& events_str) {
AutoLock lock(lock_);
@@ -807,7 +803,6 @@
// Simple Test for emitting data and validating it was received.
TEST_F(TraceEventTestFixture, DataCaptured) {
- ManualTestSetUp();
TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
TraceLog::RECORD_UNTIL_FULL);
@@ -826,8 +821,6 @@
};
TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) {
- ManualTestSetUp();
-
MockEnabledStateChangedObserver observer;
TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
@@ -844,8 +837,6 @@
}
TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
- ManualTestSetUp();
-
TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
TraceLog::RECORD_UNTIL_FULL);
@@ -868,8 +859,6 @@
}
TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) {
- ManualTestSetUp();
-
CategoryFilter cf_inc_all("*");
TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
@@ -890,8 +879,6 @@
}
TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) {
- ManualTestSetUp();
-
TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
TraceLog::RECORD_UNTIL_FULL);
@@ -925,8 +912,6 @@
};
TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) {
- ManualTestSetUp();
-
AfterStateChangeEnabledStateObserver observer;
TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
@@ -956,7 +941,6 @@
};
TEST_F(TraceEventTestFixture, SelfRemovingObserver) {
- ManualTestSetUp();
ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
SelfRemovingEnabledStateObserver observer;
@@ -977,7 +961,6 @@
}
TEST_F(TraceEventTestFixture, NewTraceRecording) {
- ManualTestSetUp();
ASSERT_FALSE(IsNewTrace());
TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
TraceLog::RECORD_UNTIL_FULL);
@@ -1003,8 +986,6 @@
// Test that categories work.
TEST_F(TraceEventTestFixture, Categories) {
- ManualTestSetUp();
-
// Test that categories that are used can be retrieved whether trace was
// enabled or disabled when the trace event was encountered.
TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD);
@@ -1149,8 +1130,6 @@
// Test EVENT_WATCH_NOTIFICATION
TEST_F(TraceEventTestFixture, EventWatchNotification) {
- ManualTestSetUp();
-
// Basic one occurrence.
BeginTrace();
TraceLog::GetInstance()->SetWatchEvent("cat", "event");
@@ -1208,7 +1187,6 @@
// Test ASYNC_BEGIN/END events
TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) {
- ManualTestSetUp();
BeginTrace();
unsigned long long id = 0xfeedbeeffeedbeefull;
@@ -1238,8 +1216,6 @@
// Test ASYNC_BEGIN/END events
TEST_F(TraceEventTestFixture, AsyncBeginEndPointerMangling) {
- ManualTestSetUp();
-
void* ptr = this;
TraceLog::GetInstance()->SetProcessID(100);
@@ -1277,7 +1253,6 @@
// Test that static strings are not copied.
TEST_F(TraceEventTestFixture, StaticStringVsString) {
- ManualTestSetUp();
TraceLog* tracer = TraceLog::GetInstance();
// Make sure old events are flushed:
EndTraceAndFlush();
@@ -1330,7 +1305,6 @@
// Test that data sent from other threads is gathered
TEST_F(TraceEventTestFixture, DataCapturedOnThread) {
- ManualTestSetUp();
BeginTrace();
Thread thread("1");
@@ -1348,7 +1322,6 @@
// Test that data sent from multiple threads is gathered
TEST_F(TraceEventTestFixture, DataCapturedManyThreads) {
- ManualTestSetUp();
BeginTrace();
const int num_threads = 4;
@@ -1382,8 +1355,6 @@
// Test that thread and process names show up in the trace
TEST_F(TraceEventTestFixture, ThreadNames) {
- ManualTestSetUp();
-
// Create threads before we enable tracing to make sure
// that tracelog still captures them.
const int num_threads = 4;
@@ -1451,8 +1422,6 @@
}
TEST_F(TraceEventTestFixture, ThreadNameChanges) {
- ManualTestSetUp();
-
BeginTrace();
PlatformThread::SetName("");
@@ -1492,8 +1461,6 @@
// Test that the disabled trace categories are included/excluded from the
// trace output correctly.
TEST_F(TraceEventTestFixture, DisabledCategories) {
- ManualTestSetUp();
-
BeginTrace();
TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("cc"), "first",
TRACE_EVENT_SCOPE_THREAD);
@@ -1521,77 +1488,10 @@
}
}
-// Test trace calls made after tracing singleton shut down.
-//
-// The singleton is destroyed by our base::AtExitManager, but there can be
-// code still executing as the C++ static objects are destroyed. This test
-// forces the singleton to destroy early, and intentinally makes trace calls
-// afterwards.
-TEST_F(TraceEventTestFixture, AtExit) {
- // Repeat this test a few times. Besides just showing robustness, it also
- // allows us to test that events at shutdown do not appear with valid events
- // recorded after the system is started again.
- for (int i = 0; i < 4; i++) {
- // Scope to contain the then destroy the TraceLog singleton.
- {
- base::ShadowingAtExitManager exit_manager_will_destroy_singletons;
-
- // Setup TraceLog singleton inside this test's exit manager scope
- // so that it will be destroyed when this scope closes.
- ManualTestSetUp();
-
- TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled",
- TRACE_EVENT_SCOPE_THREAD);
-
- BeginTrace();
-
- TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled",
- TRACE_EVENT_SCOPE_THREAD);
- // Trace calls that will cache pointers to categories; they're valid here
- TraceCallsWithCachedCategoryPointersPointers(
- "is recorded 2; system has been enabled");
-
- EndTraceAndFlush();
- } // scope to destroy singleton
- ASSERT_FALSE(TraceLog::GetInstance());
-
- // Now that singleton is destroyed, check what trace events were recorded
- const DictionaryValue* item = NULL;
- ListValue& trace_parsed = trace_parsed_;
- EXPECT_FIND_("is recorded 1");
- EXPECT_FIND_("is recorded 2");
- EXPECT_NOT_FIND_("not recorded");
-
- // Make additional trace event calls on the shutdown system. They should
- // all pass cleanly, but the data not be recorded. We'll verify that next
- // time around the loop (the only way to flush the trace buffers).
- TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL);
- TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL);
- TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL);
- TRACE_EVENT0("all", "not recorded; system shutdown");
- TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown",
- TRACE_EVENT_SCOPE_THREAD);
- TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown");
- TRACE_EVENT_END0("all", "not recorded; system shutdown");
-
- TRACE_EVENT0("new category 0!", "not recorded; system shutdown");
- TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown",
- TRACE_EVENT_SCOPE_THREAD);
- TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown");
- TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown");
-
- // Cached categories should be safe to check, and still disable traces
- TraceCallsWithCachedCategoryPointersPointers(
- "not recorded; system shutdown");
- }
-}
-
TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) {
// Test that the TRACE_EVENT macros do not deep-copy their string. If they
// do so it may indicate a performance regression, but more-over it would
// make the DEEP_COPY overloads redundant.
- ManualTestSetUp();
-
std::string name_string("event name");
BeginTrace();
@@ -1609,8 +1509,6 @@
}
TEST_F(TraceEventTestFixture, DeepCopy) {
- ManualTestSetUp();
-
static const char kOriginalName1[] = "name1";
static const char kOriginalName2[] = "name2";
static const char kOriginalName3[] = "name3";
@@ -1662,8 +1560,6 @@
// Test that TraceResultBuffer outputs the correct result whether it is added
// in chunks or added all at once.
TEST_F(TraceEventTestFixture, TraceResultBuffer) {
- ManualTestSetUp();
-
Clear();
trace_buffer_.Start();
@@ -1684,7 +1580,6 @@
// Test that trace_event parameters are not evaluated if the tracing
// system is disabled.
TEST_F(TraceEventTestFixture, TracingIsLazy) {
- ManualTestSetUp();
BeginTrace();
int a = 0;
@@ -1700,8 +1595,6 @@
}
TEST_F(TraceEventTestFixture, TraceEnableDisable) {
- ManualTestSetUp();
-
TraceLog* trace_log = TraceLog::GetInstance();
CategoryFilter cf_inc_all("*");
trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
@@ -1721,8 +1614,6 @@
}
TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) {
- ManualTestSetUp();
-
TraceLog* trace_log = TraceLog::GetInstance();
trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL);
EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
@@ -1772,8 +1663,6 @@
}
TEST_F(TraceEventTestFixture, TraceOptionsParsing) {
- ManualTestSetUp();
-
EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL,
TraceLog::TraceOptionsFromString(std::string()));
@@ -1791,8 +1680,6 @@
// Not supported in split dll build. http://crbug.com/256965
#if !defined(CHROME_SPLIT_DLL)
TEST_F(TraceEventTestFixture, TraceSampling) {
- ManualTestSetUp();
-
event_watch_notification_ = 0;
TraceLog::GetInstance()->SetEnabled(
CategoryFilter("*"),
@@ -1815,8 +1702,6 @@
}
TEST_F(TraceEventTestFixture, TraceSamplingScope) {
- ManualTestSetUp();
-
event_watch_notification_ = 0;
TraceLog::GetInstance()->SetEnabled(
CategoryFilter("*"),
@@ -1869,7 +1754,6 @@
};
TEST_F(TraceEventTestFixture, ConvertableTypes) {
- ManualTestSetUp();
TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
TraceLog::RECORD_UNTIL_FULL);
@@ -1979,7 +1863,6 @@
public:
virtual void SetUp() OVERRIDE {
TraceEventTestFixture::SetUp();
- ManualTestSetUp();
ASSERT_EQ(NULL, s_instance);
s_instance = this;
}
@@ -2043,8 +1926,6 @@
// Test the category filter.
TEST_F(TraceEventTestFixture, CategoryFilter) {
- ManualTestSetUp();
-
// Using the default filter.
CategoryFilter default_cf = CategoryFilter(
CategoryFilter::kDefaultCategoryFilterString);
« no previous file with comments | « base/debug/trace_event_impl.cc ('k') | base/debug/trace_event_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698