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

Unified Diff: remoting/protocol/jingle_session_unittest.cc

Issue 7508044: Remove video_channel() from Session interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 years, 4 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/jingle_session.cc ('k') | remoting/protocol/protobuf_video_reader.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/protocol/jingle_session_unittest.cc
diff --git a/remoting/protocol/jingle_session_unittest.cc b/remoting/protocol/jingle_session_unittest.cc
index 1d09521f759a6ed78090aee1cd4246aa329f91d2..1a53c6e3168555bf68d436fc3d0e8121a236807f 100644
--- a/remoting/protocol/jingle_session_unittest.cc
+++ b/remoting/protocol/jingle_session_unittest.cc
@@ -13,6 +13,7 @@
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
#include "net/socket/socket.h"
+#include "net/socket/stream_socket.h"
#include "remoting/protocol/jingle_session.h"
#include "remoting/protocol/jingle_session_manager.h"
#include "remoting/jingle_glue/jingle_thread.h"
@@ -53,6 +54,7 @@ const int kMessages = 100;
const int kTestDataSize = kMessages * kMessageSize;
const int kUdpWriteDelayMs = 10;
const char kTestToken[] = "a_dummy_token";
+const char kChannelName[] = "test_channel";
const char kHostJid[] = "host1@gmail.com/123";
const char kClientJid[] = "host2@gmail.com/321";
@@ -214,12 +216,12 @@ class JingleSessionTest : public testing::Test {
{
InSequence dummy;
- EXPECT_CALL(host_connection_callback_,
- OnStateChange(Session::CONNECTING))
- .Times(1);
if (shared_secret == kTestSharedSecret) {
EXPECT_CALL(host_connection_callback_,
OnStateChange(Session::CONNECTED))
+ .Times(1);
+ EXPECT_CALL(host_connection_callback_,
+ OnStateChange(Session::CONNECTED_CHANNELS))
.Times(1)
.WillOnce(QuitThreadOnCounter(&not_connected_peers));
// Expect that the connection will be closed eventually.
@@ -231,6 +233,9 @@ class JingleSessionTest : public testing::Test {
EXPECT_CALL(host_connection_callback_,
OnStateChange(Session::CONNECTED))
.Times(AtMost(1));
+ EXPECT_CALL(host_connection_callback_,
+ OnStateChange(Session::CONNECTED_CHANNELS))
+ .Times(AtMost(1));
// Expect that the connection will be closed eventually.
EXPECT_CALL(host_connection_callback_,
OnStateChange(Session::FAILED))
@@ -248,12 +253,18 @@ class JingleSessionTest : public testing::Test {
if (shared_secret == kTestSharedSecret) {
EXPECT_CALL(client_connection_callback_,
OnStateChange(Session::CONNECTED))
+ .Times(1);
+ EXPECT_CALL(client_connection_callback_,
+ OnStateChange(Session::CONNECTED_CHANNELS))
.Times(1)
.WillOnce(QuitThreadOnCounter(&not_connected_peers));
} else {
EXPECT_CALL(client_connection_callback_,
OnStateChange(Session::CONNECTED))
.Times(AtMost(1));
+ EXPECT_CALL(client_connection_callback_,
+ OnStateChange(Session::CONNECTED_CHANNELS))
+ .Times(AtMost(1));
}
// Expect that the connection will be closed eventually.
EXPECT_CALL(client_connection_callback_,
@@ -292,14 +303,6 @@ class JingleSessionTest : public testing::Test {
class ChannelTesterBase : public base::RefCountedThreadSafe<ChannelTesterBase> {
public:
- enum ChannelType {
- CONTROL,
- EVENT,
- VIDEO,
- VIDEO_RTP,
- VIDEO_RTCP,
- };
-
ChannelTesterBase(Session* host_session,
Session* client_session)
: host_session_(host_session),
@@ -309,10 +312,9 @@ class ChannelTesterBase : public base::RefCountedThreadSafe<ChannelTesterBase> {
virtual ~ChannelTesterBase() { }
- void Start(ChannelType channel) {
+ void Start() {
MessageLoop::current()->PostTask(
- FROM_HERE, NewRunnableMethod(this, &ChannelTesterBase::DoStart,
- channel));
+ FROM_HERE, NewRunnableMethod(this, &ChannelTesterBase::DoStart));
}
bool WaitFinished() {
@@ -322,15 +324,12 @@ class ChannelTesterBase : public base::RefCountedThreadSafe<ChannelTesterBase> {
virtual void CheckResults() = 0;
protected:
- void DoStart(ChannelType channel) {
- socket_1_ = SelectChannel(host_session_, channel);
- socket_2_ = SelectChannel(client_session_, channel);
-
- InitBuffers();
- DoRead();
- DoWrite();
+ void DoStart() {
+ InitChannels();
}
+ virtual void InitChannels() = 0;
+
void Done() {
done_ = true;
MessageLoop::current()->PostTask(FROM_HERE, base::Bind(&QuitCurrentThread));
@@ -340,29 +339,9 @@ class ChannelTesterBase : public base::RefCountedThreadSafe<ChannelTesterBase> {
virtual void DoWrite() = 0;
virtual void DoRead() = 0;
- net::Socket* SelectChannel(Session* session,
- ChannelType channel) {
- switch (channel) {
- case CONTROL:
- return session->control_channel();
- case EVENT:
- return session->event_channel();
- case VIDEO:
- return session->video_channel();
- case VIDEO_RTP:
- return session->video_rtp_channel();
- case VIDEO_RTCP:
- return session->video_rtcp_channel();
- default:
- NOTREACHED();
- return NULL;
- }
- }
-
Session* host_session_;
Session* client_session_;
- net::Socket* socket_1_;
- net::Socket* socket_2_;
+ scoped_ptr<net::Socket> sockets_[2];
bool done_;
};
@@ -400,6 +379,36 @@ class TCPChannelTester : public ChannelTesterBase {
}
protected:
+ virtual void InitChannels() OVERRIDE {
+ host_session_->CreateStreamChannel(
+ kChannelName,
+ base::Bind(&TCPChannelTester::OnChannelReady,
+ base::Unretained(this), 0));
+ client_session_->CreateStreamChannel(
+ kChannelName,
+ base::Bind(&TCPChannelTester::OnChannelReady,
+ base::Unretained(this), 1));
+ }
+
+ void OnChannelReady(int id, const std::string name,
+ net::StreamSocket* socket) {
+ ASSERT_TRUE(socket);
+ ASSERT_EQ(name, kChannelName);
+ if (!socket) {
+ Done();
+ return;
+ }
+
+ DCHECK(id >= 0 && id < 2);
+ sockets_[id].reset(socket);
+
+ if (sockets_[0].get() && sockets_[1].get()) {
+ InitBuffers();
+ DoRead();
+ DoWrite();
+ }
+ }
+
virtual void InitBuffers() {
output_buffer_ = new net::DrainableIOBuffer(
new net::IOBuffer(test_data_size_), test_data_size_);
@@ -415,7 +424,7 @@ class TCPChannelTester : public ChannelTesterBase {
break;
int bytes_to_write = std::min(output_buffer_->BytesRemaining(),
message_size_);
- result = socket_1_->Write(output_buffer_, bytes_to_write, &write_cb_);
+ result = sockets_[0]->Write(output_buffer_, bytes_to_write, &write_cb_);
HandleWriteResult(result);
};
}
@@ -439,7 +448,7 @@ class TCPChannelTester : public ChannelTesterBase {
int result = 1;
while (result > 0) {
input_buffer_->SetCapacity(input_buffer_->offset() + message_size_);
- result = socket_2_->Read(input_buffer_, message_size_, &read_cb_);
+ result = sockets_[1]->Read(input_buffer_, message_size_, &read_cb_);
HandleReadResult(result);
};
}
@@ -536,6 +545,36 @@ class UDPChannelTester : public ChannelTesterBase {
}
protected:
+ virtual void InitChannels() OVERRIDE {
+ host_session_->CreateDatagramChannel(
+ kChannelName,
+ base::Bind(&UDPChannelTester::OnChannelReady,
+ base::Unretained(this), 0));
+ client_session_->CreateDatagramChannel(
+ kChannelName,
+ base::Bind(&UDPChannelTester::OnChannelReady,
+ base::Unretained(this), 1));
+ }
+
+ void OnChannelReady(int id, const std::string name, net::Socket* socket) {
+ ASSERT_TRUE(socket);
+ ASSERT_EQ(name, kChannelName);
+ if (!socket) {
+ Done();
+ return;
+ }
+
+ DCHECK(id >= 0 && id < 2);
+ sockets_[id].reset(socket);
+
+ if (sockets_[0].get() && sockets_[1].get()) {
+ InitBuffers();
+ DoRead();
+ DoWrite();
+ }
+ }
+
+
virtual void InitBuffers() {
}
@@ -551,7 +590,7 @@ class UDPChannelTester : public ChannelTesterBase {
// Put index of this packet in the beginning of the packet body.
memcpy(packet->data(), &packets_sent_, sizeof(packets_sent_));
- int result = socket_1_->Write(packet, kMessageSize, &write_cb_);
+ int result = sockets_[0]->Write(packet, kMessageSize, &write_cb_);
HandleWriteResult(result);
}
@@ -579,7 +618,7 @@ class UDPChannelTester : public ChannelTesterBase {
int kReadSize = kMessageSize * 2;
read_buffer_ = new net::IOBuffer(kReadSize);
- result = socket_2_->Read(read_buffer_, kReadSize, &read_cb_);
+ result = sockets_[1]->Read(read_buffer_, kReadSize, &read_cb_);
HandleReadResult(result);
};
}
@@ -678,43 +717,13 @@ TEST_F(JingleSessionTest, ConnectBadChannelAuth) {
}
// Verify that data can be transmitted over the event channel.
-TEST_F(JingleSessionTest, TestControlChannel) {
+TEST_F(JingleSessionTest, TestTcpChannel) {
CreateServerPair();
ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
scoped_refptr<TCPChannelTester> tester(
new TCPChannelTester(host_session_.get(), client_session_.get(),
kMessageSize, kMessages));
- tester->Start(ChannelTesterBase::CONTROL);
- ASSERT_TRUE(tester->WaitFinished());
- tester->CheckResults();
-
- // Connections must be closed while |tester| still exists.
- CloseSessions();
-}
-
-// Verify that data can be transmitted over the video channel.
-TEST_F(JingleSessionTest, TestVideoChannel) {
- CreateServerPair();
- ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
- scoped_refptr<TCPChannelTester> tester(
- new TCPChannelTester(host_session_.get(), client_session_.get(),
- kMessageSize, kMessageSize));
- tester->Start(ChannelTesterBase::VIDEO);
- ASSERT_TRUE(tester->WaitFinished());
- tester->CheckResults();
-
- // Connections must be closed while |tester| still exists.
- CloseSessions();
-}
-
-// Verify that data can be transmitted over the event channel.
-TEST_F(JingleSessionTest, TestEventChannel) {
- CreateServerPair();
- ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
- scoped_refptr<TCPChannelTester> tester(
- new TCPChannelTester(host_session_.get(), client_session_.get(),
- kMessageSize, kMessageSize));
- tester->Start(ChannelTesterBase::EVENT);
+ tester->Start();
ASSERT_TRUE(tester->WaitFinished());
tester->CheckResults();
@@ -723,13 +732,12 @@ TEST_F(JingleSessionTest, TestEventChannel) {
}
// Verify that data can be transmitted over the video RTP channel.
-// Disabled because RTP support is disabled, see crbug.com/91538 .
-TEST_F(JingleSessionTest, DISABLED_TestVideoRtpChannel) {
+TEST_F(JingleSessionTest, TestUdpChannel) {
CreateServerPair();
ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
scoped_refptr<UDPChannelTester> tester(
new UDPChannelTester(host_session_.get(), client_session_.get()));
- tester->Start(ChannelTesterBase::VIDEO_RTP);
+ tester->Start();
ASSERT_TRUE(tester->WaitFinished());
tester->CheckResults();
@@ -746,28 +754,37 @@ TEST_F(JingleSessionTest, TestSpeed) {
tester = new ChannelSpeedTester(host_session_.get(),
client_session_.get(), 512);
- tester->Start(ChannelTesterBase::VIDEO);
+ tester->Start();
ASSERT_TRUE(tester->WaitFinished());
LOG(INFO) << "Time for 512 bytes "
<< tester->GetElapsedTime().InMilliseconds() << " ms.";
+ CloseSessions();
+ ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
+
tester = new ChannelSpeedTester(host_session_.get(),
client_session_.get(), 1024);
- tester->Start(ChannelTesterBase::VIDEO);
+ tester->Start();
ASSERT_TRUE(tester->WaitFinished());
LOG(INFO) << "Time for 1024 bytes "
<< tester->GetElapsedTime().InMilliseconds() << " ms.";
+ CloseSessions();
+ ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
+
tester = new ChannelSpeedTester(host_session_.get(),
client_session_.get(), 51200);
- tester->Start(ChannelTesterBase::VIDEO);
+ tester->Start();
ASSERT_TRUE(tester->WaitFinished());
LOG(INFO) << "Time for 50k bytes "
<< tester->GetElapsedTime().InMilliseconds() << " ms.";
+ CloseSessions();
+ ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
+
tester = new ChannelSpeedTester(host_session_.get(),
client_session_.get(), 512000);
- tester->Start(ChannelTesterBase::VIDEO);
+ tester->Start();
ASSERT_TRUE(tester->WaitFinished());
LOG(INFO) << "Time for 500k bytes "
<< tester->GetElapsedTime().InMilliseconds() << " ms.";
« no previous file with comments | « remoting/protocol/jingle_session.cc ('k') | remoting/protocol/protobuf_video_reader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698