| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/jingle_session.h" | 5 #include "remoting/protocol/jingle_session.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/time.h" | 9 #include "base/time.h" |
| 10 #include "base/test/test_timeouts.h" | 10 #include "base/test/test_timeouts.h" |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 | 221 |
| 222 client_session_ = client_server_->Connect( | 222 client_session_ = client_server_->Connect( |
| 223 kHostJid, authenticator.Pass(), | 223 kHostJid, authenticator.Pass(), |
| 224 CandidateSessionConfig::CreateDefault()); | 224 CandidateSessionConfig::CreateDefault()); |
| 225 client_session_->SetEventHandler(&client_session_event_handler_); | 225 client_session_->SetEventHandler(&client_session_event_handler_); |
| 226 | 226 |
| 227 message_loop_->RunAllPending(); | 227 message_loop_->RunAllPending(); |
| 228 } | 228 } |
| 229 | 229 |
| 230 void CreateChannel() { | 230 void CreateChannel() { |
| 231 client_session_->CreateStreamChannel(kChannelName, base::Bind( | 231 client_session_->GetTransportChannelFactory()->CreateStreamChannel( |
| 232 &JingleSessionTest::OnClientChannelCreated, base::Unretained(this))); | 232 kChannelName, base::Bind(&JingleSessionTest::OnClientChannelCreated, |
| 233 host_session_->CreateStreamChannel(kChannelName, base::Bind( | 233 base::Unretained(this))); |
| 234 &JingleSessionTest::OnHostChannelCreated, base::Unretained(this))); | 234 host_session_->GetTransportChannelFactory()->CreateStreamChannel( |
| 235 kChannelName, base::Bind(&JingleSessionTest::OnHostChannelCreated, |
| 236 base::Unretained(this))); |
| 235 | 237 |
| 236 int counter = 2; | 238 int counter = 2; |
| 237 ExpectRouteChange(); | 239 ExpectRouteChange(kChannelName); |
| 238 EXPECT_CALL(client_channel_callback_, OnDone(_)) | 240 EXPECT_CALL(client_channel_callback_, OnDone(_)) |
| 239 .WillOnce(QuitThreadOnCounter(&counter)); | 241 .WillOnce(QuitThreadOnCounter(&counter)); |
| 240 EXPECT_CALL(host_channel_callback_, OnDone(_)) | 242 EXPECT_CALL(host_channel_callback_, OnDone(_)) |
| 241 .WillOnce(QuitThreadOnCounter(&counter)); | 243 .WillOnce(QuitThreadOnCounter(&counter)); |
| 242 message_loop_->Run(); | 244 message_loop_->Run(); |
| 243 | 245 |
| 244 EXPECT_TRUE(client_socket_.get()); | 246 EXPECT_TRUE(client_socket_.get()); |
| 245 EXPECT_TRUE(host_socket_.get()); | 247 EXPECT_TRUE(host_socket_.get()); |
| 246 } | 248 } |
| 247 | 249 |
| 248 void ExpectRouteChange() { | 250 void ExpectRouteChange(const std::string& channel_name) { |
| 249 EXPECT_CALL(host_session_event_handler_, | 251 EXPECT_CALL(host_session_event_handler_, |
| 250 OnSessionRouteChange(kChannelName, _)) | 252 OnSessionRouteChange(channel_name, _)) |
| 251 .Times(AtLeast(1)); | 253 .Times(AtLeast(1)); |
| 252 EXPECT_CALL(client_session_event_handler_, | 254 EXPECT_CALL(client_session_event_handler_, |
| 253 OnSessionRouteChange(kChannelName, _)) | 255 OnSessionRouteChange(channel_name, _)) |
| 254 .Times(AtLeast(1)); | 256 .Times(AtLeast(1)); |
| 255 } | 257 } |
| 256 | 258 |
| 257 scoped_ptr<MessageLoopForIO> message_loop_; | 259 scoped_ptr<MessageLoopForIO> message_loop_; |
| 258 | 260 |
| 259 scoped_ptr<FakeSignalStrategy> host_signal_strategy_; | 261 scoped_ptr<FakeSignalStrategy> host_signal_strategy_; |
| 260 scoped_ptr<FakeSignalStrategy> client_signal_strategy_; | 262 scoped_ptr<FakeSignalStrategy> client_signal_strategy_; |
| 261 | 263 |
| 262 scoped_ptr<JingleSessionManager> host_server_; | 264 scoped_ptr<JingleSessionManager> host_server_; |
| 263 MockSessionManagerListener host_server_listener_; | 265 MockSessionManagerListener host_server_listener_; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 | 352 |
| 351 ASSERT_NO_FATAL_FAILURE(CreateChannel()); | 353 ASSERT_NO_FATAL_FAILURE(CreateChannel()); |
| 352 | 354 |
| 353 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), | 355 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), |
| 354 kMessageSize, kMessages); | 356 kMessageSize, kMessages); |
| 355 tester.Start(); | 357 tester.Start(); |
| 356 message_loop_->Run(); | 358 message_loop_->Run(); |
| 357 tester.CheckResults(); | 359 tester.CheckResults(); |
| 358 } | 360 } |
| 359 | 361 |
| 362 // Verify that data can be sent over a multiplexed channel. |
| 363 TEST_F(JingleSessionTest, TestMuxStreamChannel) { |
| 364 CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| 365 ASSERT_NO_FATAL_FAILURE( |
| 366 InitiateConnection(1, FakeAuthenticator::ACCEPT, false)); |
| 367 |
| 368 client_session_->GetMultiplexedChannelFactory()->CreateStreamChannel( |
| 369 kChannelName, base::Bind(&JingleSessionTest::OnClientChannelCreated, |
| 370 base::Unretained(this))); |
| 371 host_session_->GetMultiplexedChannelFactory()->CreateStreamChannel( |
| 372 kChannelName, base::Bind(&JingleSessionTest::OnHostChannelCreated, |
| 373 base::Unretained(this))); |
| 374 |
| 375 int counter = 2; |
| 376 ExpectRouteChange("mux"); |
| 377 EXPECT_CALL(client_channel_callback_, OnDone(_)) |
| 378 .WillOnce(QuitThreadOnCounter(&counter)); |
| 379 EXPECT_CALL(host_channel_callback_, OnDone(_)) |
| 380 .WillOnce(QuitThreadOnCounter(&counter)); |
| 381 message_loop_->Run(); |
| 382 |
| 383 EXPECT_TRUE(client_socket_.get()); |
| 384 EXPECT_TRUE(host_socket_.get()); |
| 385 |
| 386 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), |
| 387 kMessageSize, kMessages); |
| 388 tester.Start(); |
| 389 message_loop_->Run(); |
| 390 tester.CheckResults(); |
| 391 } |
| 392 |
| 360 // Verify that we can connect channels with multistep auth. | 393 // Verify that we can connect channels with multistep auth. |
| 361 TEST_F(JingleSessionTest, TestMultistepAuthStreamChannel) { | 394 TEST_F(JingleSessionTest, TestMultistepAuthStreamChannel) { |
| 362 CreateSessionManagers(3, FakeAuthenticator::ACCEPT); | 395 CreateSessionManagers(3, FakeAuthenticator::ACCEPT); |
| 363 ASSERT_NO_FATAL_FAILURE( | 396 ASSERT_NO_FATAL_FAILURE( |
| 364 InitiateConnection(3, FakeAuthenticator::ACCEPT, false)); | 397 InitiateConnection(3, FakeAuthenticator::ACCEPT, false)); |
| 365 | 398 |
| 366 ASSERT_NO_FATAL_FAILURE(CreateChannel()); | 399 ASSERT_NO_FATAL_FAILURE(CreateChannel()); |
| 367 | 400 |
| 368 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), | 401 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), |
| 369 kMessageSize, kMessages); | 402 kMessageSize, kMessages); |
| 370 tester.Start(); | 403 tester.Start(); |
| 371 message_loop_->Run(); | 404 message_loop_->Run(); |
| 372 tester.CheckResults(); | 405 tester.CheckResults(); |
| 373 } | 406 } |
| 374 | 407 |
| 375 // Verify that we shutdown properly when channel authentication fails. | 408 // Verify that we shutdown properly when channel authentication fails. |
| 376 TEST_F(JingleSessionTest, TestFailedChannelAuth) { | 409 TEST_F(JingleSessionTest, TestFailedChannelAuth) { |
| 377 CreateSessionManagers(1, FakeAuthenticator::REJECT_CHANNEL); | 410 CreateSessionManagers(1, FakeAuthenticator::REJECT_CHANNEL); |
| 378 ASSERT_NO_FATAL_FAILURE( | 411 ASSERT_NO_FATAL_FAILURE( |
| 379 InitiateConnection(1, FakeAuthenticator::ACCEPT, false)); | 412 InitiateConnection(1, FakeAuthenticator::ACCEPT, false)); |
| 380 | 413 |
| 381 client_session_->CreateStreamChannel(kChannelName, base::Bind( | 414 client_session_->GetTransportChannelFactory()->CreateStreamChannel( |
| 382 &JingleSessionTest::OnClientChannelCreated, base::Unretained(this))); | 415 kChannelName, base::Bind(&JingleSessionTest::OnClientChannelCreated, |
| 383 host_session_->CreateStreamChannel(kChannelName, base::Bind( | 416 base::Unretained(this))); |
| 384 &JingleSessionTest::OnHostChannelCreated, base::Unretained(this))); | 417 host_session_->GetTransportChannelFactory()->CreateStreamChannel( |
| 418 kChannelName, base::Bind(&JingleSessionTest::OnHostChannelCreated, |
| 419 base::Unretained(this))); |
| 385 | 420 |
| 386 // Terminate the message loop when we get rejection notification | 421 // Terminate the message loop when we get rejection notification |
| 387 // from the host. | 422 // from the host. |
| 388 EXPECT_CALL(host_channel_callback_, OnDone(NULL)) | 423 EXPECT_CALL(host_channel_callback_, OnDone(NULL)) |
| 389 .WillOnce(QuitThread()); | 424 .WillOnce(QuitThread()); |
| 390 EXPECT_CALL(client_channel_callback_, OnDone(_)) | 425 EXPECT_CALL(client_channel_callback_, OnDone(_)) |
| 391 .Times(AtMost(1)); | 426 .Times(AtMost(1)); |
| 392 ExpectRouteChange(); | 427 ExpectRouteChange(kChannelName); |
| 393 | 428 |
| 394 message_loop_->Run(); | 429 message_loop_->Run(); |
| 395 | 430 |
| 396 EXPECT_TRUE(!host_socket_.get()); | 431 EXPECT_TRUE(!host_socket_.get()); |
| 397 } | 432 } |
| 398 | 433 |
| 399 } // namespace protocol | 434 } // namespace protocol |
| 400 } // namespace remoting | 435 } // namespace remoting |
| OLD | NEW |