| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2315805c765e4f85823f8f9cb7038a9610bd0014
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/platform/scheduler/base/thread_load_tracker_unittest.cc
|
| @@ -0,0 +1,73 @@
|
| +#include "platform/scheduler/base/thread_load_tracker.h"
|
| +
|
| +#include "base/bind.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace blink {
|
| +namespace scheduler {
|
| +
|
| +namespace {
|
| +
|
| +void AddToVector(std::vector<std::pair<base::TimeTicks, double>>* vector,
|
| + base::TimeTicks time,
|
| + double load) {
|
| + vector->push_back({time, load});
|
| +}
|
| +
|
| +base::TimeTicks SecondsToTime(int seconds) {
|
| + return base::TimeTicks() + base::TimeDelta::FromSeconds(seconds);
|
| +}
|
| +
|
| +double Divide(int a, int b) {
|
| + return static_cast<double>(a) / b;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +TEST(ThreadLoadTrackerTest, RecordTasks) {
|
| + std::vector<std::pair<base::TimeTicks, double>> result;
|
| +
|
| + ThreadLoadTracker thread_load_tracker(
|
| + SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)));
|
| +
|
| + 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));
|
| +
|
| + // 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)}};
|
| +
|
| + EXPECT_EQ(result, expected_result);
|
| +}
|
| +
|
| +TEST(ThreadLoadTrackerTest, PauseAndResume) {
|
| + std::vector<std::pair<base::TimeTicks, double>> result;
|
| +
|
| + ThreadLoadTracker thread_load_tracker(
|
| + SecondsToTime(1), base::Bind(&AddToVector, base::Unretained(&result)));
|
| +
|
| + 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));
|
| +
|
| + std::vector<std::pair<base::TimeTicks, double>> expected_result{
|
| + {SecondsToTime(21), Divide(2, 10)},
|
| + {SecondsToTime(22), Divide(2, 11)},
|
| + {SecondsToTime(23), Divide(3, 12)}};
|
| +
|
| + EXPECT_EQ(result, expected_result);
|
| +}
|
| +
|
| +} // namespace scheduler
|
| +} // namespace blink
|
|
|