tile_config_unittest.cc 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // Copyright 2020 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. #include "components/query_tiles/internal/tile_config.h"
  5. #include "base/test/scoped_feature_list.h"
  6. #include "components/query_tiles/switches.h"
  7. #include "components/query_tiles/tile_service.h"
  8. #include "testing/gtest/include/gtest/gtest.h"
  9. namespace query_tiles {
  10. namespace {
  11. void TestImagePrefetchMode(std::map<std::string, std::string> params,
  12. ImagePrefetchMode expected) {
  13. base::test::ScopedFeatureList feature_list;
  14. feature_list.InitAndEnableFeatureWithParameters(features::kQueryTiles,
  15. params);
  16. EXPECT_EQ(TileConfig::GetImagePrefetchMode(), expected);
  17. }
  18. } // namespace
  19. // Test to verify Finch parameters for enabled experiment group is read
  20. // correctly.
  21. TEST(TileConfigTest, FinchConfigEnabled) {
  22. base::test::ScopedFeatureList feature_list;
  23. std::map<std::string, std::string> params = {
  24. {kExperimentTagKey, "1234"}, {kBaseURLKey, "https://test.com"},
  25. {kExpireDurationKey, "100"}, {kIsUnmeteredNetworkRequiredKey, "true"},
  26. {kScheduleIntervalKey, "123"}, {kMaxRandomWindowKey, "234"},
  27. {kOneoffTaskWindowKey, "345"}, {kBackoffInitDelayInMsKey, "456"},
  28. {kBackoffMaxDelayInMsKey, "567"}};
  29. feature_list.InitAndEnableFeatureWithParameters(features::kQueryTiles,
  30. params);
  31. EXPECT_EQ(TileConfig::GetQueryTilesServerUrl("", false),
  32. GURL("https://test.com/v1/querytiles"));
  33. EXPECT_EQ(TileConfig::GetQueryTilesServerUrl("https://xyz.com", false),
  34. GURL("https://test.com/v1/querytiles"));
  35. EXPECT_TRUE(TileConfig::GetIsUnMeteredNetworkRequired());
  36. EXPECT_EQ(TileConfig::GetExperimentTag("us"), "1234");
  37. EXPECT_EQ(TileConfig::GetExpireDuration(), base::Seconds(100));
  38. EXPECT_EQ(TileConfig::GetScheduleIntervalInMs(), 123);
  39. EXPECT_EQ(TileConfig::GetMaxRandomWindowInMs(), 234);
  40. EXPECT_EQ(TileConfig::GetOneoffTaskWindowInMs(), 345);
  41. EXPECT_EQ(TileConfig::GetBackoffPolicyArgsInitDelayInMs(), 456);
  42. EXPECT_EQ(TileConfig::GetBackoffPolicyArgsMaxDelayInMs(), 567);
  43. }
  44. // Test to verify that if not configured, default parameter values are used.
  45. TEST(TileConfigTest, FinchConfigDefaultParameter) {
  46. base::test::ScopedFeatureList feature_list;
  47. feature_list.InitAndEnableFeature(features::kQueryTiles);
  48. EXPECT_EQ(TileConfig::GetQueryTilesServerUrl("", true), GURL());
  49. EXPECT_EQ(TileConfig::GetQueryTilesServerUrl("https://xyz.com", true),
  50. GURL("https://xyz.com/v1/querytiles"));
  51. EXPECT_FALSE(TileConfig::GetIsUnMeteredNetworkRequired());
  52. EXPECT_TRUE(TileConfig::GetExperimentTag("us").empty());
  53. EXPECT_EQ(TileConfig::GetExpireDuration(), base::Days(2));
  54. EXPECT_EQ(TileConfig::GetScheduleIntervalInMs(),
  55. base::Hours(12).InMilliseconds());
  56. EXPECT_EQ(TileConfig::GetMaxRandomWindowInMs(),
  57. base::Hours(4).InMilliseconds());
  58. EXPECT_EQ(TileConfig::GetOneoffTaskWindowInMs(),
  59. base::Hours(2).InMilliseconds());
  60. EXPECT_EQ(TileConfig::GetBackoffPolicyArgsInitDelayInMs(),
  61. base::Seconds(30).InMilliseconds());
  62. EXPECT_EQ(TileConfig::GetBackoffPolicyArgsMaxDelayInMs(),
  63. base::Days(1).InMilliseconds());
  64. }
  65. // Test to verify ImagePrefetchMode can be parsed correctly from Finch
  66. // parameters.
  67. TEST(TileConfigTest, GetImagePrefetchMode) {
  68. TestImagePrefetchMode({{kImagePrefetchModeKey, "none"}},
  69. ImagePrefetchMode::kNone);
  70. TestImagePrefetchMode(std::map<std::string, std::string>(),
  71. ImagePrefetchMode::kTopLevel);
  72. TestImagePrefetchMode({{kImagePrefetchModeKey, ""}},
  73. ImagePrefetchMode::kTopLevel);
  74. TestImagePrefetchMode({{kImagePrefetchModeKey, "top"}},
  75. ImagePrefetchMode::kTopLevel);
  76. TestImagePrefetchMode({{kImagePrefetchModeKey, "all"}},
  77. ImagePrefetchMode::kAll);
  78. }
  79. // Test to verify the default params for enabled countries.
  80. TEST(TileConfigTest, ExperimentTagForEnabledCountries) {
  81. base::test::ScopedFeatureList feature_list;
  82. EXPECT_EQ(TileConfig::GetExperimentTag("in"),
  83. "{maxLevels : 1, enableTrending : true, maxTrendingQueries : 8}");
  84. EXPECT_EQ(TileConfig::GetExperimentTag("in"),
  85. TileConfig::GetExperimentTag("ng"));
  86. EXPECT_EQ(TileConfig::GetExperimentTag("jp"),
  87. "{maxLevels : 1, rankTiles : true}");
  88. // Finch params should override default values.
  89. std::map<std::string, std::string> params = {
  90. {kExperimentTagKey,
  91. "{maxLevels : 1, enableTrending : true, rankTiles : true}"}};
  92. feature_list.InitAndEnableFeatureWithParameters(features::kQueryTiles,
  93. params);
  94. EXPECT_EQ(TileConfig::GetExperimentTag("in"),
  95. "{maxLevels : 1, enableTrending : true, rankTiles : true}");
  96. EXPECT_EQ(TileConfig::GetExperimentTag("in"),
  97. TileConfig::GetExperimentTag("ng"));
  98. EXPECT_EQ(TileConfig::GetExperimentTag("in"),
  99. TileConfig::GetExperimentTag("JP"));
  100. }
  101. } // namespace query_tiles