Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Side by Side Diff: webrtc/video_engine/call_stats_unittest.cc

Issue 1512853002: Nuke TickTime::UseFakeClock. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: feedback Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/video_engine/call_stats.cc ('k') | webrtc/video_engine/vie_remb.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 13 matching lines...) Expand all
24 24
25 class MockStatsObserver : public CallStatsObserver { 25 class MockStatsObserver : public CallStatsObserver {
26 public: 26 public:
27 MockStatsObserver() {} 27 MockStatsObserver() {}
28 virtual ~MockStatsObserver() {} 28 virtual ~MockStatsObserver() {}
29 29
30 MOCK_METHOD2(OnRttUpdate, void(int64_t, int64_t)); 30 MOCK_METHOD2(OnRttUpdate, void(int64_t, int64_t));
31 }; 31 };
32 32
33 class CallStatsTest : public ::testing::Test { 33 class CallStatsTest : public ::testing::Test {
34 public:
35 CallStatsTest() : fake_clock_(12345) {}
36
34 protected: 37 protected:
35 virtual void SetUp() { 38 virtual void SetUp() { call_stats_.reset(new CallStats(&fake_clock_)); }
36 TickTime::UseFakeClock(12345); 39 SimulatedClock fake_clock_;
37 call_stats_.reset(new CallStats());
38 }
39 rtc::scoped_ptr<CallStats> call_stats_; 40 rtc::scoped_ptr<CallStats> call_stats_;
40 }; 41 };
41 42
42 TEST_F(CallStatsTest, AddAndTriggerCallback) { 43 TEST_F(CallStatsTest, AddAndTriggerCallback) {
43 MockStatsObserver stats_observer; 44 MockStatsObserver stats_observer;
44 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats(); 45 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
45 call_stats_->RegisterStatsObserver(&stats_observer); 46 call_stats_->RegisterStatsObserver(&stats_observer);
46 TickTime::AdvanceFakeClock(1000); 47 fake_clock_.AdvanceTimeMilliseconds(1000);
47 EXPECT_EQ(0, rtcp_rtt_stats->LastProcessedRtt()); 48 EXPECT_EQ(0, rtcp_rtt_stats->LastProcessedRtt());
48 49
49 const int64_t kRtt = 25; 50 const int64_t kRtt = 25;
50 rtcp_rtt_stats->OnRttUpdate(kRtt); 51 rtcp_rtt_stats->OnRttUpdate(kRtt);
51 EXPECT_CALL(stats_observer, OnRttUpdate(kRtt, kRtt)).Times(1); 52 EXPECT_CALL(stats_observer, OnRttUpdate(kRtt, kRtt)).Times(1);
52 call_stats_->Process(); 53 call_stats_->Process();
53 EXPECT_EQ(kRtt, rtcp_rtt_stats->LastProcessedRtt()); 54 EXPECT_EQ(kRtt, rtcp_rtt_stats->LastProcessedRtt());
54 55
55 const int64_t kRttTimeOutMs = 1500 + 10; 56 const int64_t kRttTimeOutMs = 1500 + 10;
56 TickTime::AdvanceFakeClock(kRttTimeOutMs); 57 fake_clock_.AdvanceTimeMilliseconds(kRttTimeOutMs);
57 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(0); 58 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(0);
58 call_stats_->Process(); 59 call_stats_->Process();
59 EXPECT_EQ(0, rtcp_rtt_stats->LastProcessedRtt()); 60 EXPECT_EQ(0, rtcp_rtt_stats->LastProcessedRtt());
60 61
61 call_stats_->DeregisterStatsObserver(&stats_observer); 62 call_stats_->DeregisterStatsObserver(&stats_observer);
62 } 63 }
63 64
64 TEST_F(CallStatsTest, ProcessTime) { 65 TEST_F(CallStatsTest, ProcessTime) {
65 MockStatsObserver stats_observer; 66 MockStatsObserver stats_observer;
66 call_stats_->RegisterStatsObserver(&stats_observer); 67 call_stats_->RegisterStatsObserver(&stats_observer);
67 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats(); 68 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
68 rtcp_rtt_stats->OnRttUpdate(100); 69 rtcp_rtt_stats->OnRttUpdate(100);
69 70
70 // Time isn't updated yet. 71 // Time isn't updated yet.
71 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(0); 72 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(0);
72 call_stats_->Process(); 73 call_stats_->Process();
73 74
74 // Advance clock and verify we get an update. 75 // Advance clock and verify we get an update.
75 TickTime::AdvanceFakeClock(1000); 76 fake_clock_.AdvanceTimeMilliseconds(1000);
76 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(1); 77 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(1);
77 call_stats_->Process(); 78 call_stats_->Process();
78 79
79 // Advance clock just too little to get an update. 80 // Advance clock just too little to get an update.
80 TickTime::AdvanceFakeClock(999); 81 fake_clock_.AdvanceTimeMilliseconds(999);
81 rtcp_rtt_stats->OnRttUpdate(100); 82 rtcp_rtt_stats->OnRttUpdate(100);
82 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(0); 83 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(0);
83 call_stats_->Process(); 84 call_stats_->Process();
84 85
85 // Advance enough to trigger a new update. 86 // Advance enough to trigger a new update.
86 TickTime::AdvanceFakeClock(1); 87 fake_clock_.AdvanceTimeMilliseconds(1);
87 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(1); 88 EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(1);
88 call_stats_->Process(); 89 call_stats_->Process();
89 90
90 call_stats_->DeregisterStatsObserver(&stats_observer); 91 call_stats_->DeregisterStatsObserver(&stats_observer);
91 } 92 }
92 93
93 // Verify all observers get correct estimates and observers can be added and 94 // Verify all observers get correct estimates and observers can be added and
94 // removed. 95 // removed.
95 TEST_F(CallStatsTest, MultipleObservers) { 96 TEST_F(CallStatsTest, MultipleObservers) {
96 MockStatsObserver stats_observer_1; 97 MockStatsObserver stats_observer_1;
97 call_stats_->RegisterStatsObserver(&stats_observer_1); 98 call_stats_->RegisterStatsObserver(&stats_observer_1);
98 // Add the second observer twice, there should still be only one report to the 99 // Add the second observer twice, there should still be only one report to the
99 // observer. 100 // observer.
100 MockStatsObserver stats_observer_2; 101 MockStatsObserver stats_observer_2;
101 call_stats_->RegisterStatsObserver(&stats_observer_2); 102 call_stats_->RegisterStatsObserver(&stats_observer_2);
102 call_stats_->RegisterStatsObserver(&stats_observer_2); 103 call_stats_->RegisterStatsObserver(&stats_observer_2);
103 104
104 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats(); 105 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
105 const int64_t kRtt = 100; 106 const int64_t kRtt = 100;
106 rtcp_rtt_stats->OnRttUpdate(kRtt); 107 rtcp_rtt_stats->OnRttUpdate(kRtt);
107 108
108 // Verify both observers are updated. 109 // Verify both observers are updated.
109 TickTime::AdvanceFakeClock(1000); 110 fake_clock_.AdvanceTimeMilliseconds(1000);
110 EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(1); 111 EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(1);
111 EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(1); 112 EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(1);
112 call_stats_->Process(); 113 call_stats_->Process();
113 114
114 // Deregister the second observer and verify update is only sent to the first 115 // Deregister the second observer and verify update is only sent to the first
115 // observer. 116 // observer.
116 call_stats_->DeregisterStatsObserver(&stats_observer_2); 117 call_stats_->DeregisterStatsObserver(&stats_observer_2);
117 rtcp_rtt_stats->OnRttUpdate(kRtt); 118 rtcp_rtt_stats->OnRttUpdate(kRtt);
118 TickTime::AdvanceFakeClock(1000); 119 fake_clock_.AdvanceTimeMilliseconds(1000);
119 EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(1); 120 EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(1);
120 EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(0); 121 EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(0);
121 call_stats_->Process(); 122 call_stats_->Process();
122 123
123 // Deregister the first observer. 124 // Deregister the first observer.
124 call_stats_->DeregisterStatsObserver(&stats_observer_1); 125 call_stats_->DeregisterStatsObserver(&stats_observer_1);
125 rtcp_rtt_stats->OnRttUpdate(kRtt); 126 rtcp_rtt_stats->OnRttUpdate(kRtt);
126 TickTime::AdvanceFakeClock(1000); 127 fake_clock_.AdvanceTimeMilliseconds(1000);
127 EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(0); 128 EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(0);
128 EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(0); 129 EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(0);
129 call_stats_->Process(); 130 call_stats_->Process();
130 } 131 }
131 132
132 // Verify increasing and decreasing rtt triggers callbacks with correct values. 133 // Verify increasing and decreasing rtt triggers callbacks with correct values.
133 TEST_F(CallStatsTest, ChangeRtt) { 134 TEST_F(CallStatsTest, ChangeRtt) {
134 MockStatsObserver stats_observer; 135 MockStatsObserver stats_observer;
135 call_stats_->RegisterStatsObserver(&stats_observer); 136 call_stats_->RegisterStatsObserver(&stats_observer);
136 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats(); 137 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
137 138
138 // Advance clock to be ready for an update. 139 // Advance clock to be ready for an update.
139 TickTime::AdvanceFakeClock(1000); 140 fake_clock_.AdvanceTimeMilliseconds(1000);
140 141
141 // Set a first value and verify the callback is triggered. 142 // Set a first value and verify the callback is triggered.
142 const int64_t kFirstRtt = 100; 143 const int64_t kFirstRtt = 100;
143 rtcp_rtt_stats->OnRttUpdate(kFirstRtt); 144 rtcp_rtt_stats->OnRttUpdate(kFirstRtt);
144 EXPECT_CALL(stats_observer, OnRttUpdate(kFirstRtt, kFirstRtt)).Times(1); 145 EXPECT_CALL(stats_observer, OnRttUpdate(kFirstRtt, kFirstRtt)).Times(1);
145 call_stats_->Process(); 146 call_stats_->Process();
146 147
147 // Increase rtt and verify the new value is reported. 148 // Increase rtt and verify the new value is reported.
148 TickTime::AdvanceFakeClock(1000); 149 fake_clock_.AdvanceTimeMilliseconds(1000);
149 const int64_t kHighRtt = kFirstRtt + 20; 150 const int64_t kHighRtt = kFirstRtt + 20;
150 const int64_t kAvgRtt1 = 103; 151 const int64_t kAvgRtt1 = 103;
151 rtcp_rtt_stats->OnRttUpdate(kHighRtt); 152 rtcp_rtt_stats->OnRttUpdate(kHighRtt);
152 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt1, kHighRtt)).Times(1); 153 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt1, kHighRtt)).Times(1);
153 call_stats_->Process(); 154 call_stats_->Process();
154 155
155 // Increase time enough for a new update, but not too much to make the 156 // Increase time enough for a new update, but not too much to make the
156 // rtt invalid. Report a lower rtt and verify the old/high value still is sent 157 // rtt invalid. Report a lower rtt and verify the old/high value still is sent
157 // in the callback. 158 // in the callback.
158 TickTime::AdvanceFakeClock(1000); 159 fake_clock_.AdvanceTimeMilliseconds(1000);
159 const int64_t kLowRtt = kFirstRtt - 20; 160 const int64_t kLowRtt = kFirstRtt - 20;
160 const int64_t kAvgRtt2 = 102; 161 const int64_t kAvgRtt2 = 102;
161 rtcp_rtt_stats->OnRttUpdate(kLowRtt); 162 rtcp_rtt_stats->OnRttUpdate(kLowRtt);
162 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt2, kHighRtt)).Times(1); 163 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt2, kHighRtt)).Times(1);
163 call_stats_->Process(); 164 call_stats_->Process();
164 165
165 // Advance time to make the high report invalid, the lower rtt should now be 166 // Advance time to make the high report invalid, the lower rtt should now be
166 // in the callback. 167 // in the callback.
167 TickTime::AdvanceFakeClock(1000); 168 fake_clock_.AdvanceTimeMilliseconds(1000);
168 const int64_t kAvgRtt3 = 95; 169 const int64_t kAvgRtt3 = 95;
169 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt3, kLowRtt)).Times(1); 170 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt3, kLowRtt)).Times(1);
170 call_stats_->Process(); 171 call_stats_->Process();
171 172
172 call_stats_->DeregisterStatsObserver(&stats_observer); 173 call_stats_->DeregisterStatsObserver(&stats_observer);
173 } 174 }
174 175
175 TEST_F(CallStatsTest, LastProcessedRtt) { 176 TEST_F(CallStatsTest, LastProcessedRtt) {
176 MockStatsObserver stats_observer; 177 MockStatsObserver stats_observer;
177 call_stats_->RegisterStatsObserver(&stats_observer); 178 call_stats_->RegisterStatsObserver(&stats_observer);
178 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats(); 179 RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
179 TickTime::AdvanceFakeClock(1000); 180 fake_clock_.AdvanceTimeMilliseconds(1000);
180 181
181 // Set a first values and verify that LastProcessedRtt initially returns the 182 // Set a first values and verify that LastProcessedRtt initially returns the
182 // average rtt. 183 // average rtt.
183 const int64_t kRttLow = 10; 184 const int64_t kRttLow = 10;
184 const int64_t kRttHigh = 30; 185 const int64_t kRttHigh = 30;
185 const int64_t kAvgRtt = 20; 186 const int64_t kAvgRtt = 20;
186 rtcp_rtt_stats->OnRttUpdate(kRttLow); 187 rtcp_rtt_stats->OnRttUpdate(kRttLow);
187 rtcp_rtt_stats->OnRttUpdate(kRttHigh); 188 rtcp_rtt_stats->OnRttUpdate(kRttHigh);
188 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt, kRttHigh)).Times(1); 189 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt, kRttHigh)).Times(1);
189 call_stats_->Process(); 190 call_stats_->Process();
190 EXPECT_EQ(kAvgRtt, rtcp_rtt_stats->LastProcessedRtt()); 191 EXPECT_EQ(kAvgRtt, rtcp_rtt_stats->LastProcessedRtt());
191 192
192 // Update values and verify LastProcessedRtt. 193 // Update values and verify LastProcessedRtt.
193 TickTime::AdvanceFakeClock(1000); 194 fake_clock_.AdvanceTimeMilliseconds(1000);
194 rtcp_rtt_stats->OnRttUpdate(kRttLow); 195 rtcp_rtt_stats->OnRttUpdate(kRttLow);
195 rtcp_rtt_stats->OnRttUpdate(kRttHigh); 196 rtcp_rtt_stats->OnRttUpdate(kRttHigh);
196 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt, kRttHigh)).Times(1); 197 EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt, kRttHigh)).Times(1);
197 call_stats_->Process(); 198 call_stats_->Process();
198 EXPECT_EQ(kAvgRtt, rtcp_rtt_stats->LastProcessedRtt()); 199 EXPECT_EQ(kAvgRtt, rtcp_rtt_stats->LastProcessedRtt());
199 200
200 call_stats_->DeregisterStatsObserver(&stats_observer); 201 call_stats_->DeregisterStatsObserver(&stats_observer);
201 } 202 }
202 203
203 } // namespace webrtc 204 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video_engine/call_stats.cc ('k') | webrtc/video_engine/vie_remb.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698