xref: /aosp_15_r20/external/cronet/net/nqe/event_creator_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2017 The Chromium Authors
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 "net/nqe/event_creator.h"
6 
7 #include "base/time/time.h"
8 #include "net/log/net_log_with_source.h"
9 #include "net/log/test_net_log.h"
10 #include "net/nqe/effective_connection_type.h"
11 #include "net/nqe/network_quality.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 
14 namespace net::nqe::internal {
15 
16 namespace {
17 
18 // Returns the number of entries in |net_log| that have type set to
19 // |NetLogEventType::NETWORK_QUALITY_CHANGED|.
GetNetworkQualityChangedEntriesCount(RecordingNetLogObserver * net_log)20 int GetNetworkQualityChangedEntriesCount(RecordingNetLogObserver* net_log) {
21   return net_log->GetEntriesWithType(NetLogEventType::NETWORK_QUALITY_CHANGED)
22       .size();
23 }
24 
25 // Verify that the net log events are recorded correctly.
TEST(NetworkQualityEstimatorEventCreatorTest,Notified)26 TEST(NetworkQualityEstimatorEventCreatorTest, Notified) {
27   RecordingNetLogObserver net_log_observer;
28 
29   EventCreator event_creator(NetLogWithSource::Make(NetLogSourceType::NONE));
30 
31   NetworkQuality network_quality_100(base::Milliseconds(100),
32                                      base::Milliseconds(100), 100);
33 
34   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
35       EFFECTIVE_CONNECTION_TYPE_2G, network_quality_100);
36   EXPECT_EQ(1, GetNetworkQualityChangedEntriesCount(&net_log_observer));
37 
38   // No new entry should be created since the network quality has not changed.
39   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
40       EFFECTIVE_CONNECTION_TYPE_2G, network_quality_100);
41   EXPECT_EQ(1, GetNetworkQualityChangedEntriesCount(&net_log_observer));
42 
43   // A new entry should be created since effective connection type has changed.
44   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
45       EFFECTIVE_CONNECTION_TYPE_3G, network_quality_100);
46   EXPECT_EQ(2, GetNetworkQualityChangedEntriesCount(&net_log_observer));
47 
48   // A new entry should not be created since HTTP RTT has not changed
49   // meaningfully.
50   NetworkQuality network_quality_http_rtt_110(base::Milliseconds(110),
51                                               base::Milliseconds(100), 100);
52   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
53       EFFECTIVE_CONNECTION_TYPE_3G, network_quality_http_rtt_110);
54   EXPECT_EQ(2, GetNetworkQualityChangedEntriesCount(&net_log_observer));
55 
56   // A new entry should be created since HTTP RTT has changed meaningfully.
57   NetworkQuality network_quality_http_rtt_300(base::Milliseconds(300),
58                                               base::Milliseconds(100), 100);
59   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
60       EFFECTIVE_CONNECTION_TYPE_3G, network_quality_http_rtt_300);
61   EXPECT_EQ(3, GetNetworkQualityChangedEntriesCount(&net_log_observer));
62 
63   // A new entry should be created since transport RTT has changed meaningfully.
64   NetworkQuality network_quality_transport_rtt_300(
65       base::Milliseconds(300), base::Milliseconds(300), 100);
66   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
67       EFFECTIVE_CONNECTION_TYPE_3G, network_quality_transport_rtt_300);
68   EXPECT_EQ(4, GetNetworkQualityChangedEntriesCount(&net_log_observer));
69 
70   // A new entry should be created since bandwidth has changed meaningfully.
71   NetworkQuality network_quality_kbps_300(base::Milliseconds(300),
72                                           base::Milliseconds(300), 300);
73   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
74       EFFECTIVE_CONNECTION_TYPE_3G, network_quality_kbps_300);
75   EXPECT_EQ(5, GetNetworkQualityChangedEntriesCount(&net_log_observer));
76 
77   // A new entry should not be created since network quality has not changed
78   // meaningfully.
79   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
80       EFFECTIVE_CONNECTION_TYPE_3G, network_quality_kbps_300);
81   EXPECT_EQ(5, GetNetworkQualityChangedEntriesCount(&net_log_observer));
82 
83   // A new entry should be created since bandwidth has changed meaningfully.
84   NetworkQuality network_quality_kbps_2000(base::Milliseconds(300),
85                                            base::Milliseconds(300), 2000);
86   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
87       EFFECTIVE_CONNECTION_TYPE_3G, network_quality_kbps_2000);
88   EXPECT_EQ(6, GetNetworkQualityChangedEntriesCount(&net_log_observer));
89 
90   // A new entry should not be created since bandwidth has not changed by more
91   // than 20%.
92   NetworkQuality network_quality_kbps_2200(base::Milliseconds(300),
93                                            base::Milliseconds(300), 2200);
94   event_creator.MaybeAddNetworkQualityChangedEventToNetLog(
95       EFFECTIVE_CONNECTION_TYPE_3G, network_quality_kbps_2200);
96   EXPECT_EQ(6, GetNetworkQualityChangedEntriesCount(&net_log_observer));
97 }
98 
99 }  // namespace
100 
101 }  // namespace net::nqe::internal
102