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

Side by Side Diff: webrtc/video/end_to_end_tests.cc

Issue 2760623002: Probing EndToEndTests. (Closed)
Patch Set: Created 3 years, 9 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
« no previous file with comments | « webrtc/test/rtp_rtcp_observer.h ('k') | no next file » | 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) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 #include <algorithm> 10 #include <algorithm>
(...skipping 2178 matching lines...) Expand 10 before | Expand all | Expand 10 after
2189 test::PacketTransport* receive_transport_; 2189 test::PacketTransport* receive_transport_;
2190 rtc::Event stop_event_; 2190 rtc::Event stop_event_;
2191 rtc::PlatformThread poller_thread_; 2191 rtc::PlatformThread poller_thread_;
2192 TestState state_; 2192 TestState state_;
2193 RateLimiter retransmission_rate_limiter_; 2193 RateLimiter retransmission_rate_limiter_;
2194 } test; 2194 } test;
2195 2195
2196 RunBaseTest(&test); 2196 RunBaseTest(&test);
2197 } 2197 }
2198 2198
2199 class ProbingTest : public test::EndToEndTest {
2200 public:
2201 explicit ProbingTest(int start_bitrate_bps)
2202 : clock_(Clock::GetRealTimeClock()),
2203 start_bitrate_bps_(start_bitrate_bps),
2204 sender_call_(nullptr) {}
2205
2206 ~ProbingTest() {}
2207
2208 Call::Config GetSenderCallConfig() override {
2209 Call::Config config(&event_log_);
2210 config.bitrate_config.start_bitrate_bps = start_bitrate_bps_;
2211 return config;
2212 }
2213
2214 void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
2215 sender_call_ = sender_call;
2216 }
2217
2218 protected:
2219 Clock* const clock_;
2220 int start_bitrate_bps_;
stefan-webrtc 2017/03/17 13:14:26 const
philipel 2017/03/17 13:33:23 Done.
2221 Call* sender_call_;
2222 int state_ = 0;
stefan-webrtc 2017/03/17 13:14:26 Use an enum for readability. It also seems like th
philipel 2017/03/17 13:33:23 I don't really think an enum adds anything in term
2223 };
2224
2225 TEST_F(EndToEndTest, InitialProbing) {
2226 class InitialProbingTest : public ProbingTest {
2227 public:
2228 InitialProbingTest() : ProbingTest(300000) {}
2229
2230 void PerformTest() override {
2231 int64_t test_end_ms = clock_->TimeInMilliseconds() + kTimeoutMs;
2232 do {
2233 if (test_end_ms - clock_->TimeInMilliseconds() <= 0) {
stefan-webrtc 2017/03/17 13:14:26 I would have written this: if (clock_->TimeInMilli
philipel 2017/03/17 13:33:23 Agree, fixed.
2234 ADD_FAILURE() << "Timed out while waiting for initial probing.";
2235 break;
2236 }
2237
2238 Call::Stats stats = sender_call_->GetStats();
2239 // Initial probing is done with a x3 and x6 multiplier of the start
2240 // bitrate, so a x5 multiplier is a high enough threshold.
2241 if (stats.send_bandwidth_bps > 5 * 300000)
2242 break;
2243 } while (!observation_complete_.Wait(20));
2244 }
2245
2246 private:
2247 const int kTimeoutMs = 1000;
2248 } test;
2249
2250 RunBaseTest(&test);
2251 }
2252
2253 TEST_F(EndToEndTest, TriggerMidCallProbing) {
2254 class TriggerMidCallProbingTest : public ProbingTest {
2255 public:
2256 TriggerMidCallProbingTest() : ProbingTest(300000) {}
2257
2258 void PerformTest() override {
2259 int64_t test_end_ms = clock_->TimeInMilliseconds() + kTimeoutMs;
2260 do {
2261 if (test_end_ms - clock_->TimeInMilliseconds() <= 0) {
2262 ADD_FAILURE() << "Timed out while waiting for mid-call probing.";
2263 break;
2264 }
2265
2266 Call::Stats stats = sender_call_->GetStats();
2267
2268 switch (state_) {
2269 case 0:
2270 if (stats.send_bandwidth_bps > 5 * 300000) {
2271 Call::Config::BitrateConfig bitrate_config;
2272 bitrate_config.max_bitrate_bps = 100000;
2273 sender_call_->SetBitrateConfig(bitrate_config);
2274 ++state_;
2275 }
2276 break;
2277 case 1:
2278 if (stats.send_bandwidth_bps < 110000) {
2279 Call::Config::BitrateConfig bitrate_config;
2280 bitrate_config.max_bitrate_bps = 2500000;
2281 sender_call_->SetBitrateConfig(bitrate_config);
2282 ++state_;
2283 }
2284 break;
2285 case 2:
2286 if (stats.send_bandwidth_bps > 2300000)
2287 observation_complete_.Set();
2288 break;
2289 }
2290 } while (!observation_complete_.Wait(20));
2291 }
2292
2293 private:
2294 const int kTimeoutMs = 5000;
2295 } test;
2296
2297 RunBaseTest(&test);
2298 }
2299
2199 TEST_F(EndToEndTest, VerifyNackStats) { 2300 TEST_F(EndToEndTest, VerifyNackStats) {
2200 static const int kPacketNumberToDrop = 200; 2301 static const int kPacketNumberToDrop = 200;
2201 class NackObserver : public test::EndToEndTest { 2302 class NackObserver : public test::EndToEndTest {
2202 public: 2303 public:
2203 NackObserver() 2304 NackObserver()
2204 : EndToEndTest(kLongTimeoutMs), 2305 : EndToEndTest(kLongTimeoutMs),
2205 sent_rtp_packets_(0), 2306 sent_rtp_packets_(0),
2206 dropped_rtp_packet_(0), 2307 dropped_rtp_packet_(0),
2207 dropped_rtp_packet_requested_(false), 2308 dropped_rtp_packet_requested_(false),
2208 send_stream_(nullptr), 2309 send_stream_(nullptr),
(...skipping 1971 matching lines...) Expand 10 before | Expand all | Expand 10 after
4180 std::unique_ptr<VideoEncoder> encoder_; 4281 std::unique_ptr<VideoEncoder> encoder_;
4181 std::unique_ptr<VideoDecoder> decoder_; 4282 std::unique_ptr<VideoDecoder> decoder_;
4182 rtc::CriticalSection crit_; 4283 rtc::CriticalSection crit_;
4183 int recorded_frames_ GUARDED_BY(crit_); 4284 int recorded_frames_ GUARDED_BY(crit_);
4184 } test(this); 4285 } test(this);
4185 4286
4186 RunBaseTest(&test); 4287 RunBaseTest(&test);
4187 } 4288 }
4188 4289
4189 } // namespace webrtc 4290 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/test/rtp_rtcp_observer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698