OLD | NEW |
1 #include "platform/scheduler/base/thread_load_tracker.h" | 1 #include "platform/scheduler/base/thread_load_tracker.h" |
2 | 2 |
3 #include "base/bind.h" | 3 #include "base/bind.h" |
4 #include "testing/gmock/include/gmock/gmock.h" | 4 #include "testing/gmock/include/gmock/gmock.h" |
5 #include "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 | 6 |
7 using testing::ElementsAre; | 7 using testing::ElementsAre; |
8 | 8 |
9 namespace blink { | 9 namespace blink { |
10 namespace scheduler { | 10 namespace scheduler { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 | 46 |
47 thread_load_tracker.RecordTaskTime(MillisecondsToTime(13700), | 47 thread_load_tracker.RecordTaskTime(MillisecondsToTime(13700), |
48 MillisecondsToTime(13800)); | 48 MillisecondsToTime(13800)); |
49 | 49 |
50 thread_load_tracker.RecordTaskTime(MillisecondsToTime(14500), | 50 thread_load_tracker.RecordTaskTime(MillisecondsToTime(14500), |
51 MillisecondsToTime(16500)); | 51 MillisecondsToTime(16500)); |
52 | 52 |
53 thread_load_tracker.RecordIdle(MillisecondsToTime(17500)); | 53 thread_load_tracker.RecordIdle(MillisecondsToTime(17500)); |
54 | 54 |
55 // Because of 10-second delay we're getting information starting with 11s. | 55 // Because of 10-second delay we're getting information starting with 11s. |
56 EXPECT_THAT(result, ElementsAre(std::make_pair(SecondsToTime(11), 0), | 56 EXPECT_THAT(result, |
57 std::make_pair(SecondsToTime(12), 0.1), | 57 ElementsAre(std::make_pair(SecondsToTime(11), 0), |
58 std::make_pair(SecondsToTime(13), 0.1), | 58 std::make_pair(SecondsToTime(12), 0.1), |
59 std::make_pair(SecondsToTime(14), 0.2), | 59 std::make_pair(SecondsToTime(13), 0.1), |
60 std::make_pair(SecondsToTime(15), 0.5), | 60 std::make_pair(SecondsToTime(14), 0.2), |
61 std::make_pair(SecondsToTime(16), 1.0), | 61 std::make_pair(SecondsToTime(15), 0.5), |
62 std::make_pair(SecondsToTime(17), 0.5))); | 62 std::make_pair(SecondsToTime(16), 1.0), |
| 63 std::make_pair(SecondsToTime(17), 0.5))); |
63 } | 64 } |
64 | 65 |
65 TEST(ThreadLoadTrackerTest, PauseAndResume) { | 66 TEST(ThreadLoadTrackerTest, PauseAndResume) { |
66 std::vector<std::pair<base::TimeTicks, double>> result; | 67 std::vector<std::pair<base::TimeTicks, double>> result; |
67 | 68 |
68 ThreadLoadTracker thread_load_tracker( | 69 ThreadLoadTracker thread_load_tracker( |
69 SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)), | 70 SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)), |
70 base::TimeDelta::FromSeconds(1), base::TimeDelta::FromSeconds(10)); | 71 base::TimeDelta::FromSeconds(1), base::TimeDelta::FromSeconds(10)); |
71 thread_load_tracker.Resume(SecondsToTime(1)); | 72 thread_load_tracker.Resume(SecondsToTime(1)); |
72 | 73 |
73 thread_load_tracker.RecordTaskTime(SecondsToTime(3), SecondsToTime(4)); | 74 thread_load_tracker.RecordTaskTime(SecondsToTime(3), SecondsToTime(4)); |
74 thread_load_tracker.Pause(SecondsToTime(5)); | 75 thread_load_tracker.Pause(SecondsToTime(5)); |
75 // This task should be ignored. | 76 // This task should be ignored. |
76 thread_load_tracker.RecordTaskTime(SecondsToTime(10), SecondsToTime(11)); | 77 thread_load_tracker.RecordTaskTime(SecondsToTime(10), SecondsToTime(11)); |
77 thread_load_tracker.Resume(SecondsToTime(15)); | 78 thread_load_tracker.Resume(SecondsToTime(15)); |
78 thread_load_tracker.RecordTaskTime(MillisecondsToTime(20900), | 79 thread_load_tracker.RecordTaskTime(MillisecondsToTime(20900), |
79 MillisecondsToTime(21100)); | 80 MillisecondsToTime(21100)); |
80 | 81 |
81 thread_load_tracker.RecordIdle(MillisecondsToTime(23500)); | 82 thread_load_tracker.RecordIdle(MillisecondsToTime(23500)); |
82 | 83 |
83 thread_load_tracker.Pause(MillisecondsToTime(23500)); | 84 thread_load_tracker.Pause(MillisecondsToTime(23500)); |
84 thread_load_tracker.Resume(SecondsToTime(26)); | 85 thread_load_tracker.Resume(SecondsToTime(26)); |
85 | 86 |
86 thread_load_tracker.RecordTaskTime(MillisecondsToTime(26100), | 87 thread_load_tracker.RecordTaskTime(MillisecondsToTime(26100), |
87 MillisecondsToTime(26200)); | 88 MillisecondsToTime(26200)); |
88 thread_load_tracker.RecordIdle(MillisecondsToTime(27500)); | 89 thread_load_tracker.RecordIdle(MillisecondsToTime(27500)); |
89 | 90 |
90 EXPECT_THAT(result, ElementsAre(std::make_pair(SecondsToTime(21), 0.1), | 91 EXPECT_THAT(result, |
91 std::make_pair(SecondsToTime(22), 0.1), | 92 ElementsAre(std::make_pair(SecondsToTime(21), 0.1), |
92 std::make_pair(SecondsToTime(23), 0), | 93 std::make_pair(SecondsToTime(22), 0.1), |
93 std::make_pair(SecondsToTime(27), 0.1))); | 94 std::make_pair(SecondsToTime(23), 0), |
| 95 std::make_pair(SecondsToTime(27), 0.1))); |
94 } | 96 } |
95 | 97 |
96 TEST(ThreadLoadTrackerTest, DisabledByDefault) { | 98 TEST(ThreadLoadTrackerTest, DisabledByDefault) { |
97 std::vector<std::pair<base::TimeTicks, double>> result; | 99 std::vector<std::pair<base::TimeTicks, double>> result; |
98 ThreadLoadTracker thread_load_tracker( | 100 ThreadLoadTracker thread_load_tracker( |
99 SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)), | 101 SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)), |
100 base::TimeDelta::FromSeconds(1), base::TimeDelta::FromSeconds(10)); | 102 base::TimeDelta::FromSeconds(1), base::TimeDelta::FromSeconds(10)); |
101 | 103 |
102 // ThreadLoadTracker should be disabled and these tasks should be | 104 // ThreadLoadTracker should be disabled and these tasks should be |
103 // ignored. | 105 // ignored. |
104 thread_load_tracker.RecordTaskTime(SecondsToTime(13), SecondsToTime(14)); | 106 thread_load_tracker.RecordTaskTime(SecondsToTime(13), SecondsToTime(14)); |
105 thread_load_tracker.RecordTaskTime(SecondsToTime(15), SecondsToTime(16)); | 107 thread_load_tracker.RecordTaskTime(SecondsToTime(15), SecondsToTime(16)); |
106 | 108 |
107 thread_load_tracker.Resume(SecondsToTime(17)); | 109 thread_load_tracker.Resume(SecondsToTime(17)); |
108 | 110 |
109 thread_load_tracker.RecordTaskTime(SecondsToTime(28), SecondsToTime(29)); | 111 thread_load_tracker.RecordTaskTime(SecondsToTime(28), SecondsToTime(29)); |
110 | 112 |
111 EXPECT_THAT(result, ElementsAre(std::make_pair(SecondsToTime(27), 0), | 113 EXPECT_THAT(result, |
112 std::make_pair(SecondsToTime(28), 0), | 114 ElementsAre(std::make_pair(SecondsToTime(27), 0), |
113 std::make_pair(SecondsToTime(29), 1))); | 115 std::make_pair(SecondsToTime(28), 0), |
| 116 std::make_pair(SecondsToTime(29), 1))); |
114 } | 117 } |
115 | 118 |
116 } // namespace scheduler | 119 } // namespace scheduler |
117 } // namespace blink | 120 } // namespace blink |
OLD | NEW |