Index: remoting/protocol/webrtc_transport_unittest.cc |
diff --git a/remoting/protocol/webrtc_transport_unittest.cc b/remoting/protocol/webrtc_transport_unittest.cc |
index e564b66ca2705a76534045b67d50d084ef9bcd8c..59c644bbf717747a125d01b2362f595515fb4aa9 100644 |
--- a/remoting/protocol/webrtc_transport_unittest.cc |
+++ b/remoting/protocol/webrtc_transport_unittest.cc |
@@ -14,10 +14,11 @@ |
#include "net/base/io_buffer.h" |
#include "net/url_request/url_request_context_getter.h" |
#include "remoting/base/compound_buffer.h" |
-#include "remoting/protocol/connection_tester.h" |
+#include "remoting/proto/event.pb.h" |
#include "remoting/protocol/fake_authenticator.h" |
#include "remoting/protocol/message_channel_factory.h" |
#include "remoting/protocol/message_pipe.h" |
+#include "remoting/protocol/message_serialization.h" |
#include "remoting/protocol/network_settings.h" |
#include "remoting/protocol/transport_context.h" |
#include "remoting/signaling/fake_signal_strategy.h" |
@@ -97,15 +98,32 @@ class TestMessagePipeEventHandler : public MessagePipe::EventHandler { |
TestMessagePipeEventHandler() {} |
~TestMessagePipeEventHandler() override {} |
+ void set_open_callback(const base::Closure& callback) { |
+ open_callback_ = callback; |
+ } |
+ void set_message_callback(const base::Closure& callback) { |
+ message_callback_ = callback; |
+ } |
void set_closed_callback(const base::Closure& callback) { |
closed_callback_ = callback; |
} |
+ bool is_open() { return is_open_; } |
+ const std::list<std::unique_ptr<CompoundBuffer>>& received_messages() { |
+ return received_messages_; |
+ } |
+ |
// MessagePipe::EventHandler interface. |
+ void OnMessagePipeOpen() override { |
+ is_open_ = true; |
+ if (!open_callback_.is_null()) |
+ open_callback_.Run(); |
+ } |
void OnMessageReceived(std::unique_ptr<CompoundBuffer> message) override { |
- NOTREACHED(); |
+ received_messages_.push_back(std::move(message)); |
+ if (!message_callback_.is_null()) |
+ message_callback_.Run(); |
} |
- |
void OnMessagePipeClosed() override { |
if (!closed_callback_.is_null()) { |
closed_callback_.Run(); |
@@ -115,8 +133,13 @@ class TestMessagePipeEventHandler : public MessagePipe::EventHandler { |
} |
private: |
+ bool is_open_ = false; |
+ base::Closure open_callback_; |
+ base::Closure message_callback_; |
base::Closure closed_callback_; |
+ std::list<std::unique_ptr<CompoundBuffer>> received_messages_; |
+ |
DISALLOW_COPY_AND_ASSIGN(TestMessagePipeEventHandler); |
}; |
@@ -220,22 +243,24 @@ class WebrtcTransportTest : public testing::Test { |
} |
void CreateHostDataStream() { |
- host_transport_->outgoing_channel_factory()->CreateChannel( |
- kChannelName, base::Bind(&WebrtcTransportTest::OnHostChannelCreated, |
- base::Unretained(this))); |
+ host_message_pipe_ = host_transport_->CreateOutgoingChannel(kChannelName); |
+ host_message_pipe_->Start(&host_message_pipe_event_handler_); |
+ host_message_pipe_event_handler_.set_open_callback(base::Bind( |
+ &WebrtcTransportTest::OnHostChannelConnected, base::Unretained(this))); |
} |
void OnIncomingChannel(const std::string& name, |
std::unique_ptr<MessagePipe> pipe) { |
EXPECT_EQ(kChannelName, name); |
client_message_pipe_ = std::move(pipe); |
- if (run_loop_ && host_message_pipe_) |
+ client_message_pipe_->Start(&client_message_pipe_event_handler_); |
+ |
+ if (run_loop_ && host_message_pipe_event_handler_.is_open()) |
run_loop_->Quit(); |
} |
- void OnHostChannelCreated(std::unique_ptr<MessagePipe> pipe) { |
- host_message_pipe_ = std::move(pipe); |
- if (run_loop_ && client_message_pipe_) |
+ void OnHostChannelConnected() { |
+ if (run_loop_ && client_message_pipe_event_handler_.is_open()) |
run_loop_->Quit(); |
} |
@@ -283,6 +308,7 @@ class WebrtcTransportTest : public testing::Test { |
std::unique_ptr<FakeAuthenticator> client_authenticator_; |
std::unique_ptr<MessagePipe> client_message_pipe_; |
+ TestMessagePipeEventHandler client_message_pipe_event_handler_; |
std::unique_ptr<MessagePipe> host_message_pipe_; |
TestMessagePipeEventHandler host_message_pipe_event_handler_; |
@@ -324,12 +350,20 @@ TEST_F(WebrtcTransportTest, DataStream) { |
EXPECT_TRUE(client_message_pipe_); |
EXPECT_TRUE(host_message_pipe_); |
- const int kMessageSize = 1024; |
- const int kMessages = 100; |
- MessagePipeConnectionTester tester(host_message_pipe_.get(), |
- client_message_pipe_.get(), kMessageSize, |
- kMessages); |
- tester.RunAndCheckResults(); |
+ TextEvent message; |
+ message.set_text("Hello"); |
+ host_message_pipe_->Send(&message, base::Closure()); |
+ |
+ run_loop_.reset(new base::RunLoop()); |
+ client_message_pipe_event_handler_.set_message_callback( |
+ base::Bind(&base::RunLoop::Quit, base::Unretained(run_loop_.get()))); |
+ run_loop_->Run(); |
+ |
+ ASSERT_EQ(1U, client_message_pipe_event_handler_.received_messages().size()); |
+ |
+ std::unique_ptr<TextEvent> received_message = ParseMessage<TextEvent>( |
+ client_message_pipe_event_handler_.received_messages().front().get()); |
+ EXPECT_EQ(message.text(), received_message->text()); |
} |
// Verify that data streams can be created after connection has been initiated. |
@@ -366,7 +400,6 @@ TEST_F(WebrtcTransportTest, TerminateDataChannel) { |
// Expect that the channel is closed on the host side once the client closes |
// the channel. |
- host_message_pipe_->Start(&host_message_pipe_event_handler_); |
host_message_pipe_event_handler_.set_closed_callback(base::Bind( |
&WebrtcTransportTest::OnHostChannelClosed, base::Unretained(this))); |