| OLD | NEW |
| 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 | 10 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 }; | 123 }; |
| 124 | 124 |
| 125 // SCTP Data Engine testing framework. | 125 // SCTP Data Engine testing framework. |
| 126 class SctpTransportTest : public testing::Test, public sigslot::has_slots<> { | 126 class SctpTransportTest : public testing::Test, public sigslot::has_slots<> { |
| 127 protected: | 127 protected: |
| 128 // usrsctp uses the NSS random number generator on non-Android platforms, | 128 // usrsctp uses the NSS random number generator on non-Android platforms, |
| 129 // so we need to initialize SSL. | 129 // so we need to initialize SSL. |
| 130 static void SetUpTestCase() {} | 130 static void SetUpTestCase() {} |
| 131 | 131 |
| 132 void SetupConnectedTransportsWithTwoStreams() { | 132 void SetupConnectedTransportsWithTwoStreams() { |
| 133 SetupConnectedTransportsWithTwoStreams(kTransport1Port, kTransport2Port); |
| 134 } |
| 135 |
| 136 void SetupConnectedTransportsWithTwoStreams(int port1, int port2) { |
| 133 fake_dtls1_.reset(new FakeDtlsTransport("fake dtls 1", 0)); | 137 fake_dtls1_.reset(new FakeDtlsTransport("fake dtls 1", 0)); |
| 134 fake_dtls2_.reset(new FakeDtlsTransport("fake dtls 2", 0)); | 138 fake_dtls2_.reset(new FakeDtlsTransport("fake dtls 2", 0)); |
| 135 recv1_.reset(new SctpFakeDataReceiver()); | 139 recv1_.reset(new SctpFakeDataReceiver()); |
| 136 recv2_.reset(new SctpFakeDataReceiver()); | 140 recv2_.reset(new SctpFakeDataReceiver()); |
| 137 transport1_.reset(CreateTransport(fake_dtls1_.get(), recv1_.get())); | 141 transport1_.reset(CreateTransport(fake_dtls1_.get(), recv1_.get())); |
| 138 transport1_->set_debug_name_for_testing("transport1"); | 142 transport1_->set_debug_name_for_testing("transport1"); |
| 139 transport1_->SignalReadyToSendData.connect( | 143 transport1_->SignalReadyToSendData.connect( |
| 140 this, &SctpTransportTest::OnChan1ReadyToSend); | 144 this, &SctpTransportTest::OnChan1ReadyToSend); |
| 141 transport2_.reset(CreateTransport(fake_dtls2_.get(), recv2_.get())); | 145 transport2_.reset(CreateTransport(fake_dtls2_.get(), recv2_.get())); |
| 142 transport2_->set_debug_name_for_testing("transport2"); | 146 transport2_->set_debug_name_for_testing("transport2"); |
| 143 transport2_->SignalReadyToSendData.connect( | 147 transport2_->SignalReadyToSendData.connect( |
| 144 this, &SctpTransportTest::OnChan2ReadyToSend); | 148 this, &SctpTransportTest::OnChan2ReadyToSend); |
| 145 // Setup two connected transports ready to send and receive. | 149 // Setup two connected transports ready to send and receive. |
| 146 bool asymmetric = false; | 150 bool asymmetric = false; |
| 147 fake_dtls1_->SetDestination(fake_dtls2_.get(), asymmetric); | 151 fake_dtls1_->SetDestination(fake_dtls2_.get(), asymmetric); |
| 148 | 152 |
| 149 LOG(LS_VERBOSE) << "Transport setup ----------------------------- "; | 153 LOG(LS_VERBOSE) << "Transport setup ----------------------------- "; |
| 150 AddStream(1); | 154 AddStream(1); |
| 151 AddStream(2); | 155 AddStream(2); |
| 152 | 156 |
| 153 LOG(LS_VERBOSE) << "Connect the transports -----------------------------"; | 157 LOG(LS_VERBOSE) << "Connect the transports -----------------------------"; |
| 154 // Both transports need to have started (with matching ports) for an | 158 // Both transports need to have started (with matching ports) for an |
| 155 // association to be formed. | 159 // association to be formed. |
| 156 transport1_->Start(kTransport1Port, kTransport2Port); | 160 transport1_->Start(port1, port2); |
| 157 transport2_->Start(kTransport2Port, kTransport1Port); | 161 transport2_->Start(port2, port1); |
| 158 } | 162 } |
| 159 | 163 |
| 160 bool AddStream(int sid) { | 164 bool AddStream(int sid) { |
| 161 bool ret = true; | 165 bool ret = true; |
| 162 ret = ret && transport1_->OpenStream(sid); | 166 ret = ret && transport1_->OpenStream(sid); |
| 163 ret = ret && transport2_->OpenStream(sid); | 167 ret = ret && transport2_->OpenStream(sid); |
| 164 return ret; | 168 return ret; |
| 165 } | 169 } |
| 166 | 170 |
| 167 SctpTransport* CreateTransport(FakeDtlsTransport* fake_dtls, | 171 SctpTransport* CreateTransport(FakeDtlsTransport* fake_dtls, |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 } | 448 } |
| 445 | 449 |
| 446 // Trying to send data for a nonexistent stream should fail. | 450 // Trying to send data for a nonexistent stream should fail. |
| 447 TEST_F(SctpTransportTest, SendDataWithNonexistentStreamFails) { | 451 TEST_F(SctpTransportTest, SendDataWithNonexistentStreamFails) { |
| 448 SetupConnectedTransportsWithTwoStreams(); | 452 SetupConnectedTransportsWithTwoStreams(); |
| 449 SendDataResult result; | 453 SendDataResult result; |
| 450 EXPECT_FALSE(SendData(transport2(), 123, "some data", &result)); | 454 EXPECT_FALSE(SendData(transport2(), 123, "some data", &result)); |
| 451 EXPECT_EQ(SDR_ERROR, result); | 455 EXPECT_EQ(SDR_ERROR, result); |
| 452 } | 456 } |
| 453 | 457 |
| 458 TEST_F(SctpTransportTest, SendDataHighPorts) { |
| 459 SetupConnectedTransportsWithTwoStreams(32768, 32769); |
| 460 |
| 461 SendDataResult result; |
| 462 ASSERT_TRUE(SendData(transport1(), 1, "hello?", &result)); |
| 463 EXPECT_EQ(SDR_SUCCESS, result); |
| 464 EXPECT_TRUE_WAIT(ReceivedData(receiver2(), 1, "hello?"), kDefaultTimeout); |
| 465 |
| 466 ASSERT_TRUE(SendData(transport2(), 2, "hi transport1", &result)); |
| 467 EXPECT_EQ(SDR_SUCCESS, result); |
| 468 EXPECT_TRUE_WAIT(ReceivedData(receiver1(), 2, "hi transport1"), |
| 469 kDefaultTimeout); |
| 470 } |
| 471 |
| 454 TEST_F(SctpTransportTest, ClosesRemoteStream) { | 472 TEST_F(SctpTransportTest, ClosesRemoteStream) { |
| 455 SetupConnectedTransportsWithTwoStreams(); | 473 SetupConnectedTransportsWithTwoStreams(); |
| 456 SignalTransportClosedObserver transport1_sig_receiver, | 474 SignalTransportClosedObserver transport1_sig_receiver, |
| 457 transport2_sig_receiver; | 475 transport2_sig_receiver; |
| 458 transport1_sig_receiver.BindSelf(transport1()); | 476 transport1_sig_receiver.BindSelf(transport1()); |
| 459 transport2_sig_receiver.BindSelf(transport2()); | 477 transport2_sig_receiver.BindSelf(transport2()); |
| 460 | 478 |
| 461 SendDataResult result; | 479 SendDataResult result; |
| 462 ASSERT_TRUE(SendData(transport1(), 1, "hello?", &result)); | 480 ASSERT_TRUE(SendData(transport1(), 1, "hello?", &result)); |
| 463 EXPECT_EQ(SDR_SUCCESS, result); | 481 EXPECT_EQ(SDR_SUCCESS, result); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 AddStream(1); | 572 AddStream(1); |
| 555 ASSERT_TRUE(SendData(transport1(), 1, "hi?", &result)); | 573 ASSERT_TRUE(SendData(transport1(), 1, "hi?", &result)); |
| 556 EXPECT_EQ(SDR_SUCCESS, result); | 574 EXPECT_EQ(SDR_SUCCESS, result); |
| 557 EXPECT_TRUE_WAIT(ReceivedData(receiver2(), 1, "hi?"), kDefaultTimeout); | 575 EXPECT_TRUE_WAIT(ReceivedData(receiver2(), 1, "hi?"), kDefaultTimeout); |
| 558 transport1()->ResetStream(1); | 576 transport1()->ResetStream(1); |
| 559 EXPECT_TRUE_WAIT(transport2_sig_receiver.StreamCloseCount(1) == 2, | 577 EXPECT_TRUE_WAIT(transport2_sig_receiver.StreamCloseCount(1) == 2, |
| 560 kDefaultTimeout); | 578 kDefaultTimeout); |
| 561 } | 579 } |
| 562 | 580 |
| 563 } // namespace cricket | 581 } // namespace cricket |
| OLD | NEW |