diff options
author | wez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-24 02:50:42 +0000 |
---|---|---|
committer | wez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-24 02:50:42 +0000 |
commit | 5696b83d30a6edace89241c7c9ed28387b072a85 (patch) | |
tree | 74dc7ae7276431ce0e0dd2b64a4c4b363e76803f /content/renderer/p2p/p2p_transport_impl_unittest.cc | |
parent | ee0128514bdf06e63bc4a2d01dfc9a08d8c15651 (diff) | |
download | chromium_src-5696b83d30a6edace89241c7c9ed28387b072a85.zip chromium_src-5696b83d30a6edace89241c7c9ed28387b072a85.tar.gz chromium_src-5696b83d30a6edace89241c7c9ed28387b072a85.tar.bz2 |
Fix JingleSession to respect net::StreamSocket Read/Write semantics.
Remove some unnecessary state checks in PseudoTcpAdapter.
BUG=
TEST=Unit tests and Remoting components continue to work.
Review URL: http://codereview.chromium.org/7104012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90334 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/p2p/p2p_transport_impl_unittest.cc')
-rw-r--r-- | content/renderer/p2p/p2p_transport_impl_unittest.cc | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/content/renderer/p2p/p2p_transport_impl_unittest.cc b/content/renderer/p2p/p2p_transport_impl_unittest.cc index 718111b..acbf888 100644 --- a/content/renderer/p2p/p2p_transport_impl_unittest.cc +++ b/content/renderer/p2p/p2p_transport_impl_unittest.cc @@ -21,7 +21,7 @@ using testing::_; using testing::AtMost; using testing::Exactly; -using testing::Invoke; +using testing::InvokeWithoutArgs; using webkit_glue::P2PTransport; @@ -207,16 +207,23 @@ class TcpChannelTester : public base::RefCountedThreadSafe<TcpChannelTester> { virtual ~TcpChannelTester() { } - void Start() { + void Init() { // Initialize |send_buffer_|. send_buffer_ = new net::DrainableIOBuffer(new net::IOBuffer(kTcpDataSize), kTcpDataSize); for (int i = 0; i < kTcpDataSize; ++i) { send_buffer_->data()[i] = rand() % 256; } + } + + void StartRead() { + message_loop_->PostTask( + FROM_HERE, NewRunnableMethod(this, &TcpChannelTester::DoRead)); + } + void StartWrite() { message_loop_->PostTask( - FROM_HERE, NewRunnableMethod(this, &TcpChannelTester::DoStart)); + FROM_HERE, NewRunnableMethod(this, &TcpChannelTester::DoWrite)); } void CheckResults() { @@ -237,11 +244,6 @@ class TcpChannelTester : public base::RefCountedThreadSafe<TcpChannelTester> { message_loop_->PostTask(FROM_HERE, new MessageLoop::QuitTask()); } - void DoStart() { - DoRead(); - DoWrite(); - } - void DoWrite() { if (send_buffer_->BytesRemaining() == 0) { return; @@ -388,7 +390,7 @@ TEST_F(P2PTransportImplTest, ConnectUdp) { } TEST_F(P2PTransportImplTest, ConnectTcp) { - Init(P2PTransport::PROTOCOL_UDP); + Init(P2PTransport::PROTOCOL_TCP); EXPECT_CALL(event_handler1_, OnCandidateReady(_)).WillRepeatedly( AddRemoteCandidate(transport2_.get())); @@ -445,6 +447,9 @@ TEST_F(P2PTransportImplTest, SendDataTcp) { EXPECT_CALL(event_handler2_, OnCandidateReady(_)).WillRepeatedly( AddRemoteCandidate(transport1_.get())); + scoped_refptr<TcpChannelTester> channel_tester = new TcpChannelTester( + &message_loop_, transport1_->GetChannel(), transport2_->GetChannel()); + // Transport may first become ether readable or writable, but // eventually it must be readable and writable. EXPECT_CALL(event_handler1_, OnStateChange(P2PTransport::STATE_READABLE)) @@ -454,7 +459,10 @@ TEST_F(P2PTransportImplTest, SendDataTcp) { EXPECT_CALL(event_handler1_, OnStateChange( static_cast<P2PTransport::State>(P2PTransport::STATE_READABLE | P2PTransport::STATE_WRITABLE))) - .Times(Exactly(1)); + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(channel_tester.get(), + &TcpChannelTester::StartWrite)) + .RetiresOnSaturation(); EXPECT_CALL(event_handler2_, OnStateChange(P2PTransport::STATE_READABLE)) .Times(AtMost(1)); @@ -463,15 +471,15 @@ TEST_F(P2PTransportImplTest, SendDataTcp) { EXPECT_CALL(event_handler2_, OnStateChange( static_cast<P2PTransport::State>(P2PTransport::STATE_READABLE | P2PTransport::STATE_WRITABLE))) - .Times(Exactly(1)); - - scoped_refptr<TcpChannelTester> channel_tester = new TcpChannelTester( - &message_loop_, transport1_->GetChannel(), transport2_->GetChannel()); + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(channel_tester.get(), + &TcpChannelTester::StartRead)) + .RetiresOnSaturation(); message_loop_.PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask(), TestTimeouts::action_max_timeout_ms()); - channel_tester->Start(); + channel_tester->Init(); message_loop_.Run(); channel_tester->CheckResults(); } |