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

Unified Diff: base/tracked_objects_unittest.cc

Issue 445413003: Creating a framework for suppressing pollution of the profiler data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adding 1 forgotten time parameter. Created 6 years, 4 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/tracked_objects_unittest.cc
diff --git a/base/tracked_objects_unittest.cc b/base/tracked_objects_unittest.cc
index 7cbce908e0aa1afe908a01c129852fdaa8ffd391..0c8000439f484873621e1f164a1e4a129b16ec9b 100644
--- a/base/tracked_objects_unittest.cc
+++ b/base/tracked_objects_unittest.cc
@@ -168,8 +168,11 @@ TEST_F(TrackedObjectsTest, TinyStartupShutdown) {
TrackedTime start_time(pending_task.time_posted);
// Finally conclude the outer run.
TrackedTime end_time = ThreadData::NowForEndOfRun();
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, start_time,
- end_time);
+ TaskStopwatch stopwatch;
+ stopwatch.Start(start_time);
+ stopwatch.Stop(end_time);
+
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch);
birth_map.clear();
death_map.clear();
@@ -350,8 +353,11 @@ TEST_F(TrackedObjectsTest, LifeCycleToSnapshotMainThread) {
const TrackedTime kStartOfRun = TrackedTime() +
Duration::FromMilliseconds(5);
const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
- kStartOfRun, kEndOfRun);
+ TaskStopwatch stopwatch;
+ stopwatch.Start(kStartOfRun);
+ stopwatch.Stop(kEndOfRun);
+
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch);
ProcessDataSnapshot process_data;
ThreadData::Snapshot(false, &process_data);
@@ -386,8 +392,11 @@ TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToSnapshotMainThread) {
const TrackedTime kStartOfRun = TrackedTime() +
Duration::FromMilliseconds(5);
const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
- kStartOfRun, kEndOfRun);
+ TaskStopwatch stopwatch;
+ stopwatch.Start(kStartOfRun);
+ stopwatch.Stop(kEndOfRun);
+
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch);
ProcessDataSnapshot process_data;
ThreadData::Snapshot(false, &process_data);
@@ -416,8 +425,11 @@ TEST_F(TrackedObjectsTest, LifeCyclePreDeactivatedToSnapshotMainThread) {
const TrackedTime kStartOfRun = TrackedTime() +
Duration::FromMilliseconds(5);
const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
- kStartOfRun, kEndOfRun);
+ TaskStopwatch stopwatch;
+ stopwatch.Start(kStartOfRun);
+ stopwatch.Stop(kEndOfRun);
+
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch);
ProcessDataSnapshot process_data;
ThreadData::Snapshot(false, &process_data);
@@ -441,8 +453,11 @@ TEST_F(TrackedObjectsTest, LifeCycleToSnapshotWorkerThread) {
const TrackedTime kStartOfRun = TrackedTime() +
Duration::FromMilliseconds(5);
const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
- ThreadData::TallyRunOnWorkerThreadIfTracking(birth, kTimePosted,
- kStartOfRun, kEndOfRun);
+ TaskStopwatch stopwatch;
+ stopwatch.Start(kStartOfRun);
+ stopwatch.Stop(kEndOfRun);
+
+ ThreadData::TallyRunOnWorkerThreadIfTracking(birth, kTimePosted, stopwatch);
// Call for the ToSnapshot, but tell it to not reset the maxes after scanning.
ProcessDataSnapshot process_data;
@@ -503,15 +518,19 @@ TEST_F(TrackedObjectsTest, TwoLives) {
const TrackedTime kStartOfRun = TrackedTime() +
Duration::FromMilliseconds(5);
const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
- kStartOfRun, kEndOfRun);
+ TaskStopwatch stopwatch;
+ stopwatch.Start(kStartOfRun);
+ stopwatch.Stop(kEndOfRun);
+
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch);
// TrackingInfo will call TallyABirth() during construction.
base::TrackingInfo pending_task2(location, kDelayedStartTime);
pending_task2.time_posted = kTimePosted; // Overwrite implied Now().
+ stopwatch.Start(kStartOfRun);
+ stopwatch.Stop(kEndOfRun);
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task2,
- kStartOfRun, kEndOfRun);
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task2, stopwatch);
ProcessDataSnapshot process_data;
ThreadData::Snapshot(false, &process_data);
@@ -539,8 +558,11 @@ TEST_F(TrackedObjectsTest, DifferentLives) {
const TrackedTime kStartOfRun = TrackedTime() +
Duration::FromMilliseconds(5);
const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
- kStartOfRun, kEndOfRun);
+ TaskStopwatch stopwatch;
+ stopwatch.Start(kStartOfRun);
+ stopwatch.Stop(kEndOfRun);
+
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch);
const int kSecondFakeLineNumber = 999;
Location second_location(kFunction, kFile, kSecondFakeLineNumber, NULL);
@@ -581,4 +603,158 @@ TEST_F(TrackedObjectsTest, DifferentLives) {
EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
}
+TEST_F(TrackedObjectsTest, TaskWithNestedExclusion) {
+ if (!ThreadData::InitializeAndSetTrackingStatus(
+ ThreadData::PROFILING_CHILDREN_ACTIVE))
+ return;
jar (doing other things) 2014/08/26 04:09:10 nit: When the conditional of the if runs across mo
vadimt 2014/08/26 19:15:05 Agree, braces help when 'if' with condition takes
+
+ const char kFunction[] = "TaskWithNestedExclusion";
+ Location location(kFunction, kFile, kLineNumber, NULL);
+ TallyABirth(location, kMainThreadName);
+
+ const base::TimeTicks kTimePosted = base::TimeTicks() +
+ base::TimeDelta::FromMilliseconds(1);
+ const base::TimeTicks kDelayedStartTime = base::TimeTicks();
+ // TrackingInfo will call TallyABirth() during construction.
+ base::TrackingInfo pending_task(location, kDelayedStartTime);
+ pending_task.time_posted = kTimePosted; // Overwrite implied Now().
+
+ const TrackedTime kStartOfRun = TrackedTime() +
+ Duration::FromMilliseconds(5);
+ const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(15);
+ TaskStopwatch task_stopwatch;
+ task_stopwatch.Start(kStartOfRun);
+ {
+ TaskStopwatch exclusion_stopwatch;
+ exclusion_stopwatch.Start(TrackedTime() + Duration::FromMilliseconds(8));
+ exclusion_stopwatch.Stop(TrackedTime() + Duration::FromMilliseconds(12));
+ }
+ task_stopwatch.Stop(kEndOfRun);
+
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, task_stopwatch);
+
+ ProcessDataSnapshot process_data;
+ ThreadData::Snapshot(false, &process_data);
+ ExpectSimpleProcessData(process_data, kFunction, kMainThreadName,
+ kMainThreadName, 1, 6, 4);
+}
+
+TEST_F(TrackedObjectsTest, TaskWith2NestedExclusions) {
+ if (!ThreadData::InitializeAndSetTrackingStatus(
+ ThreadData::PROFILING_CHILDREN_ACTIVE))
+ return;
+
+ const char kFunction[] = "TaskWith2NestedExclusions";
+ Location location(kFunction, kFile, kLineNumber, NULL);
+ TallyABirth(location, kMainThreadName);
+
+ const base::TimeTicks kTimePosted = base::TimeTicks() +
+ base::TimeDelta::FromMilliseconds(1);
+ const base::TimeTicks kDelayedStartTime = base::TimeTicks();
+ // TrackingInfo will call TallyABirth() during construction.
+ base::TrackingInfo pending_task(location, kDelayedStartTime);
+ pending_task.time_posted = kTimePosted; // Overwrite implied Now().
+
+ const TrackedTime kStartOfRun = TrackedTime() +
+ Duration::FromMilliseconds(5);
+ const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(25);
+ TaskStopwatch task_stopwatch;
+ task_stopwatch.Start(kStartOfRun);
+ {
+ TaskStopwatch exclusion_stopwatch;
+ exclusion_stopwatch.Start(TrackedTime() + Duration::FromMilliseconds(8));
+ exclusion_stopwatch.Stop(TrackedTime() + Duration::FromMilliseconds(12));
+
+ exclusion_stopwatch.Start(TrackedTime() + Duration::FromMilliseconds(15));
+ exclusion_stopwatch.Stop(TrackedTime() + Duration::FromMilliseconds(18));
+ }
+ task_stopwatch.Stop(kEndOfRun);
+
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, task_stopwatch);
+
+ ProcessDataSnapshot process_data;
+ ThreadData::Snapshot(false, &process_data);
+ ExpectSimpleProcessData(process_data, kFunction, kMainThreadName,
+ kMainThreadName, 1, 13, 4);
+}
+
+TEST_F(TrackedObjectsTest, TaskWithNestedExclusionWithNestedTask) {
+ if (!ThreadData::InitializeAndSetTrackingStatus(
+ ThreadData::PROFILING_CHILDREN_ACTIVE))
+ return;
+
+ const char kFunction[] = "TaskWithNestedExclusionWithNestedTask";
+ Location location(kFunction, kFile, kLineNumber, NULL);
+
+ const int kSecondFakeLineNumber = 999;
+
+ TallyABirth(location, kMainThreadName);
+
+ const base::TimeTicks kTimePosted = base::TimeTicks() +
+ base::TimeDelta::FromMilliseconds(1);
+ const base::TimeTicks kDelayedStartTime = base::TimeTicks();
+ // TrackingInfo will call TallyABirth() during construction.
+ base::TrackingInfo pending_task(location, kDelayedStartTime);
+ pending_task.time_posted = kTimePosted; // Overwrite implied Now().
+
+ const TrackedTime kStartOfRun = TrackedTime() +
+ Duration::FromMilliseconds(5);
+ const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(15);
+ TaskStopwatch task_stopwatch;
+ task_stopwatch.Start(kStartOfRun);
+ {
+ TaskStopwatch exclusion_stopwatch;
+ exclusion_stopwatch.Start(TrackedTime() + Duration::FromMilliseconds(8));
+ {
+ Location second_location(kFunction, kFile, kSecondFakeLineNumber, NULL);
+ base::TrackingInfo nested_task(second_location, kDelayedStartTime);
+ // Overwrite implied Now().
+ nested_task.time_posted =
+ base::TimeTicks() + base::TimeDelta::FromMilliseconds(8);
+ TaskStopwatch nested_task_stopwatch;
+ nested_task_stopwatch.Start(
+ TrackedTime() + Duration::FromMilliseconds(9));
+ nested_task_stopwatch.Stop(
+ TrackedTime() + Duration::FromMilliseconds(11));
+ ThreadData::TallyRunOnNamedThreadIfTracking(
+ nested_task, nested_task_stopwatch);
+ }
+ exclusion_stopwatch.Stop(TrackedTime() + Duration::FromMilliseconds(12));
+ }
+ task_stopwatch.Stop(kEndOfRun);
+
+ ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, task_stopwatch);
+
+ ProcessDataSnapshot process_data;
+ ThreadData::Snapshot(false, &process_data);
+ ASSERT_EQ(2u, process_data.tasks.size());
+ EXPECT_EQ(kFile, process_data.tasks[0].birth.location.file_name);
+ EXPECT_EQ(kFunction, process_data.tasks[0].birth.location.function_name);
+ EXPECT_EQ(kLineNumber, process_data.tasks[0].birth.location.line_number);
+ EXPECT_EQ(kMainThreadName, process_data.tasks[0].birth.thread_name);
+ EXPECT_EQ(1, process_data.tasks[0].death_data.count);
+ EXPECT_EQ(6, process_data.tasks[0].death_data.run_duration_sum);
+ EXPECT_EQ(6, process_data.tasks[0].death_data.run_duration_max);
+ EXPECT_EQ(6, process_data.tasks[0].death_data.run_duration_sample);
+ EXPECT_EQ(4, process_data.tasks[0].death_data.queue_duration_sum);
+ EXPECT_EQ(4, process_data.tasks[0].death_data.queue_duration_max);
+ EXPECT_EQ(4, process_data.tasks[0].death_data.queue_duration_sample);
+ EXPECT_EQ(kMainThreadName, process_data.tasks[0].death_thread_name);
+ EXPECT_EQ(kFile, process_data.tasks[1].birth.location.file_name);
+ EXPECT_EQ(kFunction, process_data.tasks[1].birth.location.function_name);
+ EXPECT_EQ(kSecondFakeLineNumber,
+ process_data.tasks[1].birth.location.line_number);
+ EXPECT_EQ(kMainThreadName, process_data.tasks[1].birth.thread_name);
+ EXPECT_EQ(1, process_data.tasks[1].death_data.count);
+ EXPECT_EQ(2, process_data.tasks[1].death_data.run_duration_sum);
+ EXPECT_EQ(2, process_data.tasks[1].death_data.run_duration_max);
+ EXPECT_EQ(2, process_data.tasks[1].death_data.run_duration_sample);
+ EXPECT_EQ(1, process_data.tasks[1].death_data.queue_duration_sum);
+ EXPECT_EQ(1, process_data.tasks[1].death_data.queue_duration_max);
+ EXPECT_EQ(1, process_data.tasks[1].death_data.queue_duration_sample);
+ EXPECT_EQ(kMainThreadName, process_data.tasks[1].death_thread_name);
+ EXPECT_EQ(0u, process_data.descendants.size());
+ EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
+}
+
} // namespace tracked_objects

Powered by Google App Engine
This is Rietveld 408576698