Index: net/quic/core/quic_packet_creator_test.cc |
diff --git a/net/quic/core/quic_packet_creator_test.cc b/net/quic/core/quic_packet_creator_test.cc |
index ae317668d6023f5da47749426c6e07e69e642e64..285006bf1f623d08d15b096640963f192dc8a0bf 100644 |
--- a/net/quic/core/quic_packet_creator_test.cc |
+++ b/net/quic/core/quic_packet_creator_test.cc |
@@ -13,6 +13,7 @@ |
#include "net/quic/core/crypto/null_encrypter.h" |
#include "net/quic/core/crypto/quic_decrypter.h" |
#include "net/quic/core/crypto/quic_encrypter.h" |
+#include "net/quic/core/quic_data_writer.h" |
#include "net/quic/core/quic_pending_retransmission.h" |
#include "net/quic/core/quic_simple_buffer_allocator.h" |
#include "net/quic/core/quic_utils.h" |
@@ -22,6 +23,7 @@ |
#include "net/quic/test_tools/quic_framer_peer.h" |
#include "net/quic/test_tools/quic_packet_creator_peer.h" |
#include "net/quic/test_tools/quic_test_utils.h" |
+#include "net/quic/test_tools/simple_data_producer.h" |
using std::string; |
using testing::DoAll; |
@@ -41,21 +43,25 @@ const QuicStreamId kGetNthClientInitiatedStreamId1 = kHeadersStreamId + 2; |
struct TestParams { |
TestParams(QuicVersion version, |
bool version_serialization, |
- QuicConnectionIdLength length) |
+ QuicConnectionIdLength length, |
+ bool delegate_saves_data) |
: version(version), |
connection_id_length(length), |
- version_serialization(version_serialization) {} |
+ version_serialization(version_serialization), |
+ delegate_saves_data(delegate_saves_data) {} |
friend std::ostream& operator<<(std::ostream& os, const TestParams& p) { |
os << "{ client_version: " << QuicVersionToString(p.version) |
<< " connection id length: " << p.connection_id_length |
- << " include version: " << p.version_serialization << " }"; |
+ << " include version: " << p.version_serialization |
+ << " delegate_saves_data: " << p.delegate_saves_data << " }"; |
return os; |
} |
QuicVersion version; |
QuicConnectionIdLength connection_id_length; |
bool version_serialization; |
+ bool delegate_saves_data; |
}; |
// Constructs various test permutations. |
@@ -63,31 +69,22 @@ std::vector<TestParams> GetTestParams() { |
std::vector<TestParams> params; |
constexpr QuicConnectionIdLength kMax = PACKET_8BYTE_CONNECTION_ID; |
QuicVersionVector all_supported_versions = AllSupportedVersions(); |
- for (size_t i = 0; i < all_supported_versions.size(); ++i) { |
- params.push_back(TestParams(all_supported_versions[i], true, kMax)); |
- params.push_back(TestParams(all_supported_versions[i], false, kMax)); |
+ for (bool delegate_saves_data : {true, false}) { |
+ for (size_t i = 0; i < all_supported_versions.size(); ++i) { |
+ params.push_back(TestParams(all_supported_versions[i], true, kMax, |
+ delegate_saves_data)); |
+ params.push_back(TestParams(all_supported_versions[i], false, kMax, |
+ delegate_saves_data)); |
+ } |
+ params.push_back(TestParams(all_supported_versions[0], true, |
+ PACKET_0BYTE_CONNECTION_ID, |
+ delegate_saves_data)); |
+ params.push_back( |
+ TestParams(all_supported_versions[0], true, kMax, delegate_saves_data)); |
} |
- params.push_back( |
- TestParams(all_supported_versions[0], true, PACKET_0BYTE_CONNECTION_ID)); |
- params.push_back(TestParams(all_supported_versions[0], true, kMax)); |
return params; |
} |
-class MockDelegate : public QuicPacketCreator::DelegateInterface { |
- public: |
- MockDelegate() {} |
- ~MockDelegate() override {} |
- |
- MOCK_METHOD1(OnSerializedPacket, void(SerializedPacket* packet)); |
- MOCK_METHOD3(OnUnrecoverableError, |
- void(QuicErrorCode, |
- const string&, |
- ConnectionCloseSource source)); |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(MockDelegate); |
-}; |
- |
class QuicPacketCreatorTest : public QuicTestWithParam<TestParams> { |
public: |
void ClearSerializedPacketForTests(SerializedPacket* serialized_packet) { |
@@ -136,6 +133,9 @@ class QuicPacketCreatorTest : public QuicTestWithParam<TestParams> { |
new NullEncrypter(Perspective::IS_CLIENT)); |
client_framer_.set_visitor(&framer_visitor_); |
server_framer_.set_visitor(&framer_visitor_); |
+ if (GetParam().delegate_saves_data) { |
+ creator_.set_delegate_saves_data(true); |
+ } |
} |
~QuicPacketCreatorTest() override { |
@@ -165,8 +165,19 @@ class QuicPacketCreatorTest : public QuicTestWithParam<TestParams> { |
EXPECT_EQ(STREAM_FRAME, frame.type); |
ASSERT_TRUE(frame.stream_frame); |
EXPECT_EQ(stream_id, frame.stream_frame->stream_id); |
- EXPECT_EQ(data, QuicStringPiece(frame.stream_frame->data_buffer, |
- frame.stream_frame->data_length)); |
+ if (GetParam().delegate_saves_data) { |
+ char buf[kMaxPacketSize]; |
+ QuicDataWriter writer(kMaxPacketSize, buf, Perspective::IS_CLIENT, |
+ HOST_BYTE_ORDER); |
+ if (frame.stream_frame->data_length > 0) { |
+ delegate_.WriteStreamData(stream_id, frame.stream_frame->offset, |
+ frame.stream_frame->data_length, &writer); |
+ } |
+ EXPECT_EQ(data, QuicStringPiece(buf, frame.stream_frame->data_length)); |
+ } else { |
+ EXPECT_EQ(data, QuicStringPiece(frame.stream_frame->data_buffer, |
+ frame.stream_frame->data_length)); |
+ } |
EXPECT_EQ(offset, frame.stream_frame->offset); |
EXPECT_EQ(fin, frame.stream_frame->fin); |
} |
@@ -216,13 +227,14 @@ class QuicPacketCreatorTest : public QuicTestWithParam<TestParams> { |
QuicFramer server_framer_; |
QuicFramer client_framer_; |
StrictMock<MockFramerVisitor> framer_visitor_; |
- StrictMock<MockDelegate> delegate_; |
+ StrictMock<MockPacketCreatorDelegate> delegate_; |
QuicConnectionId connection_id_; |
string data_; |
struct iovec iov_; |
SimpleBufferAllocator buffer_allocator_; |
QuicPacketCreator creator_; |
SerializedPacket serialized_packet_; |
+ SimpleDataProducer producer_; |
}; |
// Run all packet creator tests with all supported versions of QUIC, and with |