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

Side by Side Diff: webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc

Issue 2782563003: Replace Clock with timeutils in AudioEncoder. (Closed)
Patch Set: Fix for failing unittest. Created 3 years, 8 months 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 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
11 #include <utility> 11 #include <utility>
12 #include <vector> 12 #include <vector>
13 13
14 #include "webrtc/base/fakeclock.h"
14 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h" 15 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h"
15 #include "webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adapto r_impl.h" 16 #include "webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adapto r_impl.h"
16 #include "webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_controller .h" 17 #include "webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_controller .h"
17 #include "webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_controller _manager.h" 18 #include "webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_controller _manager.h"
18 #include "webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_debug_dump _writer.h" 19 #include "webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_debug_dump _writer.h"
19 #include "webrtc/test/gtest.h" 20 #include "webrtc/test/gtest.h"
20 21
21 namespace webrtc { 22 namespace webrtc {
22 23
23 using ::testing::_; 24 using ::testing::_;
(...skipping 24 matching lines...) Expand all
48 arg.uplink_packet_loss_fraction == 49 arg.uplink_packet_loss_fraction ==
49 config.uplink_packet_loss_fraction && 50 config.uplink_packet_loss_fraction &&
50 arg.enable_fec == config.enable_fec && 51 arg.enable_fec == config.enable_fec &&
51 arg.enable_dtx == config.enable_dtx && 52 arg.enable_dtx == config.enable_dtx &&
52 arg.num_channels == config.num_channels; 53 arg.num_channels == config.num_channels;
53 } 54 }
54 55
55 struct AudioNetworkAdaptorStates { 56 struct AudioNetworkAdaptorStates {
56 std::unique_ptr<AudioNetworkAdaptorImpl> audio_network_adaptor; 57 std::unique_ptr<AudioNetworkAdaptorImpl> audio_network_adaptor;
57 std::vector<std::unique_ptr<MockController>> mock_controllers; 58 std::vector<std::unique_ptr<MockController>> mock_controllers;
58 std::unique_ptr<SimulatedClock> simulated_clock;
59 std::unique_ptr<MockRtcEventLog> event_log; 59 std::unique_ptr<MockRtcEventLog> event_log;
60 MockDebugDumpWriter* mock_debug_dump_writer; 60 MockDebugDumpWriter* mock_debug_dump_writer;
61 }; 61 };
62 62
63 AudioNetworkAdaptorStates CreateAudioNetworkAdaptor() { 63 AudioNetworkAdaptorStates CreateAudioNetworkAdaptor() {
64 AudioNetworkAdaptorStates states; 64 AudioNetworkAdaptorStates states;
65 std::vector<Controller*> controllers; 65 std::vector<Controller*> controllers;
66 for (size_t i = 0; i < kNumControllers; ++i) { 66 for (size_t i = 0; i < kNumControllers; ++i) {
67 auto controller = 67 auto controller =
68 std::unique_ptr<MockController>(new NiceMock<MockController>()); 68 std::unique_ptr<MockController>(new NiceMock<MockController>());
69 EXPECT_CALL(*controller, Die()); 69 EXPECT_CALL(*controller, Die());
70 controllers.push_back(controller.get()); 70 controllers.push_back(controller.get());
71 states.mock_controllers.push_back(std::move(controller)); 71 states.mock_controllers.push_back(std::move(controller));
72 } 72 }
73 73
74 auto controller_manager = std::unique_ptr<MockControllerManager>( 74 auto controller_manager = std::unique_ptr<MockControllerManager>(
75 new NiceMock<MockControllerManager>()); 75 new NiceMock<MockControllerManager>());
76 76
77 EXPECT_CALL(*controller_manager, Die()); 77 EXPECT_CALL(*controller_manager, Die());
78 EXPECT_CALL(*controller_manager, GetControllers()) 78 EXPECT_CALL(*controller_manager, GetControllers())
79 .WillRepeatedly(Return(controllers)); 79 .WillRepeatedly(Return(controllers));
80 EXPECT_CALL(*controller_manager, GetSortedControllers(_)) 80 EXPECT_CALL(*controller_manager, GetSortedControllers(_))
81 .WillRepeatedly(Return(controllers)); 81 .WillRepeatedly(Return(controllers));
82 82
83 states.simulated_clock.reset(new SimulatedClock(kClockInitialTimeMs * 1000));
84 states.event_log.reset(new NiceMock<MockRtcEventLog>()); 83 states.event_log.reset(new NiceMock<MockRtcEventLog>());
85 84
86 auto debug_dump_writer = 85 auto debug_dump_writer =
87 std::unique_ptr<MockDebugDumpWriter>(new NiceMock<MockDebugDumpWriter>()); 86 std::unique_ptr<MockDebugDumpWriter>(new NiceMock<MockDebugDumpWriter>());
88 EXPECT_CALL(*debug_dump_writer, Die()); 87 EXPECT_CALL(*debug_dump_writer, Die());
89 states.mock_debug_dump_writer = debug_dump_writer.get(); 88 states.mock_debug_dump_writer = debug_dump_writer.get();
90 89
91 AudioNetworkAdaptorImpl::Config config; 90 AudioNetworkAdaptorImpl::Config config;
92 config.clock = states.simulated_clock.get();
93 config.event_log = states.event_log.get(); 91 config.event_log = states.event_log.get();
94 // AudioNetworkAdaptorImpl governs the lifetime of controller manager. 92 // AudioNetworkAdaptorImpl governs the lifetime of controller manager.
95 states.audio_network_adaptor.reset(new AudioNetworkAdaptorImpl( 93 states.audio_network_adaptor.reset(new AudioNetworkAdaptorImpl(
96 config, 94 config,
97 std::move(controller_manager), std::move(debug_dump_writer))); 95 std::move(controller_manager), std::move(debug_dump_writer)));
98 96
99 return states; 97 return states;
100 } 98 }
101 99
102 void SetExpectCallToUpdateNetworkMetrics( 100 void SetExpectCallToUpdateNetworkMetrics(
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 TEST(AudioNetworkAdaptorImplTest, 171 TEST(AudioNetworkAdaptorImplTest,
174 MakeDecisionIsCalledOnGetEncoderRuntimeConfig) { 172 MakeDecisionIsCalledOnGetEncoderRuntimeConfig) {
175 auto states = CreateAudioNetworkAdaptor(); 173 auto states = CreateAudioNetworkAdaptor();
176 for (auto& mock_controller : states.mock_controllers) 174 for (auto& mock_controller : states.mock_controllers)
177 EXPECT_CALL(*mock_controller, MakeDecision(_)); 175 EXPECT_CALL(*mock_controller, MakeDecision(_));
178 states.audio_network_adaptor->GetEncoderRuntimeConfig(); 176 states.audio_network_adaptor->GetEncoderRuntimeConfig();
179 } 177 }
180 178
181 TEST(AudioNetworkAdaptorImplTest, 179 TEST(AudioNetworkAdaptorImplTest,
182 DumpEncoderRuntimeConfigIsCalledOnGetEncoderRuntimeConfig) { 180 DumpEncoderRuntimeConfigIsCalledOnGetEncoderRuntimeConfig) {
181 rtc::ScopedFakeClock fake_clock;
182 fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(kClockInitialTimeMs));
183 auto states = CreateAudioNetworkAdaptor(); 183 auto states = CreateAudioNetworkAdaptor();
184
185 AudioEncoderRuntimeConfig config; 184 AudioEncoderRuntimeConfig config;
186 config.bitrate_bps = rtc::Optional<int>(32000); 185 config.bitrate_bps = rtc::Optional<int>(32000);
187 config.enable_fec = rtc::Optional<bool>(true); 186 config.enable_fec = rtc::Optional<bool>(true);
188 187
189 EXPECT_CALL(*states.mock_controllers[0], MakeDecision(_)) 188 EXPECT_CALL(*states.mock_controllers[0], MakeDecision(_))
190 .WillOnce(SetArgPointee<0>(config)); 189 .WillOnce(SetArgPointee<0>(config));
191 190
192 EXPECT_CALL(*states.mock_debug_dump_writer, 191 EXPECT_CALL(*states.mock_debug_dump_writer,
193 DumpEncoderRuntimeConfig(EncoderRuntimeConfigIs(config), 192 DumpEncoderRuntimeConfig(EncoderRuntimeConfigIs(config),
194 kClockInitialTimeMs)); 193 kClockInitialTimeMs));
195 states.audio_network_adaptor->GetEncoderRuntimeConfig(); 194 states.audio_network_adaptor->GetEncoderRuntimeConfig();
196 } 195 }
197 196
198 TEST(AudioNetworkAdaptorImplTest, 197 TEST(AudioNetworkAdaptorImplTest,
199 DumpNetworkMetricsIsCalledOnSetNetworkMetrics) { 198 DumpNetworkMetricsIsCalledOnSetNetworkMetrics) {
199 rtc::ScopedFakeClock fake_clock;
200 fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(kClockInitialTimeMs));
201
200 auto states = CreateAudioNetworkAdaptor(); 202 auto states = CreateAudioNetworkAdaptor();
201 203
202 constexpr int kBandwidth = 16000; 204 constexpr int kBandwidth = 16000;
203 constexpr float kPacketLoss = 0.7f; 205 constexpr float kPacketLoss = 0.7f;
204 const auto kRecoverablePacketLoss = 0.2f; 206 const auto kRecoverablePacketLoss = 0.2f;
205 constexpr int kRtt = 100; 207 constexpr int kRtt = 100;
206 constexpr int kTargetAudioBitrate = 15000; 208 constexpr int kTargetAudioBitrate = 15000;
207 constexpr size_t kOverhead = 64; 209 constexpr size_t kOverhead = 64;
208 210
209 Controller::NetworkMetrics check; 211 Controller::NetworkMetrics check;
210 check.uplink_bandwidth_bps = rtc::Optional<int>(kBandwidth); 212 check.uplink_bandwidth_bps = rtc::Optional<int>(kBandwidth);
211 int64_t timestamp_check = kClockInitialTimeMs; 213 int64_t timestamp_check = kClockInitialTimeMs;
212 214
213 EXPECT_CALL(*states.mock_debug_dump_writer, 215 EXPECT_CALL(*states.mock_debug_dump_writer,
214 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check)); 216 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
215 states.audio_network_adaptor->SetUplinkBandwidth(kBandwidth); 217 states.audio_network_adaptor->SetUplinkBandwidth(kBandwidth);
216 218
217 states.simulated_clock->AdvanceTimeMilliseconds(100); 219 fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(100));
218 timestamp_check += 100; 220 timestamp_check += 100;
219 check.uplink_packet_loss_fraction = rtc::Optional<float>(kPacketLoss); 221 check.uplink_packet_loss_fraction = rtc::Optional<float>(kPacketLoss);
220 EXPECT_CALL(*states.mock_debug_dump_writer, 222 EXPECT_CALL(*states.mock_debug_dump_writer,
221 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check)); 223 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
222 states.audio_network_adaptor->SetUplinkPacketLossFraction(kPacketLoss); 224 states.audio_network_adaptor->SetUplinkPacketLossFraction(kPacketLoss);
223 225
224 states.simulated_clock->AdvanceTimeMilliseconds(50); 226 fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(50));
225 timestamp_check += 50; 227 timestamp_check += 50;
226 check.uplink_recoverable_packet_loss_fraction = 228 check.uplink_recoverable_packet_loss_fraction =
227 rtc::Optional<float>(kRecoverablePacketLoss); 229 rtc::Optional<float>(kRecoverablePacketLoss);
228 EXPECT_CALL(*states.mock_debug_dump_writer, 230 EXPECT_CALL(*states.mock_debug_dump_writer,
229 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check)); 231 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
230 states.audio_network_adaptor->SetUplinkRecoverablePacketLossFraction( 232 states.audio_network_adaptor->SetUplinkRecoverablePacketLossFraction(
231 kRecoverablePacketLoss); 233 kRecoverablePacketLoss);
232 234
233 states.simulated_clock->AdvanceTimeMilliseconds(200); 235 fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(200));
234 timestamp_check += 200; 236 timestamp_check += 200;
235 check.rtt_ms = rtc::Optional<int>(kRtt); 237 check.rtt_ms = rtc::Optional<int>(kRtt);
236 EXPECT_CALL(*states.mock_debug_dump_writer, 238 EXPECT_CALL(*states.mock_debug_dump_writer,
237 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check)); 239 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
238 states.audio_network_adaptor->SetRtt(kRtt); 240 states.audio_network_adaptor->SetRtt(kRtt);
239 241
240 states.simulated_clock->AdvanceTimeMilliseconds(150); 242 fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(150));
241 timestamp_check += 150; 243 timestamp_check += 150;
242 check.target_audio_bitrate_bps = rtc::Optional<int>(kTargetAudioBitrate); 244 check.target_audio_bitrate_bps = rtc::Optional<int>(kTargetAudioBitrate);
243 EXPECT_CALL(*states.mock_debug_dump_writer, 245 EXPECT_CALL(*states.mock_debug_dump_writer,
244 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check)); 246 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
245 states.audio_network_adaptor->SetTargetAudioBitrate(kTargetAudioBitrate); 247 states.audio_network_adaptor->SetTargetAudioBitrate(kTargetAudioBitrate);
246 248
247 states.simulated_clock->AdvanceTimeMilliseconds(50); 249 fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(50));
248 timestamp_check += 50; 250 timestamp_check += 50;
249 check.overhead_bytes_per_packet = rtc::Optional<size_t>(kOverhead); 251 check.overhead_bytes_per_packet = rtc::Optional<size_t>(kOverhead);
250 EXPECT_CALL(*states.mock_debug_dump_writer, 252 EXPECT_CALL(*states.mock_debug_dump_writer,
251 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check)); 253 DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
252 states.audio_network_adaptor->SetOverhead(kOverhead); 254 states.audio_network_adaptor->SetOverhead(kOverhead);
253 } 255 }
254 256
255 TEST(AudioNetworkAdaptorImplTest, LogRuntimeConfigOnGetEncoderRuntimeConfig) { 257 TEST(AudioNetworkAdaptorImplTest, LogRuntimeConfigOnGetEncoderRuntimeConfig) {
256 auto states = CreateAudioNetworkAdaptor(); 258 auto states = CreateAudioNetworkAdaptor();
257 259
258 AudioEncoderRuntimeConfig config; 260 AudioEncoderRuntimeConfig config;
259 config.bitrate_bps = rtc::Optional<int>(32000); 261 config.bitrate_bps = rtc::Optional<int>(32000);
260 config.enable_fec = rtc::Optional<bool>(true); 262 config.enable_fec = rtc::Optional<bool>(true);
261 263
262 EXPECT_CALL(*states.mock_controllers[0], MakeDecision(_)) 264 EXPECT_CALL(*states.mock_controllers[0], MakeDecision(_))
263 .WillOnce(SetArgPointee<0>(config)); 265 .WillOnce(SetArgPointee<0>(config));
264 266
265 EXPECT_CALL(*states.event_log, 267 EXPECT_CALL(*states.event_log,
266 LogAudioNetworkAdaptation(EncoderRuntimeConfigIs(config))) 268 LogAudioNetworkAdaptation(EncoderRuntimeConfigIs(config)))
267 .Times(1); 269 .Times(1);
268 states.audio_network_adaptor->GetEncoderRuntimeConfig(); 270 states.audio_network_adaptor->GetEncoderRuntimeConfig();
269 } 271 }
270 272
271 } // namespace webrtc 273 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698