| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "discovery/mdns/mdns_random.h" |
| |
| #include "gmock/gmock.h" |
| #include "gtest/gtest.h" |
| |
| namespace openscreen { |
| namespace discovery { |
| |
| namespace { |
| constexpr int kIterationCount = 100; |
| } |
| |
| TEST(MdnsRandomTest, InitialQueryDelay) { |
| constexpr std::chrono::milliseconds lower_bound{20}; |
| constexpr std::chrono::milliseconds upper_bound{120}; |
| MdnsRandom mdns_random; |
| for (int i = 0; i < kIterationCount; ++i) { |
| const Clock::duration delay = mdns_random.GetInitialQueryDelay(); |
| EXPECT_GE(delay, lower_bound); |
| EXPECT_LE(delay, upper_bound); |
| } |
| } |
| |
| TEST(MdnsRandomTest, RecordTtlVariation) { |
| constexpr double lower_bound = 0.0; |
| constexpr double upper_bound = 0.02; |
| MdnsRandom mdns_random; |
| for (int i = 0; i < kIterationCount; ++i) { |
| const double variation = mdns_random.GetRecordTtlVariation(); |
| EXPECT_GE(variation, lower_bound); |
| EXPECT_LE(variation, upper_bound); |
| } |
| } |
| |
| TEST(MdnsRandomTest, SharedRecordResponseDelay) { |
| constexpr std::chrono::milliseconds lower_bound{20}; |
| constexpr std::chrono::milliseconds upper_bound{120}; |
| MdnsRandom mdns_random; |
| for (int i = 0; i < kIterationCount; ++i) { |
| const Clock::duration delay = mdns_random.GetSharedRecordResponseDelay(); |
| EXPECT_GE(delay, lower_bound); |
| EXPECT_LE(delay, upper_bound); |
| } |
| } |
| |
| TEST(MdnsRandomTest, TruncatedQueryResponseDelay) { |
| constexpr std::chrono::milliseconds lower_bound{400}; |
| constexpr std::chrono::milliseconds upper_bound{500}; |
| MdnsRandom mdns_random; |
| for (int i = 0; i < kIterationCount; ++i) { |
| const Clock::duration delay = mdns_random.GetTruncatedQueryResponseDelay(); |
| EXPECT_GE(delay, lower_bound); |
| EXPECT_LE(delay, upper_bound); |
| } |
| } |
| |
| } // namespace discovery |
| } // namespace openscreen |