summaryrefslogtreecommitdiffstats
path: root/net/quic/test_tools
diff options
context:
space:
mode:
authorrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-11 08:49:07 +0000
committerrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-11 08:49:07 +0000
commitcff7b7b50c63dc3b03cc49e6c0ba999d5e51da4a (patch)
tree817949bdc92f9d7cc758c0abe1de78dd7aecbe9e /net/quic/test_tools
parent3bae1d223e934227c005e2923413ca6499c4e481 (diff)
downloadchromium_src-cff7b7b50c63dc3b03cc49e6c0ba999d5e51da4a.zip
chromium_src-cff7b7b50c63dc3b03cc49e6c0ba999d5e51da4a.tar.gz
chromium_src-cff7b7b50c63dc3b03cc49e6c0ba999d5e51da4a.tar.bz2
Handling partial writes and fin-only writes in QUIC.
This handles an API problem for sending a fin with no associated data. This can happen at the GFE if we're dechunking HTTP, have sent all bytes read from a backend, and then we get a 0 byte terminal chunk. In this case, we have no way of telling when we write data if the fin was consumed, or if the write was blocked at an underlying layer and the end of data would otherwise never be communicated to the peer. Merge internal change: 40340063 Review URL: https://chromiumcodereview.appspot.com/11820003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176287 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/test_tools')
-rw-r--r--net/quic/test_tools/quic_test_utils.cc5
-rw-r--r--net/quic/test_tools/quic_test_utils.h5
2 files changed, 7 insertions, 3 deletions
diff --git a/net/quic/test_tools/quic_test_utils.cc b/net/quic/test_tools/quic_test_utils.cc
index f6f4766..bb509f8 100644
--- a/net/quic/test_tools/quic_test_utils.cc
+++ b/net/quic/test_tools/quic_test_utils.cc
@@ -9,13 +9,14 @@
using std::max;
using std::min;
using std::string;
+using testing::_;
namespace net {
namespace test {
MockFramerVisitor::MockFramerVisitor() {
// By default, we want to accept packets.
- ON_CALL(*this, OnPacketHeader(testing::_))
+ ON_CALL(*this, OnPacketHeader(_))
.WillByDefault(testing::Return(true));
}
@@ -101,6 +102,8 @@ bool PacketSavingConnection::SendPacket(QuicPacketSequenceNumber number,
MockSession::MockSession(QuicConnection* connection, bool is_server)
: QuicSession(connection, is_server) {
+ ON_CALL(*this, WriteData(_, _, _, _))
+ .WillByDefault(testing::Return(QuicConsumedData(0, false)));
}
MockSession::~MockSession() {
diff --git a/net/quic/test_tools/quic_test_utils.h b/net/quic/test_tools/quic_test_utils.h
index 89d7103..544543a 100644
--- a/net/quic/test_tools/quic_test_utils.h
+++ b/net/quic/test_tools/quic_test_utils.h
@@ -199,8 +199,9 @@ class MockSession : public QuicSession {
MOCK_METHOD0(CreateOutgoingReliableStream, ReliableQuicStream*());
MOCK_METHOD3(WriteData,
void(QuicStreamId id, base::StringPiece data, bool fin));
- MOCK_METHOD4(WriteData, int(QuicStreamId id, base::StringPiece data,
- QuicStreamOffset offset, bool fin));
+ MOCK_METHOD4(WriteData, QuicConsumedData(QuicStreamId id,
+ base::StringPiece data,
+ QuicStreamOffset offset, bool fin));
MOCK_METHOD0(IsHandshakeComplete, bool());
private: