Index: net/quic/quic_session_test.cc |
diff --git a/net/quic/quic_session_test.cc b/net/quic/quic_session_test.cc |
index 34025de451583a58291fb9607ba55a1d7747257c..92c3cabdfb3cef115db0b0523082f151c7d7fb39 100644 |
--- a/net/quic/quic_session_test.cc |
+++ b/net/quic/quic_session_test.cc |
@@ -24,13 +24,15 @@ |
#include "net/spdy/spdy_framer.h" |
#include "net/test/gtest_util.h" |
#include "testing/gmock/include/gmock/gmock.h" |
+#include "testing/gmock_mutant.h" |
#include "testing/gtest/include/gtest/gtest.h" |
using base::hash_map; |
using std::set; |
using std::vector; |
+using testing::CreateFunctor; |
using testing::InSequence; |
-using testing::InvokeWithoutArgs; |
+using testing::Invoke; |
using testing::Return; |
using testing::StrictMock; |
using testing::_; |
@@ -162,8 +164,8 @@ class TestSession : public QuicSession { |
writev_consumes_all_data_ = val; |
} |
- QuicConsumedData SendStreamData() { |
- return WritevData(5, IOVector(), 0, true, NULL); |
+ QuicConsumedData SendStreamData(QuicStreamId id) { |
+ return WritevData(id, IOVector(), 0, true, NULL); |
} |
private: |
@@ -354,9 +356,9 @@ TEST_P(QuicSessionTest, OnCanWrite) { |
InSequence s; |
StreamBlocker stream2_blocker(&session_, stream2->id()); |
- EXPECT_CALL(*stream2, OnCanWrite()).WillOnce( |
- // Reregister, to test the loop limit. |
- InvokeWithoutArgs(&stream2_blocker, &StreamBlocker::MarkWriteBlocked)); |
+ // Reregister, to test the loop limit. |
+ EXPECT_CALL(*stream2, OnCanWrite()) |
+ .WillOnce(Invoke(&stream2_blocker, &StreamBlocker::MarkWriteBlocked)); |
EXPECT_CALL(*stream6, OnCanWrite()); |
EXPECT_CALL(*stream4, OnCanWrite()); |
session_.OnCanWrite(); |
@@ -376,23 +378,28 @@ TEST_P(QuicSessionTest, OnCanWriteBundlesStreams) { |
session_.MarkWriteBlocked(stream6->id(), kSomeMiddlePriority); |
session_.MarkWriteBlocked(stream4->id(), kSomeMiddlePriority); |
- |
EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _, _)).WillRepeatedly( |
Return(QuicTime::Delta::Zero())); |
- EXPECT_CALL(*send_algorithm, GetCongestionWindow()).WillOnce( |
- Return(kMaxPacketSize * 10)); |
- EXPECT_CALL(*stream2, OnCanWrite()).WillOnce(IgnoreResult( |
- InvokeWithoutArgs(&session_, &TestSession::SendStreamData))); |
- EXPECT_CALL(*stream6, OnCanWrite()).WillOnce(IgnoreResult( |
- InvokeWithoutArgs(&session_, &TestSession::SendStreamData))); |
- EXPECT_CALL(*stream4, OnCanWrite()).WillOnce(IgnoreResult( |
- InvokeWithoutArgs(&session_, &TestSession::SendStreamData))); |
+ EXPECT_CALL(*send_algorithm, GetCongestionWindow()) |
+ .WillOnce(Return(kMaxPacketSize * 10)); |
+ EXPECT_CALL(*stream2, OnCanWrite()) |
+ .WillOnce(IgnoreResult(Invoke(CreateFunctor( |
+ &session_, &TestSession::SendStreamData, stream2->id())))); |
+ EXPECT_CALL(*stream4, OnCanWrite()) |
+ .WillOnce(IgnoreResult(Invoke(CreateFunctor( |
+ &session_, &TestSession::SendStreamData, stream4->id())))); |
+ EXPECT_CALL(*stream6, OnCanWrite()) |
+ .WillOnce(IgnoreResult(Invoke(CreateFunctor( |
+ &session_, &TestSession::SendStreamData, stream6->id())))); |
+ |
+ // Expect that we only send one packet, the writes from different streams |
+ // should be bundled together. |
MockPacketWriter* writer = |
static_cast<MockPacketWriter*>( |
QuicConnectionPeer::GetWriter(session_.connection())); |
EXPECT_CALL(*writer, WritePacket(_, _, _, _)).WillOnce( |
Return(WriteResult(WRITE_STATUS_OK, 0))); |
- EXPECT_CALL(*send_algorithm, OnPacketSent(_, _, _, _, _)); |
+ EXPECT_CALL(*send_algorithm, OnPacketSent(_, _, _, _, _)).Times(1); |
session_.OnCanWrite(); |
EXPECT_FALSE(session_.WillingAndAbleToWrite()); |
} |
@@ -475,14 +482,12 @@ TEST_P(QuicSessionTest, BufferedHandshake) { |
EXPECT_CALL(*crypto_stream, OnCanWrite()); |
// Re-register all other streams, to show they weren't able to proceed. |
- EXPECT_CALL(*stream2, OnCanWrite()).WillOnce( |
- InvokeWithoutArgs(&stream2_blocker, &StreamBlocker::MarkWriteBlocked)); |
- |
- EXPECT_CALL(*stream3, OnCanWrite()).WillOnce( |
- InvokeWithoutArgs(&stream3_blocker, &StreamBlocker::MarkWriteBlocked)); |
- |
- EXPECT_CALL(*stream4, OnCanWrite()).WillOnce( |
- InvokeWithoutArgs(&stream4_blocker, &StreamBlocker::MarkWriteBlocked)); |
+ EXPECT_CALL(*stream2, OnCanWrite()) |
+ .WillOnce(Invoke(&stream2_blocker, &StreamBlocker::MarkWriteBlocked)); |
+ EXPECT_CALL(*stream3, OnCanWrite()) |
+ .WillOnce(Invoke(&stream3_blocker, &StreamBlocker::MarkWriteBlocked)); |
+ EXPECT_CALL(*stream4, OnCanWrite()) |
+ .WillOnce(Invoke(&stream4_blocker, &StreamBlocker::MarkWriteBlocked)); |
session_.OnCanWrite(); |
EXPECT_TRUE(session_.WillingAndAbleToWrite()); |