historical_latencies_container_unittest.cc 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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/network_time/historical_latencies_container.h"
  5. #include "base/metrics/field_trial_params.h"
  6. #include "base/test/scoped_feature_list.h"
  7. #include "base/time/time.h"
  8. #include "components/network_time/network_time_tracker.h"
  9. #include "testing/gmock/include/gmock/gmock-matchers.h"
  10. #include "testing/gtest/include/gtest/gtest.h"
  11. #include "third_party/abseil-cpp/absl/types/optional.h"
  12. namespace network_time {
  13. TEST(HistoricalLatenciesContainerTest, StdDeviation) {
  14. network_time::HistoricalLatenciesContainer latencies;
  15. latencies.Record(base::Seconds(1));
  16. EXPECT_EQ(absl::nullopt, latencies.StdDeviation());
  17. latencies.Record(base::Seconds(1));
  18. EXPECT_EQ(absl::nullopt, latencies.StdDeviation());
  19. latencies.Record(base::Seconds(1));
  20. EXPECT_THAT(latencies.StdDeviation(), testing::Optional(base::Seconds(0)));
  21. latencies.Record(base::Seconds(2));
  22. EXPECT_NE(absl::nullopt, latencies.StdDeviation());
  23. // The standard deviation of [1,1,2] is 0.816.
  24. EXPECT_EQ(816, latencies.StdDeviation().value().InMilliseconds());
  25. latencies.Record(-base::Seconds(10));
  26. EXPECT_NE(absl::nullopt, latencies.StdDeviation());
  27. // The standard deviation of [1,2,-10] is 9.416.
  28. EXPECT_EQ(9416, latencies.StdDeviation().value().InMilliseconds());
  29. {
  30. base::test::ScopedFeatureList scoped_feature_list;
  31. scoped_feature_list.InitAndEnableFeatureWithParameters(
  32. kNetworkTimeServiceQuerying,
  33. base::FieldTrialParams({{"NumHistoricalLatencies", "2"}}));
  34. EXPECT_NE(absl::nullopt, latencies.StdDeviation());
  35. // The standard deviation of [2,-10] is 8.485.
  36. EXPECT_EQ(8485, latencies.StdDeviation().value().InMilliseconds());
  37. }
  38. {
  39. base::test::ScopedFeatureList scoped_feature_list;
  40. scoped_feature_list.InitAndEnableFeatureWithParameters(
  41. kNetworkTimeServiceQuerying,
  42. base::FieldTrialParams({{"NumHistoricalLatencies", "0"}}));
  43. EXPECT_EQ(absl::nullopt, latencies.StdDeviation());
  44. }
  45. {
  46. base::test::ScopedFeatureList scoped_feature_list;
  47. scoped_feature_list.InitAndEnableFeatureWithParameters(
  48. kNetworkTimeServiceQuerying,
  49. base::FieldTrialParams({{"NumHistoricalLatencies", "-10"}}));
  50. EXPECT_EQ(absl::nullopt, latencies.StdDeviation());
  51. }
  52. {
  53. base::test::ScopedFeatureList scoped_feature_list;
  54. scoped_feature_list.InitAndEnableFeatureWithParameters(
  55. kNetworkTimeServiceQuerying,
  56. base::FieldTrialParams({{"NumHistoricalLatencies", "200"}}));
  57. EXPECT_EQ(absl::nullopt, latencies.StdDeviation());
  58. }
  59. }
  60. } // namespace network_time