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

Side by Side Diff: webrtc/pc/peerconnectionendtoend_unittest.cc

Issue 2848563002: Run some peer connection end-to-end tests with an empty audio decoder factory (Closed)
Patch Set: Created 3 years, 7 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 | « no previous file | 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 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright 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 10
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 Negotiate(); 283 Negotiate();
284 WaitForCallEstablished(); 284 WaitForCallEstablished();
285 } 285 }
286 #endif // !defined(ADDRESS_SANITIZER) 286 #endif // !defined(ADDRESS_SANITIZER)
287 287
288 #ifdef HAVE_SCTP 288 #ifdef HAVE_SCTP
289 // Verifies that a DataChannel created before the negotiation can transition to 289 // Verifies that a DataChannel created before the negotiation can transition to
290 // "OPEN" and transfer data. 290 // "OPEN" and transfer data.
291 TEST_F(PeerConnectionEndToEndTest, CreateDataChannelBeforeNegotiate) { 291 TEST_F(PeerConnectionEndToEndTest, CreateDataChannelBeforeNegotiate) {
292 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(), 292 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(),
293 webrtc::CreateBuiltinAudioDecoderFactory()); 293 webrtc::MockAudioDecoderFactory::CreateEmptyFactory());
294 294
295 webrtc::DataChannelInit init; 295 webrtc::DataChannelInit init;
296 rtc::scoped_refptr<DataChannelInterface> caller_dc( 296 rtc::scoped_refptr<DataChannelInterface> caller_dc(
297 caller_->CreateDataChannel("data", init)); 297 caller_->CreateDataChannel("data", init));
298 rtc::scoped_refptr<DataChannelInterface> callee_dc( 298 rtc::scoped_refptr<DataChannelInterface> callee_dc(
299 callee_->CreateDataChannel("data", init)); 299 callee_->CreateDataChannel("data", init));
300 300
301 Negotiate(); 301 Negotiate();
302 WaitForConnection(); 302 WaitForConnection();
303 303
304 WaitForDataChannelsToOpen(caller_dc, callee_signaled_data_channels_, 0); 304 WaitForDataChannelsToOpen(caller_dc, callee_signaled_data_channels_, 0);
305 WaitForDataChannelsToOpen(callee_dc, caller_signaled_data_channels_, 0); 305 WaitForDataChannelsToOpen(callee_dc, caller_signaled_data_channels_, 0);
306 306
307 TestDataChannelSendAndReceive(caller_dc, callee_signaled_data_channels_[0]); 307 TestDataChannelSendAndReceive(caller_dc, callee_signaled_data_channels_[0]);
308 TestDataChannelSendAndReceive(callee_dc, caller_signaled_data_channels_[0]); 308 TestDataChannelSendAndReceive(callee_dc, caller_signaled_data_channels_[0]);
309 309
310 CloseDataChannels(caller_dc, callee_signaled_data_channels_, 0); 310 CloseDataChannels(caller_dc, callee_signaled_data_channels_, 0);
311 CloseDataChannels(callee_dc, caller_signaled_data_channels_, 0); 311 CloseDataChannels(callee_dc, caller_signaled_data_channels_, 0);
312 } 312 }
313 313
314 // Verifies that a DataChannel created after the negotiation can transition to 314 // Verifies that a DataChannel created after the negotiation can transition to
315 // "OPEN" and transfer data. 315 // "OPEN" and transfer data.
316 TEST_F(PeerConnectionEndToEndTest, CreateDataChannelAfterNegotiate) { 316 TEST_F(PeerConnectionEndToEndTest, CreateDataChannelAfterNegotiate) {
317 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(), 317 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(),
318 webrtc::CreateBuiltinAudioDecoderFactory()); 318 webrtc::MockAudioDecoderFactory::CreateEmptyFactory());
319 319
320 webrtc::DataChannelInit init; 320 webrtc::DataChannelInit init;
321 321
322 // This DataChannel is for creating the data content in the negotiation. 322 // This DataChannel is for creating the data content in the negotiation.
323 rtc::scoped_refptr<DataChannelInterface> dummy( 323 rtc::scoped_refptr<DataChannelInterface> dummy(
324 caller_->CreateDataChannel("data", init)); 324 caller_->CreateDataChannel("data", init));
325 Negotiate(); 325 Negotiate();
326 WaitForConnection(); 326 WaitForConnection();
327 327
328 // Wait for the data channel created pre-negotiation to be opened. 328 // Wait for the data channel created pre-negotiation to be opened.
(...skipping 11 matching lines...) Expand all
340 TestDataChannelSendAndReceive(caller_dc, callee_signaled_data_channels_[1]); 340 TestDataChannelSendAndReceive(caller_dc, callee_signaled_data_channels_[1]);
341 TestDataChannelSendAndReceive(callee_dc, caller_signaled_data_channels_[0]); 341 TestDataChannelSendAndReceive(callee_dc, caller_signaled_data_channels_[0]);
342 342
343 CloseDataChannels(caller_dc, callee_signaled_data_channels_, 1); 343 CloseDataChannels(caller_dc, callee_signaled_data_channels_, 1);
344 CloseDataChannels(callee_dc, caller_signaled_data_channels_, 0); 344 CloseDataChannels(callee_dc, caller_signaled_data_channels_, 0);
345 } 345 }
346 346
347 // Verifies that DataChannel IDs are even/odd based on the DTLS roles. 347 // Verifies that DataChannel IDs are even/odd based on the DTLS roles.
348 TEST_F(PeerConnectionEndToEndTest, DataChannelIdAssignment) { 348 TEST_F(PeerConnectionEndToEndTest, DataChannelIdAssignment) {
349 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(), 349 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(),
350 webrtc::CreateBuiltinAudioDecoderFactory()); 350 webrtc::MockAudioDecoderFactory::CreateEmptyFactory());
351 351
352 webrtc::DataChannelInit init; 352 webrtc::DataChannelInit init;
353 rtc::scoped_refptr<DataChannelInterface> caller_dc_1( 353 rtc::scoped_refptr<DataChannelInterface> caller_dc_1(
354 caller_->CreateDataChannel("data", init)); 354 caller_->CreateDataChannel("data", init));
355 rtc::scoped_refptr<DataChannelInterface> callee_dc_1( 355 rtc::scoped_refptr<DataChannelInterface> callee_dc_1(
356 callee_->CreateDataChannel("data", init)); 356 callee_->CreateDataChannel("data", init));
357 357
358 Negotiate(); 358 Negotiate();
359 WaitForConnection(); 359 WaitForConnection();
360 360
361 EXPECT_EQ(1U, caller_dc_1->id() % 2); 361 EXPECT_EQ(1U, caller_dc_1->id() % 2);
362 EXPECT_EQ(0U, callee_dc_1->id() % 2); 362 EXPECT_EQ(0U, callee_dc_1->id() % 2);
363 363
364 rtc::scoped_refptr<DataChannelInterface> caller_dc_2( 364 rtc::scoped_refptr<DataChannelInterface> caller_dc_2(
365 caller_->CreateDataChannel("data", init)); 365 caller_->CreateDataChannel("data", init));
366 rtc::scoped_refptr<DataChannelInterface> callee_dc_2( 366 rtc::scoped_refptr<DataChannelInterface> callee_dc_2(
367 callee_->CreateDataChannel("data", init)); 367 callee_->CreateDataChannel("data", init));
368 368
369 EXPECT_EQ(1U, caller_dc_2->id() % 2); 369 EXPECT_EQ(1U, caller_dc_2->id() % 2);
370 EXPECT_EQ(0U, callee_dc_2->id() % 2); 370 EXPECT_EQ(0U, callee_dc_2->id() % 2);
371 } 371 }
372 372
373 // Verifies that the message is received by the right remote DataChannel when 373 // Verifies that the message is received by the right remote DataChannel when
374 // there are multiple DataChannels. 374 // there are multiple DataChannels.
375 TEST_F(PeerConnectionEndToEndTest, 375 TEST_F(PeerConnectionEndToEndTest,
376 MessageTransferBetweenTwoPairsOfDataChannels) { 376 MessageTransferBetweenTwoPairsOfDataChannels) {
377 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(), 377 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(),
378 webrtc::CreateBuiltinAudioDecoderFactory()); 378 webrtc::MockAudioDecoderFactory::CreateEmptyFactory());
379 379
380 webrtc::DataChannelInit init; 380 webrtc::DataChannelInit init;
381 381
382 rtc::scoped_refptr<DataChannelInterface> caller_dc_1( 382 rtc::scoped_refptr<DataChannelInterface> caller_dc_1(
383 caller_->CreateDataChannel("data", init)); 383 caller_->CreateDataChannel("data", init));
384 rtc::scoped_refptr<DataChannelInterface> caller_dc_2( 384 rtc::scoped_refptr<DataChannelInterface> caller_dc_2(
385 caller_->CreateDataChannel("data", init)); 385 caller_->CreateDataChannel("data", init));
386 386
387 Negotiate(); 387 Negotiate();
388 WaitForConnection(); 388 WaitForConnection();
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 // a channel has been previously closed (webrtc issue 3778). 490 // a channel has been previously closed (webrtc issue 3778).
491 // This previously failed because the new channel re-uses the ID of the closed 491 // This previously failed because the new channel re-uses the ID of the closed
492 // channel, and the closed channel was incorrectly still assigned to the id. 492 // channel, and the closed channel was incorrectly still assigned to the id.
493 // TODO(deadbeef): This is disabled because there's currently a race condition 493 // TODO(deadbeef): This is disabled because there's currently a race condition
494 // caused by the fact that a data channel signals that it's closed before it 494 // caused by the fact that a data channel signals that it's closed before it
495 // really is. Re-enable this test once that's fixed. 495 // really is. Re-enable this test once that's fixed.
496 // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=4453 496 // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=4453
497 TEST_F(PeerConnectionEndToEndTest, 497 TEST_F(PeerConnectionEndToEndTest,
498 DISABLED_DataChannelFromOpenWorksAfterClose) { 498 DISABLED_DataChannelFromOpenWorksAfterClose) {
499 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(), 499 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(),
500 webrtc::CreateBuiltinAudioDecoderFactory()); 500 webrtc::MockAudioDecoderFactory::CreateEmptyFactory());
501 501
502 webrtc::DataChannelInit init; 502 webrtc::DataChannelInit init;
503 rtc::scoped_refptr<DataChannelInterface> caller_dc( 503 rtc::scoped_refptr<DataChannelInterface> caller_dc(
504 caller_->CreateDataChannel("data", init)); 504 caller_->CreateDataChannel("data", init));
505 505
506 Negotiate(); 506 Negotiate();
507 WaitForConnection(); 507 WaitForConnection();
508 508
509 WaitForDataChannelsToOpen(caller_dc, callee_signaled_data_channels_, 0); 509 WaitForDataChannelsToOpen(caller_dc, callee_signaled_data_channels_, 0);
510 CloseDataChannels(caller_dc, callee_signaled_data_channels_, 0); 510 CloseDataChannels(caller_dc, callee_signaled_data_channels_, 0);
511 511
512 // Create a new channel and ensure it works after closing the previous one. 512 // Create a new channel and ensure it works after closing the previous one.
513 caller_dc = caller_->CreateDataChannel("data2", init); 513 caller_dc = caller_->CreateDataChannel("data2", init);
514 514
515 WaitForDataChannelsToOpen(caller_dc, callee_signaled_data_channels_, 1); 515 WaitForDataChannelsToOpen(caller_dc, callee_signaled_data_channels_, 1);
516 TestDataChannelSendAndReceive(caller_dc, callee_signaled_data_channels_[1]); 516 TestDataChannelSendAndReceive(caller_dc, callee_signaled_data_channels_[1]);
517 517
518 CloseDataChannels(caller_dc, callee_signaled_data_channels_, 1); 518 CloseDataChannels(caller_dc, callee_signaled_data_channels_, 1);
519 } 519 }
520 520
521 // This tests that if a data channel is closed remotely while not referenced 521 // This tests that if a data channel is closed remotely while not referenced
522 // by the application (meaning only the PeerConnection contributes to its 522 // by the application (meaning only the PeerConnection contributes to its
523 // reference count), no memory access violation will occur. 523 // reference count), no memory access violation will occur.
524 // See: https://code.google.com/p/chromium/issues/detail?id=565048 524 // See: https://code.google.com/p/chromium/issues/detail?id=565048
525 TEST_F(PeerConnectionEndToEndTest, CloseDataChannelRemotelyWhileNotReferenced) { 525 TEST_F(PeerConnectionEndToEndTest, CloseDataChannelRemotelyWhileNotReferenced) {
526 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(), 526 CreatePcs(nullptr, webrtc::CreateBuiltinAudioEncoderFactory(),
527 webrtc::CreateBuiltinAudioDecoderFactory()); 527 webrtc::MockAudioDecoderFactory::CreateEmptyFactory());
528 528
529 webrtc::DataChannelInit init; 529 webrtc::DataChannelInit init;
530 rtc::scoped_refptr<DataChannelInterface> caller_dc( 530 rtc::scoped_refptr<DataChannelInterface> caller_dc(
531 caller_->CreateDataChannel("data", init)); 531 caller_->CreateDataChannel("data", init));
532 532
533 Negotiate(); 533 Negotiate();
534 WaitForConnection(); 534 WaitForConnection();
535 535
536 WaitForDataChannelsToOpen(caller_dc, callee_signaled_data_channels_, 0); 536 WaitForDataChannelsToOpen(caller_dc, callee_signaled_data_channels_, 0);
537 // This removes the reference to the remote data channel that we hold. 537 // This removes the reference to the remote data channel that we hold.
538 callee_signaled_data_channels_.clear(); 538 callee_signaled_data_channels_.clear();
539 caller_dc->Close(); 539 caller_dc->Close();
540 EXPECT_EQ_WAIT(DataChannelInterface::kClosed, caller_dc->state(), kMaxWait); 540 EXPECT_EQ_WAIT(DataChannelInterface::kClosed, caller_dc->state(), kMaxWait);
541 541
542 // Wait for a bit longer so the remote data channel will receive the 542 // Wait for a bit longer so the remote data channel will receive the
543 // close message and be destroyed. 543 // close message and be destroyed.
544 rtc::Thread::Current()->ProcessMessages(100); 544 rtc::Thread::Current()->ProcessMessages(100);
545 } 545 }
546 #endif // HAVE_SCTP 546 #endif // HAVE_SCTP
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698