Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2066)

Unified Diff: remoting/protocol/channel_multiplexer_unittest.cc

Issue 10981009: Fix ChannelMultiplexer to properly handle base channel creation failure. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/protocol/channel_multiplexer.cc ('k') | remoting/protocol/connection_to_client_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « remoting/protocol/channel_multiplexer.cc ('k') | remoting/protocol/connection_to_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698