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

Side by Side Diff: base/tracked_objects_unittest.cc

Issue 8233037: Update task tracking to not depend on message_loop_ singleton (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/tracked_objects.cc ('k') | content/browser/browser_main.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // Test of classes in the tracked_objects.h classes. 5 // Test of classes in the tracked_objects.h classes.
6 6
7 #include "base/tracked_objects.h" 7 #include "base/tracked_objects.h"
8 8
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/time.h" 10 #include "base/time.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace tracked_objects { 13 namespace tracked_objects {
14 14
15 class TrackedObjectsTest : public testing::Test { 15 class TrackedObjectsTest : public testing::Test {
16 public: 16 public:
17 MessageLoop message_loop_; 17 MessageLoop message_loop_;
18 }; 18 };
19 19
20 TEST_F(TrackedObjectsTest, MinimalStartupShutdown) { 20 TEST_F(TrackedObjectsTest, MinimalStartupShutdown) {
21 // Minimal test doesn't even create any tasks. 21 // Minimal test doesn't even create any tasks.
22 if (!ThreadData::StartTracking(true)) 22 if (!ThreadData::StartTracking(true))
23 return; 23 return;
24 24
25 EXPECT_FALSE(ThreadData::first()); // No activity even on this thread. 25 EXPECT_FALSE(ThreadData::first()); // No activity even on this thread.
26 ThreadData* data = ThreadData::current(); 26 ThreadData* data = ThreadData::Get();
27 EXPECT_TRUE(ThreadData::first()); // Now class was constructed. 27 EXPECT_TRUE(ThreadData::first()); // Now class was constructed.
28 EXPECT_TRUE(data); 28 EXPECT_TRUE(data);
29 EXPECT_TRUE(!data->next()); 29 EXPECT_TRUE(!data->next());
30 EXPECT_EQ(data, ThreadData::current()); 30 EXPECT_EQ(data, ThreadData::Get());
31 ThreadData::BirthMap birth_map; 31 ThreadData::BirthMap birth_map;
32 data->SnapshotBirthMap(&birth_map); 32 data->SnapshotBirthMap(&birth_map);
33 EXPECT_EQ(0u, birth_map.size()); 33 EXPECT_EQ(0u, birth_map.size());
34 ThreadData::DeathMap death_map; 34 ThreadData::DeathMap death_map;
35 data->SnapshotDeathMap(&death_map); 35 data->SnapshotDeathMap(&death_map);
36 EXPECT_EQ(0u, death_map.size()); 36 EXPECT_EQ(0u, death_map.size());
37 ThreadData::ShutdownSingleThreadedCleanup(); 37 ThreadData::ShutdownSingleThreadedCleanup();
38 38
39 // Do it again, just to be sure we reset state completely. 39 // Do it again, just to be sure we reset state completely.
40 ThreadData::StartTracking(true); 40 ThreadData::StartTracking(true);
41 EXPECT_FALSE(ThreadData::first()); // No activity even on this thread. 41 EXPECT_FALSE(ThreadData::first()); // No activity even on this thread.
42 data = ThreadData::current(); 42 data = ThreadData::Get();
43 EXPECT_TRUE(ThreadData::first()); // Now class was constructed. 43 EXPECT_TRUE(ThreadData::first()); // Now class was constructed.
44 EXPECT_TRUE(data); 44 EXPECT_TRUE(data);
45 EXPECT_TRUE(!data->next()); 45 EXPECT_TRUE(!data->next());
46 EXPECT_EQ(data, ThreadData::current()); 46 EXPECT_EQ(data, ThreadData::Get());
47 birth_map.clear(); 47 birth_map.clear();
48 data->SnapshotBirthMap(&birth_map); 48 data->SnapshotBirthMap(&birth_map);
49 EXPECT_EQ(0u, birth_map.size()); 49 EXPECT_EQ(0u, birth_map.size());
50 death_map.clear(); 50 death_map.clear();
51 data->SnapshotDeathMap(&death_map); 51 data->SnapshotDeathMap(&death_map);
52 EXPECT_EQ(0u, death_map.size()); 52 EXPECT_EQ(0u, death_map.size());
53 ThreadData::ShutdownSingleThreadedCleanup(); 53 ThreadData::ShutdownSingleThreadedCleanup();
54 } 54 }
55 55
56 TEST_F(TrackedObjectsTest, TinyStartupShutdown) { 56 TEST_F(TrackedObjectsTest, TinyStartupShutdown) {
57 if (!ThreadData::StartTracking(true)) 57 if (!ThreadData::StartTracking(true))
58 return; 58 return;
59 59
60 // Instigate tracking on a single tracked object, or our thread. 60 // Instigate tracking on a single tracked object, or our thread.
61 const Location& location = FROM_HERE; 61 const Location& location = FROM_HERE;
62 ThreadData::TallyABirthIfActive(location); 62 ThreadData::TallyABirthIfActive(location);
63 63
64 const ThreadData* data = ThreadData::first(); 64 const ThreadData* data = ThreadData::first();
65 ASSERT_TRUE(data); 65 ASSERT_TRUE(data);
66 EXPECT_TRUE(!data->next()); 66 EXPECT_TRUE(!data->next());
67 EXPECT_EQ(data, ThreadData::current()); 67 EXPECT_EQ(data, ThreadData::Get());
68 ThreadData::BirthMap birth_map; 68 ThreadData::BirthMap birth_map;
69 data->SnapshotBirthMap(&birth_map); 69 data->SnapshotBirthMap(&birth_map);
70 EXPECT_EQ(1u, birth_map.size()); // 1 birth location. 70 EXPECT_EQ(1u, birth_map.size()); // 1 birth location.
71 EXPECT_EQ(1, birth_map.begin()->second->birth_count()); // 1 birth. 71 EXPECT_EQ(1, birth_map.begin()->second->birth_count()); // 1 birth.
72 ThreadData::DeathMap death_map; 72 ThreadData::DeathMap death_map;
73 data->SnapshotDeathMap(&death_map); 73 data->SnapshotDeathMap(&death_map);
74 EXPECT_EQ(0u, death_map.size()); // No deaths. 74 EXPECT_EQ(0u, death_map.size()); // No deaths.
75 75
76 76
77 // Now instigate a birth, and a death. 77 // Now instigate a birth, and a death.
78 const Births* second_birth = ThreadData::TallyABirthIfActive(location); 78 const Births* second_birth = ThreadData::TallyABirthIfActive(location);
79 ThreadData::TallyADeathIfActive( 79 ThreadData::TallyADeathIfActive(
80 second_birth, 80 second_birth,
81 base::TimeDelta::FromSeconds(1) /* Bogus duration. */); 81 base::TimeTicks::TimeTicks(), /* Bogus post_time. */
82 base::TimeTicks::TimeTicks(), /* Bogus delayed_start_time. */
83 base::TimeTicks::TimeTicks() /* Bogus start_run_time. */);
82 84
83 birth_map.clear(); 85 birth_map.clear();
84 data->SnapshotBirthMap(&birth_map); 86 data->SnapshotBirthMap(&birth_map);
85 EXPECT_EQ(1u, birth_map.size()); // 1 birth location. 87 EXPECT_EQ(1u, birth_map.size()); // 1 birth location.
86 EXPECT_EQ(2, birth_map.begin()->second->birth_count()); // 2 births. 88 EXPECT_EQ(2, birth_map.begin()->second->birth_count()); // 2 births.
87 death_map.clear(); 89 death_map.clear();
88 data->SnapshotDeathMap(&death_map); 90 data->SnapshotDeathMap(&death_map);
89 EXPECT_EQ(1u, death_map.size()); // 1 location. 91 EXPECT_EQ(1u, death_map.size()); // 1 location.
90 EXPECT_EQ(1, death_map.begin()->second.count()); // 1 death. 92 EXPECT_EQ(1, death_map.begin()->second.count()); // 1 death.
91 93
92 // The births were at the same location as the one known death. 94 // The births were at the same location as the one known death.
93 EXPECT_EQ(birth_map.begin()->second, death_map.begin()->first); 95 EXPECT_EQ(birth_map.begin()->second, death_map.begin()->first);
94 96
95 ThreadData::ShutdownSingleThreadedCleanup(); 97 ThreadData::ShutdownSingleThreadedCleanup();
96 } 98 }
97 99
98 } // namespace tracked_objects 100 } // namespace tracked_objects
OLDNEW
« no previous file with comments | « base/tracked_objects.cc ('k') | content/browser/browser_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698