| OLD | NEW |
| 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 observer_.reset(new FakeDataChannelObserver()); | 87 observer_.reset(new FakeDataChannelObserver()); |
| 88 webrtc_data_channel_->RegisterObserver(observer_.get()); | 88 webrtc_data_channel_->RegisterObserver(observer_.get()); |
| 89 } | 89 } |
| 90 | 90 |
| 91 webrtc::InternalDataChannelInit init_; | 91 webrtc::InternalDataChannelInit init_; |
| 92 std::unique_ptr<FakeDataChannelProvider> provider_; | 92 std::unique_ptr<FakeDataChannelProvider> provider_; |
| 93 std::unique_ptr<FakeDataChannelObserver> observer_; | 93 std::unique_ptr<FakeDataChannelObserver> observer_; |
| 94 rtc::scoped_refptr<DataChannel> webrtc_data_channel_; | 94 rtc::scoped_refptr<DataChannel> webrtc_data_channel_; |
| 95 }; | 95 }; |
| 96 | 96 |
| 97 class StateSignalsListener : public sigslot::has_slots<> { |
| 98 public: |
| 99 int opened_count() const { return opened_count_; } |
| 100 int closed_count() const { return closed_count_; } |
| 101 |
| 102 void OnSignalOpened(DataChannel* data_channel) { |
| 103 ++opened_count_; |
| 104 } |
| 105 |
| 106 void OnSignalClosed(DataChannel* data_channel) { |
| 107 ++closed_count_; |
| 108 } |
| 109 |
| 110 private: |
| 111 int opened_count_ = 0; |
| 112 int closed_count_ = 0; |
| 113 }; |
| 114 |
| 97 // Verifies that the data channel is connected to the transport after creation. | 115 // Verifies that the data channel is connected to the transport after creation. |
| 98 TEST_F(SctpDataChannelTest, ConnectedToTransportOnCreated) { | 116 TEST_F(SctpDataChannelTest, ConnectedToTransportOnCreated) { |
| 99 provider_->set_transport_available(true); | 117 provider_->set_transport_available(true); |
| 100 rtc::scoped_refptr<DataChannel> dc = | 118 rtc::scoped_refptr<DataChannel> dc = |
| 101 DataChannel::Create(provider_.get(), cricket::DCT_SCTP, "test1", init_); | 119 DataChannel::Create(provider_.get(), cricket::DCT_SCTP, "test1", init_); |
| 102 | 120 |
| 103 EXPECT_TRUE(provider_->IsConnected(dc.get())); | 121 EXPECT_TRUE(provider_->IsConnected(dc.get())); |
| 104 // The sid is not set yet, so it should not have added the streams. | 122 // The sid is not set yet, so it should not have added the streams. |
| 105 EXPECT_FALSE(provider_->IsSendStreamAdded(dc->id())); | 123 EXPECT_FALSE(provider_->IsSendStreamAdded(dc->id())); |
| 106 EXPECT_FALSE(provider_->IsRecvStreamAdded(dc->id())); | 124 EXPECT_FALSE(provider_->IsRecvStreamAdded(dc->id())); |
| 107 | 125 |
| 108 dc->SetSctpSid(0); | 126 dc->SetSctpSid(0); |
| 109 EXPECT_TRUE(provider_->IsSendStreamAdded(dc->id())); | 127 EXPECT_TRUE(provider_->IsSendStreamAdded(dc->id())); |
| 110 EXPECT_TRUE(provider_->IsRecvStreamAdded(dc->id())); | 128 EXPECT_TRUE(provider_->IsRecvStreamAdded(dc->id())); |
| 111 } | 129 } |
| 112 | 130 |
| 113 // Verifies that the data channel is connected to the transport if the transport | 131 // Verifies that the data channel is connected to the transport if the transport |
| 114 // is not available initially and becomes available later. | 132 // is not available initially and becomes available later. |
| 115 TEST_F(SctpDataChannelTest, ConnectedAfterTransportBecomesAvailable) { | 133 TEST_F(SctpDataChannelTest, ConnectedAfterTransportBecomesAvailable) { |
| 116 EXPECT_FALSE(provider_->IsConnected(webrtc_data_channel_.get())); | 134 EXPECT_FALSE(provider_->IsConnected(webrtc_data_channel_.get())); |
| 117 | 135 |
| 118 provider_->set_transport_available(true); | 136 provider_->set_transport_available(true); |
| 119 webrtc_data_channel_->OnTransportChannelCreated(); | 137 webrtc_data_channel_->OnTransportChannelCreated(); |
| 120 EXPECT_TRUE(provider_->IsConnected(webrtc_data_channel_.get())); | 138 EXPECT_TRUE(provider_->IsConnected(webrtc_data_channel_.get())); |
| 121 } | 139 } |
| 122 | 140 |
| 123 // Tests the state of the data channel. | 141 // Tests the state of the data channel. |
| 124 TEST_F(SctpDataChannelTest, StateTransition) { | 142 TEST_F(SctpDataChannelTest, StateTransition) { |
| 143 StateSignalsListener state_signals_listener; |
| 144 webrtc_data_channel_->SignalOpened.connect( |
| 145 &state_signals_listener, &StateSignalsListener::OnSignalOpened); |
| 146 webrtc_data_channel_->SignalClosed.connect( |
| 147 &state_signals_listener, &StateSignalsListener::OnSignalClosed); |
| 125 EXPECT_EQ(webrtc::DataChannelInterface::kConnecting, | 148 EXPECT_EQ(webrtc::DataChannelInterface::kConnecting, |
| 126 webrtc_data_channel_->state()); | 149 webrtc_data_channel_->state()); |
| 150 EXPECT_EQ(state_signals_listener.opened_count(), 0); |
| 151 EXPECT_EQ(state_signals_listener.closed_count(), 0); |
| 127 SetChannelReady(); | 152 SetChannelReady(); |
| 128 | 153 |
| 129 EXPECT_EQ(webrtc::DataChannelInterface::kOpen, webrtc_data_channel_->state()); | 154 EXPECT_EQ(webrtc::DataChannelInterface::kOpen, webrtc_data_channel_->state()); |
| 155 EXPECT_EQ(state_signals_listener.opened_count(), 1); |
| 156 EXPECT_EQ(state_signals_listener.closed_count(), 0); |
| 130 webrtc_data_channel_->Close(); | 157 webrtc_data_channel_->Close(); |
| 131 EXPECT_EQ(webrtc::DataChannelInterface::kClosed, | 158 EXPECT_EQ(webrtc::DataChannelInterface::kClosed, |
| 132 webrtc_data_channel_->state()); | 159 webrtc_data_channel_->state()); |
| 160 EXPECT_EQ(state_signals_listener.opened_count(), 1); |
| 161 EXPECT_EQ(state_signals_listener.closed_count(), 1); |
| 133 // Verifies that it's disconnected from the transport. | 162 // Verifies that it's disconnected from the transport. |
| 134 EXPECT_FALSE(provider_->IsConnected(webrtc_data_channel_.get())); | 163 EXPECT_FALSE(provider_->IsConnected(webrtc_data_channel_.get())); |
| 135 } | 164 } |
| 136 | 165 |
| 137 // Tests that DataChannel::buffered_amount() is correct after the channel is | 166 // Tests that DataChannel::buffered_amount() is correct after the channel is |
| 138 // blocked. | 167 // blocked. |
| 139 TEST_F(SctpDataChannelTest, BufferedAmountWhenBlocked) { | 168 TEST_F(SctpDataChannelTest, BufferedAmountWhenBlocked) { |
| 140 AddObserver(); | 169 AddObserver(); |
| 141 SetChannelReady(); | 170 SetChannelReady(); |
| 142 webrtc::DataBuffer buffer("abcd"); | 171 webrtc::DataBuffer buffer("abcd"); |
| (...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id)); | 705 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id)); |
| 677 EXPECT_EQ(even_id, allocated_id); | 706 EXPECT_EQ(even_id, allocated_id); |
| 678 | 707 |
| 679 // Verifies that used higher ids are not reused. | 708 // Verifies that used higher ids are not reused. |
| 680 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id)); | 709 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_SERVER, &allocated_id)); |
| 681 EXPECT_EQ(odd_id + 6, allocated_id); | 710 EXPECT_EQ(odd_id + 6, allocated_id); |
| 682 | 711 |
| 683 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id)); | 712 EXPECT_TRUE(allocator_.AllocateSid(rtc::SSL_CLIENT, &allocated_id)); |
| 684 EXPECT_EQ(even_id + 6, allocated_id); | 713 EXPECT_EQ(even_id + 6, allocated_id); |
| 685 } | 714 } |
| OLD | NEW |