Index: remoting/protocol/channel_multiplexer_unittest.cc |
diff --git a/remoting/protocol/channel_multiplexer_unittest.cc b/remoting/protocol/channel_multiplexer_unittest.cc |
index c4c8179042c8e5dc43e9fbf396936e5074e06f78..781e1180c26cb94fe37d5c9350308663ca04b3a6 100644 |
--- a/remoting/protocol/channel_multiplexer_unittest.cc |
+++ b/remoting/protocol/channel_multiplexer_unittest.cc |
@@ -28,6 +28,10 @@ const int kMessageSize = 1024; |
const int kMessages = 100; |
const char kMuxChannelName[] = "mux"; |
+const char kTestChannelName[] = "test"; |
+const char kTestChannelName2[] = "test2"; |
+ |
+ |
void QuitCurrentThread() { |
MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); |
} |
@@ -37,6 +41,14 @@ class MockSocketCallback { |
MOCK_METHOD1(OnDone, void(int result)); |
}; |
+class MockConnectCallback { |
+ public: |
+ MOCK_METHOD1(OnConnectedPtr, void(net::StreamSocket* socket)); |
+ void OnConnected(scoped_ptr<net::StreamSocket> socket) { |
+ OnConnectedPtr(socket.release()); |
+ } |
+}; |
+ |
} // namespace |
class ChannelMultiplexerTest : public testing::Test { |
@@ -50,6 +62,11 @@ class ChannelMultiplexerTest : public testing::Test { |
client_mux_.reset(); |
} |
+ void DeleteAfterSessionFail() { |
+ host_mux_->CancelChannelCreation(kTestChannelName2); |
+ DeleteAll(); |
+ } |
+ |
protected: |
virtual void SetUp() OVERRIDE { |
// Create pair of multiplexers and connect them to each other. |
@@ -126,7 +143,8 @@ class ChannelMultiplexerTest : public testing::Test { |
TEST_F(ChannelMultiplexerTest, OneChannel) { |
scoped_ptr<net::StreamSocket> host_socket; |
scoped_ptr<net::StreamSocket> client_socket; |
- ASSERT_NO_FATAL_FAILURE(CreateChannel("test", &host_socket, &client_socket)); |
+ ASSERT_NO_FATAL_FAILURE( |
+ CreateChannel(kTestChannelName, &host_socket, &client_socket)); |
ConnectSockets(); |
@@ -141,12 +159,12 @@ TEST_F(ChannelMultiplexerTest, TwoChannels) { |
scoped_ptr<net::StreamSocket> host_socket1_; |
scoped_ptr<net::StreamSocket> client_socket1_; |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("test", &host_socket1_, &client_socket1_)); |
+ CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_)); |
scoped_ptr<net::StreamSocket> host_socket2_; |
scoped_ptr<net::StreamSocket> client_socket2_; |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("ch2", &host_socket2_, &client_socket2_)); |
+ CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_)); |
ConnectSockets(); |
@@ -168,12 +186,12 @@ TEST_F(ChannelMultiplexerTest, FourChannels) { |
scoped_ptr<net::StreamSocket> host_socket1_; |
scoped_ptr<net::StreamSocket> client_socket1_; |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("test", &host_socket1_, &client_socket1_)); |
+ CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_)); |
scoped_ptr<net::StreamSocket> host_socket2_; |
scoped_ptr<net::StreamSocket> client_socket2_; |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("ch2", &host_socket2_, &client_socket2_)); |
+ CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_)); |
scoped_ptr<net::StreamSocket> host_socket3; |
scoped_ptr<net::StreamSocket> client_socket3; |
@@ -209,16 +227,16 @@ TEST_F(ChannelMultiplexerTest, FourChannels) { |
tester4.CheckResults(); |
} |
-TEST_F(ChannelMultiplexerTest, SyncFail) { |
+TEST_F(ChannelMultiplexerTest, WriteFailSync) { |
scoped_ptr<net::StreamSocket> host_socket1_; |
scoped_ptr<net::StreamSocket> client_socket1_; |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("test", &host_socket1_, &client_socket1_)); |
+ CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_)); |
scoped_ptr<net::StreamSocket> host_socket2_; |
scoped_ptr<net::StreamSocket> client_socket2_; |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("ch2", &host_socket2_, &client_socket2_)); |
+ CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_)); |
ConnectSockets(); |
@@ -245,12 +263,12 @@ TEST_F(ChannelMultiplexerTest, SyncFail) { |
message_loop_.RunAllPending(); |
} |
-TEST_F(ChannelMultiplexerTest, AsyncFail) { |
+TEST_F(ChannelMultiplexerTest, WriteFailAsync) { |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("test", &host_socket1_, &client_socket1_)); |
+ CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_)); |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("ch2", &host_socket2_, &client_socket2_)); |
+ CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_)); |
ConnectSockets(); |
@@ -278,9 +296,9 @@ TEST_F(ChannelMultiplexerTest, AsyncFail) { |
TEST_F(ChannelMultiplexerTest, DeleteWhenFailed) { |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("test", &host_socket1_, &client_socket1_)); |
+ CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_)); |
ASSERT_NO_FATAL_FAILURE( |
- CreateChannel("ch2", &host_socket2_, &client_socket2_)); |
+ CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_)); |
ConnectSockets(); |
@@ -314,5 +332,27 @@ TEST_F(ChannelMultiplexerTest, DeleteWhenFailed) { |
EXPECT_FALSE(host_mux_.get()); |
} |
+TEST_F(ChannelMultiplexerTest, SessionFail) { |
+ host_session_.set_async_creation(true); |
+ host_session_.set_error(AUTHENTICATION_FAILED); |
+ |
+ MockConnectCallback cb1; |
+ MockConnectCallback cb2; |
+ |
+ host_mux_->CreateStreamChannel(kTestChannelName, base::Bind( |
+ &MockConnectCallback::OnConnected, base::Unretained(&cb1))); |
+ host_mux_->CreateStreamChannel(kTestChannelName2, base::Bind( |
+ &MockConnectCallback::OnConnected, base::Unretained(&cb2))); |
+ |
+ EXPECT_CALL(cb1, OnConnectedPtr(NULL)) |
+ .Times(AtMost(1)) |
+ .WillOnce(InvokeWithoutArgs( |
+ this, &ChannelMultiplexerTest::DeleteAfterSessionFail)); |
+ EXPECT_CALL(cb2, OnConnectedPtr(_)) |
+ .Times(0); |
+ |
+ message_loop_.RunAllPending(); |
+} |
+ |
} // namespace protocol |
} // namespace remoting |