| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "remoting/protocol/ice_transport.h" | 5 #include "remoting/protocol/ice_transport.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 } | 106 } |
| 107 | 107 |
| 108 void DeliverTransportInfo(scoped_ptr<IceTransport>* target_transport, | 108 void DeliverTransportInfo(scoped_ptr<IceTransport>* target_transport, |
| 109 scoped_ptr<buzz::XmlElement> transport_info) { | 109 scoped_ptr<buzz::XmlElement> transport_info) { |
| 110 ASSERT_TRUE(target_transport); | 110 ASSERT_TRUE(target_transport); |
| 111 EXPECT_TRUE( | 111 EXPECT_TRUE( |
| 112 (*target_transport)->ProcessTransportInfo(transport_info.get())); | 112 (*target_transport)->ProcessTransportInfo(transport_info.get())); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void InitializeConnection() { | 115 void InitializeConnection() { |
| 116 host_transport_.reset( | 116 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); |
| 117 new IceTransport(TransportContext::ForTests(TransportRole::SERVER), | 117 |
| 118 &host_event_handler_)); | 118 host_transport_.reset(new IceTransport( |
| 119 new TransportContext( |
| 120 nullptr, make_scoped_ptr(new ChromiumPortAllocatorFactory(nullptr)), |
| 121 network_settings_, TransportRole::SERVER), |
| 122 &host_event_handler_)); |
| 119 if (!host_authenticator_) { | 123 if (!host_authenticator_) { |
| 120 host_authenticator_.reset(new FakeAuthenticator( | 124 host_authenticator_.reset(new FakeAuthenticator( |
| 121 FakeAuthenticator::HOST, 0, FakeAuthenticator::ACCEPT, true)); | 125 FakeAuthenticator::HOST, 0, FakeAuthenticator::ACCEPT, true)); |
| 122 } | 126 } |
| 123 | 127 |
| 124 client_transport_.reset( | 128 client_transport_.reset(new IceTransport( |
| 125 new IceTransport(TransportContext::ForTests(TransportRole::CLIENT), | 129 new TransportContext( |
| 126 &client_event_handler_)); | 130 nullptr, make_scoped_ptr(new ChromiumPortAllocatorFactory(nullptr)), |
| 131 network_settings_, TransportRole::CLIENT), |
| 132 &client_event_handler_)); |
| 127 if (!client_authenticator_) { | 133 if (!client_authenticator_) { |
| 128 client_authenticator_.reset(new FakeAuthenticator( | 134 client_authenticator_.reset(new FakeAuthenticator( |
| 129 FakeAuthenticator::CLIENT, 0, FakeAuthenticator::ACCEPT, true)); | 135 FakeAuthenticator::CLIENT, 0, FakeAuthenticator::ACCEPT, true)); |
| 130 } | 136 } |
| 131 | 137 |
| 132 host_event_handler_.set_error_callback(base::Bind( | 138 host_event_handler_.set_error_callback(base::Bind( |
| 133 &IceTransportTest::OnTransportError, base::Unretained(this))); | 139 &IceTransportTest::OnTransportError, base::Unretained(this))); |
| 134 client_event_handler_.set_error_callback(base::Bind( | 140 client_event_handler_.set_error_callback(base::Bind( |
| 135 &IceTransportTest::OnTransportError, base::Unretained(this))); | 141 &IceTransportTest::OnTransportError, base::Unretained(this))); |
| 136 | 142 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 262 EXPECT_EQ(CHANNEL_CONNECTION_ERROR, error_); | 268 EXPECT_EQ(CHANNEL_CONNECTION_ERROR, error_); |
| 263 | 269 |
| 264 client_transport_->GetChannelFactory()->CancelChannelCreation( | 270 client_transport_->GetChannelFactory()->CancelChannelCreation( |
| 265 kChannelName); | 271 kChannelName); |
| 266 } | 272 } |
| 267 | 273 |
| 268 // Verify that channels are never marked connected if connection cannot be | 274 // Verify that channels are never marked connected if connection cannot be |
| 269 // established. | 275 // established. |
| 270 TEST_F(IceTransportTest, TestBrokenTransport) { | 276 TEST_F(IceTransportTest, TestBrokenTransport) { |
| 271 // Allow only incoming connections on both ends, which effectively renders | 277 // Allow only incoming connections on both ends, which effectively renders |
| 272 // transport unusable. | 278 // transport unusable. Also reduce connection timeout so the test finishes |
| 279 // quickly. |
| 273 network_settings_ = NetworkSettings(NetworkSettings::NAT_TRAVERSAL_DISABLED); | 280 network_settings_ = NetworkSettings(NetworkSettings::NAT_TRAVERSAL_DISABLED); |
| 281 network_settings_.ice_timeout = base::TimeDelta::FromSeconds(1); |
| 282 network_settings_.ice_reconnect_attempts = 1; |
| 274 | 283 |
| 275 InitializeConnection(); | 284 InitializeConnection(); |
| 276 | 285 |
| 277 client_transport_->GetChannelFactory()->CreateChannel( | 286 client_transport_->GetChannelFactory()->CreateChannel( |
| 278 kChannelName, base::Bind(&IceTransportTest::OnClientChannelCreated, | 287 kChannelName, base::Bind(&IceTransportTest::OnClientChannelCreated, |
| 279 base::Unretained(this))); | 288 base::Unretained(this))); |
| 280 host_transport_->GetChannelFactory()->CreateChannel( | 289 host_transport_->GetChannelFactory()->CreateChannel( |
| 281 kChannelName, base::Bind(&IceTransportTest::OnHostChannelCreated, | 290 kChannelName, base::Bind(&IceTransportTest::OnHostChannelCreated, |
| 282 base::Unretained(this))); | 291 base::Unretained(this))); |
| 283 | 292 |
| 284 message_loop_.RunUntilIdle(); | 293 // The RunLoop should quit in OnTransportError(). |
| 294 run_loop_.reset(new base::RunLoop()); |
| 295 run_loop_->Run(); |
| 285 | 296 |
| 286 // Verify that neither of the two ends of the channel is connected. | 297 // Verify that neither of the two ends of the channel is connected. |
| 287 EXPECT_FALSE(client_message_pipe_); | 298 EXPECT_FALSE(client_message_pipe_); |
| 288 EXPECT_FALSE(host_message_pipe_); | 299 EXPECT_FALSE(host_message_pipe_); |
| 300 EXPECT_EQ(CHANNEL_CONNECTION_ERROR, error_); |
| 289 | 301 |
| 290 client_transport_->GetChannelFactory()->CancelChannelCreation( | 302 client_transport_->GetChannelFactory()->CancelChannelCreation( |
| 291 kChannelName); | 303 kChannelName); |
| 292 host_transport_->GetChannelFactory()->CancelChannelCreation( | 304 host_transport_->GetChannelFactory()->CancelChannelCreation( |
| 293 kChannelName); | 305 kChannelName); |
| 294 } | 306 } |
| 295 | 307 |
| 296 TEST_F(IceTransportTest, TestCancelChannelCreation) { | 308 TEST_F(IceTransportTest, TestCancelChannelCreation) { |
| 297 InitializeConnection(); | 309 InitializeConnection(); |
| 298 | 310 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 323 | 335 |
| 324 MessagePipeConnectionTester tester(host_message_pipe_.get(), | 336 MessagePipeConnectionTester tester(host_message_pipe_.get(), |
| 325 client_message_pipe_.get(), kMessageSize, | 337 client_message_pipe_.get(), kMessageSize, |
| 326 kMessages); | 338 kMessages); |
| 327 tester.RunAndCheckResults(); | 339 tester.RunAndCheckResults(); |
| 328 } | 340 } |
| 329 | 341 |
| 330 | 342 |
| 331 } // namespace protocol | 343 } // namespace protocol |
| 332 } // namespace remoting | 344 } // namespace remoting |
| OLD | NEW |