OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "components/task_scheduler_util/common/variations_util.h" |
| 6 |
| 7 #include <map> |
| 8 #include <string> |
| 9 #include <vector> |
| 10 |
| 11 #include "base/task_scheduler/scheduler_worker_pool_params.h" |
| 12 #include "base/threading/platform_thread.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 |
| 15 namespace task_scheduler_util { |
| 16 |
| 17 namespace { |
| 18 |
| 19 using StandbyThreadPolicy = |
| 20 base::SchedulerWorkerPoolParams::StandbyThreadPolicy; |
| 21 using ThreadPriority = base::ThreadPriority; |
| 22 |
| 23 std::vector<SchedulerImmutableWorkerPoolParams> GetImmutableWorkerPoolParams() { |
| 24 std::vector<SchedulerImmutableWorkerPoolParams> constant_worker_pool_params; |
| 25 constant_worker_pool_params.emplace_back("Background", |
| 26 ThreadPriority::BACKGROUND); |
| 27 constant_worker_pool_params.emplace_back("BackgroundFileIO", |
| 28 ThreadPriority::BACKGROUND); |
| 29 constant_worker_pool_params.emplace_back("Foreground", |
| 30 ThreadPriority::NORMAL); |
| 31 constant_worker_pool_params.emplace_back("ForegroundFileIO", |
| 32 ThreadPriority::NORMAL); |
| 33 return constant_worker_pool_params; |
| 34 } |
| 35 |
| 36 } // namespace |
| 37 |
| 38 TEST(TaskSchedulerUtilVariationsUtilTest, OrderingParams5) { |
| 39 std::map<std::string, std::string> variation_params; |
| 40 variation_params["Background"] = "1;1;1;0;42"; |
| 41 variation_params["BackgroundFileIO"] = "2;2;1;0;52"; |
| 42 variation_params["Foreground"] = "4;4;1;0;62"; |
| 43 variation_params["ForegroundFileIO"] = "8;8;1;0;72"; |
| 44 |
| 45 auto params_vector = |
| 46 GetWorkerPoolParams(GetImmutableWorkerPoolParams(), variation_params); |
| 47 ASSERT_EQ(4U, params_vector.size()); |
| 48 |
| 49 EXPECT_EQ("Background", params_vector[0].name()); |
| 50 EXPECT_EQ(ThreadPriority::BACKGROUND, params_vector[0].priority_hint()); |
| 51 EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[0].standby_thread_policy()); |
| 52 EXPECT_EQ(1U, params_vector[0].max_threads()); |
| 53 EXPECT_EQ(base::TimeDelta::FromMilliseconds(42), |
| 54 params_vector[0].suggested_reclaim_time()); |
| 55 |
| 56 EXPECT_EQ("BackgroundFileIO", params_vector[1].name()); |
| 57 EXPECT_EQ(ThreadPriority::BACKGROUND, params_vector[1].priority_hint()); |
| 58 EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[1].standby_thread_policy()); |
| 59 EXPECT_EQ(2U, params_vector[1].max_threads()); |
| 60 EXPECT_EQ(base::TimeDelta::FromMilliseconds(52), |
| 61 params_vector[1].suggested_reclaim_time()); |
| 62 |
| 63 EXPECT_EQ("Foreground", params_vector[2].name()); |
| 64 EXPECT_EQ(ThreadPriority::NORMAL, params_vector[2].priority_hint()); |
| 65 EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[2].standby_thread_policy()); |
| 66 EXPECT_EQ(4U, params_vector[2].max_threads()); |
| 67 EXPECT_EQ(base::TimeDelta::FromMilliseconds(62), |
| 68 params_vector[2].suggested_reclaim_time()); |
| 69 |
| 70 EXPECT_EQ("ForegroundFileIO", params_vector[3].name()); |
| 71 EXPECT_EQ(ThreadPriority::NORMAL, params_vector[3].priority_hint()); |
| 72 EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[3].standby_thread_policy()); |
| 73 EXPECT_EQ(8U, params_vector[3].max_threads()); |
| 74 EXPECT_EQ(base::TimeDelta::FromMilliseconds(72), |
| 75 params_vector[3].suggested_reclaim_time()); |
| 76 } |
| 77 |
| 78 TEST(TaskSchedulerUtilVariationsUtilTest, OrderingParams6) { |
| 79 std::map<std::string, std::string> variation_params; |
| 80 variation_params["Background"] = "1;1;1;0;42;lazy"; |
| 81 variation_params["BackgroundFileIO"] = "2;2;1;0;52;one"; |
| 82 variation_params["Foreground"] = "4;4;1;0;62;lazy"; |
| 83 variation_params["ForegroundFileIO"] = "8;8;1;0;72;one"; |
| 84 |
| 85 auto params_vector = |
| 86 GetWorkerPoolParams(GetImmutableWorkerPoolParams(), variation_params); |
| 87 ASSERT_EQ(4U, params_vector.size()); |
| 88 |
| 89 EXPECT_EQ("Background", params_vector[0].name()); |
| 90 EXPECT_EQ(ThreadPriority::BACKGROUND, params_vector[0].priority_hint()); |
| 91 EXPECT_EQ(StandbyThreadPolicy::LAZY, |
| 92 params_vector[0].standby_thread_policy()); |
| 93 EXPECT_EQ(1U, params_vector[0].max_threads()); |
| 94 EXPECT_EQ(base::TimeDelta::FromMilliseconds(42), |
| 95 params_vector[0].suggested_reclaim_time()); |
| 96 |
| 97 EXPECT_EQ("BackgroundFileIO", params_vector[1].name()); |
| 98 EXPECT_EQ(ThreadPriority::BACKGROUND, params_vector[1].priority_hint()); |
| 99 EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[1].standby_thread_policy()); |
| 100 EXPECT_EQ(2U, params_vector[1].max_threads()); |
| 101 EXPECT_EQ(base::TimeDelta::FromMilliseconds(52), |
| 102 params_vector[1].suggested_reclaim_time()); |
| 103 |
| 104 EXPECT_EQ("Foreground", params_vector[2].name()); |
| 105 EXPECT_EQ(ThreadPriority::NORMAL, params_vector[2].priority_hint()); |
| 106 EXPECT_EQ(StandbyThreadPolicy::LAZY, |
| 107 params_vector[2].standby_thread_policy()); |
| 108 EXPECT_EQ(4U, params_vector[2].max_threads()); |
| 109 EXPECT_EQ(base::TimeDelta::FromMilliseconds(62), |
| 110 params_vector[2].suggested_reclaim_time()); |
| 111 |
| 112 EXPECT_EQ("ForegroundFileIO", params_vector[3].name()); |
| 113 EXPECT_EQ(ThreadPriority::NORMAL, params_vector[3].priority_hint()); |
| 114 EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[3].standby_thread_policy()); |
| 115 EXPECT_EQ(8U, params_vector[3].max_threads()); |
| 116 EXPECT_EQ(base::TimeDelta::FromMilliseconds(72), |
| 117 params_vector[3].suggested_reclaim_time()); |
| 118 } |
| 119 |
| 120 TEST(TaskSchedulerUtilVariationsUtilTest, NoData) { |
| 121 EXPECT_TRUE(GetWorkerPoolParams(GetImmutableWorkerPoolParams(), |
| 122 std::map<std::string, std::string>()) |
| 123 .empty()); |
| 124 } |
| 125 |
| 126 TEST(TaskSchedulerUtilVariationsUtilTest, IncompleteParameters) { |
| 127 std::map<std::string, std::string> variation_params; |
| 128 variation_params["Background"] = "1;1;1;0"; |
| 129 variation_params["BackgroundFileIO"] = "2;2;1;0"; |
| 130 variation_params["Foreground"] = "4;4;1;0"; |
| 131 variation_params["ForegroundFileIO"] = "8;8;1;0"; |
| 132 EXPECT_TRUE( |
| 133 GetWorkerPoolParams(GetImmutableWorkerPoolParams(), variation_params) |
| 134 .empty()); |
| 135 } |
| 136 |
| 137 TEST(TaskSchedulerUtilVariationsUtilTest, InvalidParameters) { |
| 138 std::map<std::string, std::string> variation_params; |
| 139 variation_params["Background"] = "a;b;c;d;e"; |
| 140 variation_params["BackgroundFileIO"] = "a;b;c;d;e"; |
| 141 variation_params["Foreground"] = "a;b;c;d;e"; |
| 142 variation_params["ForegroundFileIO"] = "a;b;c;d;e"; |
| 143 EXPECT_TRUE( |
| 144 GetWorkerPoolParams(GetImmutableWorkerPoolParams(), variation_params) |
| 145 .empty()); |
| 146 } |
| 147 |
| 148 } // namespace task_scheduler_util |
OLD | NEW |