| 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/variations/browser_variations_util.h" | 
|  | 6 | 
|  | 7 #include <map> | 
|  | 8 #include <vector> | 
|  | 9 | 
|  | 10 #include "base/metrics/field_trial.h" | 
|  | 11 #include "components/variations/variations_associated_data.h" | 
|  | 12 #include "testing/gtest/include/gtest/gtest.h" | 
|  | 13 | 
|  | 14 namespace task_scheduler_util { | 
|  | 15 namespace variations { | 
|  | 16 | 
|  | 17 namespace { | 
|  | 18 | 
|  | 19 using StandbyThreadPolicy = | 
|  | 20     base::SchedulerWorkerPoolParams::StandbyThreadPolicy; | 
|  | 21 | 
|  | 22 constexpr char kFieldTrialName[] = "BrowserScheduler"; | 
|  | 23 constexpr char kFieldTrialTestGroup[] = "Test"; | 
|  | 24 | 
|  | 25 class TaskSchedulerUtilBrowserVariationsUtilTest : public ::testing::Test { | 
|  | 26  public: | 
|  | 27   TaskSchedulerUtilBrowserVariationsUtilTest() : field_trial_list_(nullptr) {} | 
|  | 28 | 
|  | 29   ~TaskSchedulerUtilBrowserVariationsUtilTest() override { | 
|  | 30     // Ensure that the maps are cleared between tests, since they are stored as | 
|  | 31     // process singletons. | 
|  | 32     ::variations::testing::ClearAllVariationIDs(); | 
|  | 33     ::variations::testing::ClearAllVariationParams(); | 
|  | 34   } | 
|  | 35 | 
|  | 36  private: | 
|  | 37   base::FieldTrialList field_trial_list_; | 
|  | 38 | 
|  | 39   DISALLOW_COPY_AND_ASSIGN(TaskSchedulerUtilBrowserVariationsUtilTest); | 
|  | 40 }; | 
|  | 41 | 
|  | 42 }  // namespace | 
|  | 43 | 
|  | 44 TEST_F(TaskSchedulerUtilBrowserVariationsUtilTest, OrderingParams5) { | 
|  | 45   std::map<std::string, std::string> params; | 
|  | 46   params["Background"] = "1;1;1;0;42"; | 
|  | 47   params["BackgroundFileIO"] = "2;2;1;0;52"; | 
|  | 48   params["Foreground"] = "4;4;1;0;62"; | 
|  | 49   params["ForegroundFileIO"] = "8;8;1;0;72"; | 
|  | 50   ASSERT_TRUE(::variations::AssociateVariationParams(kFieldTrialName, | 
|  | 51                                                      kFieldTrialTestGroup, | 
|  | 52                                                      params)); | 
|  | 53 | 
|  | 54   base::FieldTrialList::CreateFieldTrial(kFieldTrialName, kFieldTrialTestGroup); | 
|  | 55   auto params_vector = GetBrowserSchedulerWorkerPoolParamsFromVariations(); | 
|  | 56   ASSERT_EQ(4U, params_vector.size()); | 
|  | 57 | 
|  | 58   EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[0].standby_thread_policy()); | 
|  | 59   EXPECT_EQ(1U, params_vector[0].max_threads()); | 
|  | 60   EXPECT_EQ(base::TimeDelta::FromMilliseconds(42), | 
|  | 61             params_vector[0].suggested_reclaim_time()); | 
|  | 62 | 
|  | 63   EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[1].standby_thread_policy()); | 
|  | 64   EXPECT_EQ(2U, params_vector[1].max_threads()); | 
|  | 65   EXPECT_EQ(base::TimeDelta::FromMilliseconds(52), | 
|  | 66             params_vector[1].suggested_reclaim_time()); | 
|  | 67 | 
|  | 68   EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[2].standby_thread_policy()); | 
|  | 69   EXPECT_EQ(4U, params_vector[2].max_threads()); | 
|  | 70   EXPECT_EQ(base::TimeDelta::FromMilliseconds(62), | 
|  | 71             params_vector[2].suggested_reclaim_time()); | 
|  | 72 | 
|  | 73   EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[3].standby_thread_policy()); | 
|  | 74   EXPECT_EQ(8U, params_vector[3].max_threads()); | 
|  | 75   EXPECT_EQ(base::TimeDelta::FromMilliseconds(72), | 
|  | 76             params_vector[3].suggested_reclaim_time()); | 
|  | 77 } | 
|  | 78 | 
|  | 79 TEST_F(TaskSchedulerUtilBrowserVariationsUtilTest, OrderingParams6) { | 
|  | 80   std::map<std::string, std::string> params; | 
|  | 81   params["Background"] = "1;1;1;0;42;lazy"; | 
|  | 82   params["BackgroundFileIO"] = "2;2;1;0;52;one"; | 
|  | 83   params["Foreground"] = "4;4;1;0;62;lazy"; | 
|  | 84   params["ForegroundFileIO"] = "8;8;1;0;72;one"; | 
|  | 85   ASSERT_TRUE(::variations::AssociateVariationParams(kFieldTrialName, | 
|  | 86                                                      kFieldTrialTestGroup, | 
|  | 87                                                      params)); | 
|  | 88 | 
|  | 89   base::FieldTrialList::CreateFieldTrial(kFieldTrialName, kFieldTrialTestGroup); | 
|  | 90   auto params_vector = GetBrowserSchedulerWorkerPoolParamsFromVariations(); | 
|  | 91   ASSERT_EQ(4U, params_vector.size()); | 
|  | 92 | 
|  | 93   EXPECT_EQ(StandbyThreadPolicy::LAZY, | 
|  | 94             params_vector[0].standby_thread_policy()); | 
|  | 95   EXPECT_EQ(1U, params_vector[0].max_threads()); | 
|  | 96   EXPECT_EQ(base::TimeDelta::FromMilliseconds(42), | 
|  | 97             params_vector[0].suggested_reclaim_time()); | 
|  | 98 | 
|  | 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(StandbyThreadPolicy::LAZY, | 
|  | 105             params_vector[2].standby_thread_policy()); | 
|  | 106   EXPECT_EQ(4U, params_vector[2].max_threads()); | 
|  | 107   EXPECT_EQ(base::TimeDelta::FromMilliseconds(62), | 
|  | 108             params_vector[2].suggested_reclaim_time()); | 
|  | 109 | 
|  | 110   EXPECT_EQ(StandbyThreadPolicy::ONE, params_vector[3].standby_thread_policy()); | 
|  | 111   EXPECT_EQ(8U, params_vector[3].max_threads()); | 
|  | 112   EXPECT_EQ(base::TimeDelta::FromMilliseconds(72), | 
|  | 113             params_vector[3].suggested_reclaim_time()); | 
|  | 114 } | 
|  | 115 | 
|  | 116 TEST_F(TaskSchedulerUtilBrowserVariationsUtilTest, NoData) { | 
|  | 117   auto params_vector = GetBrowserSchedulerWorkerPoolParamsFromVariations(); | 
|  | 118   EXPECT_TRUE(params_vector.empty()); | 
|  | 119 } | 
|  | 120 | 
|  | 121 TEST_F(TaskSchedulerUtilBrowserVariationsUtilTest, IncompleteParameters) { | 
|  | 122   std::map<std::string, std::string> params; | 
|  | 123   params["Background"] = "1;1;1;0"; | 
|  | 124   params["BackgroundFileIO"] = "2;2;1;0"; | 
|  | 125   params["Foreground"] = "4;4;1;0"; | 
|  | 126   params["ForegroundFileIO"] = "8;8;1;0"; | 
|  | 127   base::FieldTrialList::CreateFieldTrial(kFieldTrialName, kFieldTrialTestGroup); | 
|  | 128   ASSERT_TRUE(::variations::AssociateVariationParams(kFieldTrialName, | 
|  | 129                                                      kFieldTrialTestGroup, | 
|  | 130                                                      params)); | 
|  | 131   auto params_vector = GetBrowserSchedulerWorkerPoolParamsFromVariations(); | 
|  | 132   EXPECT_TRUE(params_vector.empty()); | 
|  | 133 } | 
|  | 134 | 
|  | 135 TEST_F(TaskSchedulerUtilBrowserVariationsUtilTest, InvalidParameters) { | 
|  | 136   std::map<std::string, std::string> params; | 
|  | 137   params["Background"] = "a;b;c;d;e"; | 
|  | 138   params["BackgroundFileIO"] = "a;b;c;d;e"; | 
|  | 139   params["Foreground"] = "a;b;c;d;e"; | 
|  | 140   params["ForegroundFileIO"] = "a;b;c;d;e"; | 
|  | 141   base::FieldTrialList::CreateFieldTrial(kFieldTrialName, kFieldTrialTestGroup); | 
|  | 142   ASSERT_TRUE(::variations::AssociateVariationParams(kFieldTrialName, | 
|  | 143                                                      kFieldTrialTestGroup, | 
|  | 144                                                      params)); | 
|  | 145   auto params_vector = GetBrowserSchedulerWorkerPoolParamsFromVariations(); | 
|  | 146   EXPECT_TRUE(params_vector.empty()); | 
|  | 147 } | 
|  | 148 | 
|  | 149 }  // namespace variations | 
|  | 150 }  // namespace task_scheduler_util | 
| OLD | NEW | 
|---|