config_unittest.cc 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright 2014 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/domain_reliability/config.h"
  5. #include <memory>
  6. #include <string>
  7. #include "base/time/time.h"
  8. #include "testing/gtest/include/gtest/gtest.h"
  9. namespace domain_reliability {
  10. namespace {
  11. std::unique_ptr<DomainReliabilityConfig> MakeBaseConfig() {
  12. DomainReliabilityConfig* config = new DomainReliabilityConfig();
  13. config->origin = url::Origin::Create(GURL("https://example/"));
  14. config->include_subdomains = false;
  15. config->collectors.push_back(
  16. std::make_unique<GURL>("https://example/upload"));
  17. config->failure_sample_rate = 1.0;
  18. config->success_sample_rate = 0.0;
  19. EXPECT_TRUE(config->IsValid());
  20. return std::unique_ptr<DomainReliabilityConfig>(config);
  21. }
  22. std::unique_ptr<DomainReliabilityConfig> MakeSampleConfig() {
  23. std::unique_ptr<DomainReliabilityConfig> config(MakeBaseConfig());
  24. config->path_prefixes.push_back(std::make_unique<std::string>("/css/"));
  25. config->path_prefixes.push_back(std::make_unique<std::string>("/js/"));
  26. EXPECT_TRUE(config->IsValid());
  27. return config;
  28. }
  29. class DomainReliabilityConfigTest : public testing::Test { };
  30. TEST_F(DomainReliabilityConfigTest, IsValid) {
  31. std::unique_ptr<DomainReliabilityConfig> config;
  32. config = MakeSampleConfig();
  33. EXPECT_TRUE(config->IsValid());
  34. config = MakeSampleConfig();
  35. config->origin = url::Origin();
  36. EXPECT_FALSE(config->IsValid());
  37. config = MakeSampleConfig();
  38. config->collectors.clear();
  39. EXPECT_FALSE(config->IsValid());
  40. config = MakeSampleConfig();
  41. config->collectors[0] = std::make_unique<GURL>();
  42. EXPECT_FALSE(config->IsValid());
  43. config = MakeSampleConfig();
  44. config->failure_sample_rate = 2.0;
  45. EXPECT_FALSE(config->IsValid());
  46. config = MakeSampleConfig();
  47. config->success_sample_rate = 2.0;
  48. EXPECT_FALSE(config->IsValid());
  49. }
  50. TEST_F(DomainReliabilityConfigTest, FromJSON) {
  51. std::string config_json =
  52. "{ \"origin\": \"https://example/\","
  53. " \"include_subdomains\": false,"
  54. " \"collectors\": [ \"https://example/upload\" ],"
  55. " \"path_prefixes\": ["
  56. " \"/css/\","
  57. " \"/js/\""
  58. " ],"
  59. " \"failure_sample_rate\": 0.10,"
  60. " \"success_sample_rate\": 0.01"
  61. "}";
  62. std::unique_ptr<const DomainReliabilityConfig> config(
  63. DomainReliabilityConfig::FromJSON(config_json));
  64. EXPECT_TRUE(config);
  65. EXPECT_EQ("https://example", config->origin.Serialize());
  66. EXPECT_FALSE(config->include_subdomains);
  67. EXPECT_EQ(1u, config->collectors.size());
  68. EXPECT_EQ(GURL("https://example/upload"), *config->collectors[0]);
  69. EXPECT_EQ(2u, config->path_prefixes.size());
  70. EXPECT_EQ("/css/", *config->path_prefixes[0]);
  71. EXPECT_EQ("/js/", *config->path_prefixes[1]);
  72. EXPECT_EQ(0.10, config->failure_sample_rate);
  73. EXPECT_EQ(0.01, config->success_sample_rate);
  74. }
  75. } // namespace
  76. } // namespace domain_reliability