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

Unified Diff: third_party/WebKit/Source/platform/scheduler/base/thread_load_tracker_unittest.cc

Issue 2391593002: [scheduler] Change ThreadLoadTracker to use only recent data. (Closed)
Patch Set: Rebased 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: third_party/WebKit/Source/platform/scheduler/base/thread_load_tracker_unittest.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/thread_load_tracker_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/thread_load_tracker_unittest.cc
index 2315805c765e4f85823f8f9cb7038a9610bd0014..23072d439fab90516e9476860f7d681a13cddd25 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/thread_load_tracker_unittest.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/thread_load_tracker_unittest.cc
@@ -4,6 +4,8 @@
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+using testing::ElementsAre;
+
namespace blink {
namespace scheduler {
@@ -19,8 +21,8 @@ base::TimeTicks SecondsToTime(int seconds) {
return base::TimeTicks() + base::TimeDelta::FromSeconds(seconds);
}
-double Divide(int a, int b) {
- return static_cast<double>(a) / b;
+base::TimeTicks MillisecondsToTime(int milliseconds) {
+ return base::TimeTicks() + base::TimeDelta::FromMilliseconds(milliseconds);
}
} // namespace
@@ -29,44 +31,64 @@ TEST(ThreadLoadTrackerTest, RecordTasks) {
std::vector<std::pair<base::TimeTicks, double>> result;
ThreadLoadTracker thread_load_tracker(
- SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)));
+ SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)),
+ base::TimeDelta::FromSeconds(1), base::TimeDelta::FromSeconds(10));
- thread_load_tracker.RecordTaskTime(SecondsToTime(3), SecondsToTime(5));
- thread_load_tracker.RecordTaskTime(SecondsToTime(7), SecondsToTime(9));
- thread_load_tracker.RecordTaskTime(SecondsToTime(10), SecondsToTime(13));
- thread_load_tracker.RecordTaskTime(SecondsToTime(15), SecondsToTime(18));
+ // We should discard first ten seconds of information.
+ thread_load_tracker.RecordTaskTime(SecondsToTime(1), SecondsToTime(3));
- // Because of 10-second delay we're getting information starting with 11s.
- std::vector<std::pair<base::TimeTicks, double>> expected_result{
- {SecondsToTime(11), Divide(5, 10)}, {SecondsToTime(12), Divide(6, 11)},
- {SecondsToTime(13), Divide(7, 12)}, {SecondsToTime(14), Divide(7, 13)},
- {SecondsToTime(15), Divide(7, 14)}, {SecondsToTime(16), Divide(8, 15)},
- {SecondsToTime(17), Divide(9, 16)}, {SecondsToTime(18), Divide(10, 17)}};
+ thread_load_tracker.RecordTaskTime(MillisecondsToTime(11300),
+ MillisecondsToTime(11400));
+
+ thread_load_tracker.RecordTaskTime(MillisecondsToTime(12900),
+ MillisecondsToTime(13100));
+
+ thread_load_tracker.RecordTaskTime(MillisecondsToTime(13700),
+ MillisecondsToTime(13800));
+
+ thread_load_tracker.RecordTaskTime(MillisecondsToTime(14500),
+ MillisecondsToTime(16500));
- EXPECT_EQ(result, expected_result);
+ thread_load_tracker.RecordIdle(MillisecondsToTime(17500));
+
+ // Because of 10-second delay we're getting information starting with 11s.
+ EXPECT_THAT(result, ElementsAre(std::make_pair(SecondsToTime(11), 0),
+ std::make_pair(SecondsToTime(12), 0.1),
+ std::make_pair(SecondsToTime(13), 0.1),
+ std::make_pair(SecondsToTime(14), 0.2),
+ std::make_pair(SecondsToTime(15), 0.5),
+ std::make_pair(SecondsToTime(16), 1.0),
+ std::make_pair(SecondsToTime(17), 0.5)));
}
TEST(ThreadLoadTrackerTest, PauseAndResume) {
std::vector<std::pair<base::TimeTicks, double>> result;
ThreadLoadTracker thread_load_tracker(
- SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)));
+ SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)),
+ base::TimeDelta::FromSeconds(1), base::TimeDelta::FromSeconds(10));
thread_load_tracker.RecordTaskTime(SecondsToTime(3), SecondsToTime(4));
thread_load_tracker.Pause(SecondsToTime(5));
// This task should be ignored.
thread_load_tracker.RecordTaskTime(SecondsToTime(10), SecondsToTime(11));
thread_load_tracker.Resume(SecondsToTime(15));
- // We're counting only last second.
- thread_load_tracker.RecordTaskTime(SecondsToTime(14), SecondsToTime(16));
- thread_load_tracker.RecordTaskTime(SecondsToTime(22), SecondsToTime(23));
+ thread_load_tracker.RecordTaskTime(MillisecondsToTime(20900),
+ MillisecondsToTime(21100));
+
+ thread_load_tracker.RecordIdle(MillisecondsToTime(23500));
+
+ thread_load_tracker.Pause(MillisecondsToTime(23500));
+ thread_load_tracker.Resume(SecondsToTime(26));
- std::vector<std::pair<base::TimeTicks, double>> expected_result{
- {SecondsToTime(21), Divide(2, 10)},
- {SecondsToTime(22), Divide(2, 11)},
- {SecondsToTime(23), Divide(3, 12)}};
+ thread_load_tracker.RecordTaskTime(MillisecondsToTime(26100),
+ MillisecondsToTime(26200));
+ thread_load_tracker.RecordIdle(MillisecondsToTime(27500));
- EXPECT_EQ(result, expected_result);
+ EXPECT_THAT(result, ElementsAre(std::make_pair(SecondsToTime(21), 0.1),
+ std::make_pair(SecondsToTime(22), 0.1),
+ std::make_pair(SecondsToTime(23), 0),
+ std::make_pair(SecondsToTime(27), 0.1)));
}
} // namespace scheduler

Powered by Google App Engine
This is Rietveld 408576698