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

Side by Side Diff: webrtc/api/datachannel_unittest.cc

Issue 2564333002: Reland of: Separating SCTP code from BaseChannel/MediaChannel. (Closed)
Patch Set: Merge with master. Created 3 years, 11 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/api/datachannel.cc ('k') | webrtc/api/peerconnection.cc » ('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 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 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 webrtc::DataBuffer buffer("some data"); 322 webrtc::DataBuffer buffer("some data");
323 ASSERT_TRUE(dc->Send(buffer)); 323 ASSERT_TRUE(dc->Send(buffer));
324 EXPECT_TRUE(provider_->last_send_data_params().ordered); 324 EXPECT_TRUE(provider_->last_send_data_params().ordered);
325 325
326 // Emulates receiving an OPEN_ACK message. 326 // Emulates receiving an OPEN_ACK message.
327 cricket::ReceiveDataParams params; 327 cricket::ReceiveDataParams params;
328 params.ssrc = init.id; 328 params.ssrc = init.id;
329 params.type = cricket::DMT_CONTROL; 329 params.type = cricket::DMT_CONTROL;
330 rtc::CopyOnWriteBuffer payload; 330 rtc::CopyOnWriteBuffer payload;
331 webrtc::WriteDataChannelOpenAckMessage(&payload); 331 webrtc::WriteDataChannelOpenAckMessage(&payload);
332 dc->OnDataReceived(NULL, params, payload); 332 dc->OnDataReceived(params, payload);
333 333
334 // Sends another message and verifies it's unordered. 334 // Sends another message and verifies it's unordered.
335 ASSERT_TRUE(dc->Send(buffer)); 335 ASSERT_TRUE(dc->Send(buffer));
336 EXPECT_FALSE(provider_->last_send_data_params().ordered); 336 EXPECT_FALSE(provider_->last_send_data_params().ordered);
337 } 337 }
338 338
339 // Tests that an unordered DataChannel sends unordered data after any DATA 339 // Tests that an unordered DataChannel sends unordered data after any DATA
340 // message is received. 340 // message is received.
341 TEST_F(SctpDataChannelTest, SendUnorderedAfterReceiveData) { 341 TEST_F(SctpDataChannelTest, SendUnorderedAfterReceiveData) {
342 SetChannelReady(); 342 SetChannelReady();
343 webrtc::InternalDataChannelInit init; 343 webrtc::InternalDataChannelInit init;
344 init.id = 1; 344 init.id = 1;
345 init.ordered = false; 345 init.ordered = false;
346 rtc::scoped_refptr<DataChannel> dc = 346 rtc::scoped_refptr<DataChannel> dc =
347 DataChannel::Create(provider_.get(), cricket::DCT_SCTP, "test1", init); 347 DataChannel::Create(provider_.get(), cricket::DCT_SCTP, "test1", init);
348 348
349 EXPECT_EQ_WAIT(webrtc::DataChannelInterface::kOpen, dc->state(), 1000); 349 EXPECT_EQ_WAIT(webrtc::DataChannelInterface::kOpen, dc->state(), 1000);
350 350
351 // Emulates receiving a DATA message. 351 // Emulates receiving a DATA message.
352 cricket::ReceiveDataParams params; 352 cricket::ReceiveDataParams params;
353 params.ssrc = init.id; 353 params.ssrc = init.id;
354 params.type = cricket::DMT_TEXT; 354 params.type = cricket::DMT_TEXT;
355 webrtc::DataBuffer buffer("data"); 355 webrtc::DataBuffer buffer("data");
356 dc->OnDataReceived(NULL, params, buffer.data); 356 dc->OnDataReceived(params, buffer.data);
357 357
358 // Sends a message and verifies it's unordered. 358 // Sends a message and verifies it's unordered.
359 ASSERT_TRUE(dc->Send(buffer)); 359 ASSERT_TRUE(dc->Send(buffer));
360 EXPECT_FALSE(provider_->last_send_data_params().ordered); 360 EXPECT_FALSE(provider_->last_send_data_params().ordered);
361 } 361 }
362 362
363 // Tests that the channel can't open until it's successfully sent the OPEN 363 // Tests that the channel can't open until it's successfully sent the OPEN
364 // message. 364 // message.
365 TEST_F(SctpDataChannelTest, OpenWaitsForOpenMesssage) { 365 TEST_F(SctpDataChannelTest, OpenWaitsForOpenMesssage) {
366 webrtc::DataBuffer buffer("foo"); 366 webrtc::DataBuffer buffer("foo");
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 // Tests that the incoming messages with wrong ssrcs are rejected. 407 // Tests that the incoming messages with wrong ssrcs are rejected.
408 TEST_F(SctpDataChannelTest, ReceiveDataWithInvalidSsrc) { 408 TEST_F(SctpDataChannelTest, ReceiveDataWithInvalidSsrc) {
409 webrtc_data_channel_->SetSctpSid(1); 409 webrtc_data_channel_->SetSctpSid(1);
410 SetChannelReady(); 410 SetChannelReady();
411 411
412 AddObserver(); 412 AddObserver();
413 413
414 cricket::ReceiveDataParams params; 414 cricket::ReceiveDataParams params;
415 params.ssrc = 0; 415 params.ssrc = 0;
416 webrtc::DataBuffer buffer("abcd"); 416 webrtc::DataBuffer buffer("abcd");
417 webrtc_data_channel_->OnDataReceived(NULL, params, buffer.data); 417 webrtc_data_channel_->OnDataReceived(params, buffer.data);
418 418
419 EXPECT_EQ(0U, observer_->messages_received()); 419 EXPECT_EQ(0U, observer_->messages_received());
420 } 420 }
421 421
422 // Tests that the incoming messages with right ssrcs are acceted. 422 // Tests that the incoming messages with right ssrcs are acceted.
423 TEST_F(SctpDataChannelTest, ReceiveDataWithValidSsrc) { 423 TEST_F(SctpDataChannelTest, ReceiveDataWithValidSsrc) {
424 webrtc_data_channel_->SetSctpSid(1); 424 webrtc_data_channel_->SetSctpSid(1);
425 SetChannelReady(); 425 SetChannelReady();
426 426
427 AddObserver(); 427 AddObserver();
428 428
429 cricket::ReceiveDataParams params; 429 cricket::ReceiveDataParams params;
430 params.ssrc = 1; 430 params.ssrc = 1;
431 webrtc::DataBuffer buffer("abcd"); 431 webrtc::DataBuffer buffer("abcd");
432 432
433 webrtc_data_channel_->OnDataReceived(NULL, params, buffer.data); 433 webrtc_data_channel_->OnDataReceived(params, buffer.data);
434 EXPECT_EQ(1U, observer_->messages_received()); 434 EXPECT_EQ(1U, observer_->messages_received());
435 } 435 }
436 436
437 // Tests that no CONTROL message is sent if the datachannel is negotiated and 437 // Tests that no CONTROL message is sent if the datachannel is negotiated and
438 // not created from an OPEN message. 438 // not created from an OPEN message.
439 TEST_F(SctpDataChannelTest, NoMsgSentIfNegotiatedAndNotFromOpenMsg) { 439 TEST_F(SctpDataChannelTest, NoMsgSentIfNegotiatedAndNotFromOpenMsg) {
440 webrtc::InternalDataChannelInit config; 440 webrtc::InternalDataChannelInit config;
441 config.id = 1; 441 config.id = 1;
442 config.negotiated = true; 442 config.negotiated = true;
443 config.open_handshake_role = webrtc::InternalDataChannelInit::kNone; 443 config.open_handshake_role = webrtc::InternalDataChannelInit::kNone;
(...skipping 21 matching lines...) Expand all
465 465
466 webrtc_data_channel_->SetSctpSid(1); 466 webrtc_data_channel_->SetSctpSid(1);
467 cricket::ReceiveDataParams params; 467 cricket::ReceiveDataParams params;
468 params.ssrc = 1; 468 params.ssrc = 1;
469 469
470 // Default values. 470 // Default values.
471 EXPECT_EQ(0U, webrtc_data_channel_->messages_received()); 471 EXPECT_EQ(0U, webrtc_data_channel_->messages_received());
472 EXPECT_EQ(0U, webrtc_data_channel_->bytes_received()); 472 EXPECT_EQ(0U, webrtc_data_channel_->bytes_received());
473 473
474 // Receive three buffers while data channel isn't open. 474 // Receive three buffers while data channel isn't open.
475 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[0].data); 475 webrtc_data_channel_->OnDataReceived(params, buffers[0].data);
476 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[1].data); 476 webrtc_data_channel_->OnDataReceived(params, buffers[1].data);
477 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[2].data); 477 webrtc_data_channel_->OnDataReceived(params, buffers[2].data);
478 EXPECT_EQ(0U, observer_->messages_received()); 478 EXPECT_EQ(0U, observer_->messages_received());
479 EXPECT_EQ(0U, webrtc_data_channel_->messages_received()); 479 EXPECT_EQ(0U, webrtc_data_channel_->messages_received());
480 EXPECT_EQ(0U, webrtc_data_channel_->bytes_received()); 480 EXPECT_EQ(0U, webrtc_data_channel_->bytes_received());
481 481
482 // Open channel and make sure everything was received. 482 // Open channel and make sure everything was received.
483 SetChannelReady(); 483 SetChannelReady();
484 size_t bytes_received = 484 size_t bytes_received =
485 buffers[0].size() + buffers[1].size() + buffers[2].size(); 485 buffers[0].size() + buffers[1].size() + buffers[2].size();
486 EXPECT_EQ(3U, observer_->messages_received()); 486 EXPECT_EQ(3U, observer_->messages_received());
487 EXPECT_EQ(3U, webrtc_data_channel_->messages_received()); 487 EXPECT_EQ(3U, webrtc_data_channel_->messages_received());
488 EXPECT_EQ(bytes_received, webrtc_data_channel_->bytes_received()); 488 EXPECT_EQ(bytes_received, webrtc_data_channel_->bytes_received());
489 489
490 // Receive three buffers while open. 490 // Receive three buffers while open.
491 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[3].data); 491 webrtc_data_channel_->OnDataReceived(params, buffers[3].data);
492 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[4].data); 492 webrtc_data_channel_->OnDataReceived(params, buffers[4].data);
493 webrtc_data_channel_->OnDataReceived(nullptr, params, buffers[5].data); 493 webrtc_data_channel_->OnDataReceived(params, buffers[5].data);
494 bytes_received += buffers[3].size() + buffers[4].size() + buffers[5].size(); 494 bytes_received += buffers[3].size() + buffers[4].size() + buffers[5].size();
495 EXPECT_EQ(6U, observer_->messages_received()); 495 EXPECT_EQ(6U, observer_->messages_received());
496 EXPECT_EQ(6U, webrtc_data_channel_->messages_received()); 496 EXPECT_EQ(6U, webrtc_data_channel_->messages_received());
497 EXPECT_EQ(bytes_received, webrtc_data_channel_->bytes_received()); 497 EXPECT_EQ(bytes_received, webrtc_data_channel_->bytes_received());
498 } 498 }
499 499
500 // Tests that OPEN_ACK message is sent if the datachannel is created from an 500 // Tests that OPEN_ACK message is sent if the datachannel is created from an
501 // OPEN message. 501 // OPEN message.
502 TEST_F(SctpDataChannelTest, OpenAckSentIfCreatedFromOpenMessage) { 502 TEST_F(SctpDataChannelTest, OpenAckSentIfCreatedFromOpenMessage) {
503 webrtc::InternalDataChannelInit config; 503 webrtc::InternalDataChannelInit config;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 TEST_F(SctpDataChannelTest, ClosedWhenReceivedBufferFull) { 586 TEST_F(SctpDataChannelTest, ClosedWhenReceivedBufferFull) {
587 SetChannelReady(); 587 SetChannelReady();
588 rtc::CopyOnWriteBuffer buffer(1024); 588 rtc::CopyOnWriteBuffer buffer(1024);
589 memset(buffer.data(), 0, buffer.size()); 589 memset(buffer.data(), 0, buffer.size());
590 590
591 cricket::ReceiveDataParams params; 591 cricket::ReceiveDataParams params;
592 params.ssrc = 0; 592 params.ssrc = 0;
593 593
594 // Receiving data without having an observer will overflow the buffer. 594 // Receiving data without having an observer will overflow the buffer.
595 for (size_t i = 0; i < 16 * 1024 + 1; ++i) { 595 for (size_t i = 0; i < 16 * 1024 + 1; ++i) {
596 webrtc_data_channel_->OnDataReceived(NULL, params, buffer); 596 webrtc_data_channel_->OnDataReceived(params, buffer);
597 } 597 }
598 EXPECT_EQ(webrtc::DataChannelInterface::kClosed, 598 EXPECT_EQ(webrtc::DataChannelInterface::kClosed,
599 webrtc_data_channel_->state()); 599 webrtc_data_channel_->state());
600 } 600 }
601 601
602 // Tests that sending empty data returns no error and keeps the channel open. 602 // Tests that sending empty data returns no error and keeps the channel open.
603 TEST_F(SctpDataChannelTest, SendEmptyData) { 603 TEST_F(SctpDataChannelTest, SendEmptyData) {
604 webrtc_data_channel_->SetSctpSid(1); 604 webrtc_data_channel_->SetSctpSid(1);
605 SetChannelReady(); 605 SetChannelReady();
606 EXPECT_EQ(webrtc::DataChannelInterface::kOpen, 606 EXPECT_EQ(webrtc::DataChannelInterface::kOpen,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id)); 705 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id));
706 EXPECT_EQ(even_id, allocated_id); 706 EXPECT_EQ(even_id, allocated_id);
707 707
708 // Verifies that used higher ids are not reused. 708 // Verifies that used higher ids are not reused.
709 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id)); 709 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id));
710 EXPECT_EQ(odd_id + 6, allocated_id); 710 EXPECT_EQ(odd_id + 6, allocated_id);
711 711
712 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id)); 712 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id));
713 EXPECT_EQ(even_id + 6, allocated_id); 713 EXPECT_EQ(even_id + 6, allocated_id);
714 } 714 }
OLDNEW
« no previous file with comments | « webrtc/api/datachannel.cc ('k') | webrtc/api/peerconnection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698