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

Unified Diff: net/quic/quic_packet_creator_test.cc

Issue 12806002: Land Recent QUIC Changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: minor comment fix Created 7 years, 9 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 | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_packet_generator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_packet_creator_test.cc
diff --git a/net/quic/quic_packet_creator_test.cc b/net/quic/quic_packet_creator_test.cc
index 752da9118d1220428f6b99b045a2cfbdaf4d5ef5..423028a5f196c2b9cf8cb7b1dfb6b719bd18b605 100644
--- a/net/quic/quic_packet_creator_test.cc
+++ b/net/quic/quic_packet_creator_test.cc
@@ -10,39 +10,49 @@
#include "net/quic/crypto/quic_encrypter.h"
#include "net/quic/crypto/quic_random.h"
#include "net/quic/quic_utils.h"
+#include "net/quic/test_tools/quic_packet_creator_peer.h"
#include "net/quic/test_tools/quic_test_utils.h"
#include "testing/gmock/include/gmock/gmock.h"
using base::StringPiece;
using std::string;
using std::vector;
+using testing::DoAll;
using testing::InSequence;
+using testing::Return;
+using testing::SaveArg;
using testing::_;
namespace net {
namespace test {
namespace {
-class QuicPacketCreatorTest : public ::testing::Test {
+class QuicPacketCreatorTest : public ::testing::TestWithParam<bool> {
protected:
QuicPacketCreatorTest()
- : framer_(kQuicVersion1,
- QuicDecrypter::Create(kNULL),
- QuicEncrypter::Create(kNULL)),
+ : server_framer_(kQuicVersion1,
+ QuicDecrypter::Create(kNULL),
+ QuicEncrypter::Create(kNULL),
+ true),
+ client_framer_(kQuicVersion1,
+ QuicDecrypter::Create(kNULL),
+ QuicEncrypter::Create(kNULL),
+ false),
id_(1),
sequence_number_(0),
guid_(2),
data_("foo"),
- creator_(guid_, &framer_, QuicRandom::GetInstance()) {
- framer_.set_visitor(&framer_visitor_);
+ creator_(guid_, &client_framer_, QuicRandom::GetInstance(), false) {
+ client_framer_.set_visitor(&framer_visitor_);
+ server_framer_.set_visitor(&framer_visitor_);
}
~QuicPacketCreatorTest() {
}
void ProcessPacket(QuicPacket* packet) {
scoped_ptr<QuicEncryptedPacket> encrypted(
- framer_.EncryptPacket(sequence_number_, *packet));
- framer_.ProcessPacket(*encrypted);
+ server_framer_.EncryptPacket(sequence_number_, *packet));
+ server_framer_.ProcessPacket(*encrypted);
}
void CheckStreamFrame(const QuicFrame& frame, QuicStreamId stream_id,
@@ -56,7 +66,8 @@ class QuicPacketCreatorTest : public ::testing::Test {
}
QuicFrames frames_;
- QuicFramer framer_;
+ QuicFramer server_framer_;
+ QuicFramer client_framer_;
testing::StrictMock<MockFramerVisitor> framer_visitor_;
QuicStreamId id_;
QuicPacketSequenceNumber sequence_number_;
@@ -65,25 +76,8 @@ class QuicPacketCreatorTest : public ::testing::Test {
QuicPacketCreator creator_;
};
-TEST_F(QuicPacketCreatorTest, SerializeFrame) {
- frames_.push_back(QuicFrame(new QuicStreamFrame(
- 0u, false, 0u, StringPiece(""))));
- SerializedPacket serialized = creator_.SerializeAllFrames(frames_);
- delete frames_[0].stream_frame;
-
- {
- InSequence s;
- EXPECT_CALL(framer_visitor_, OnPacket());
- EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
- EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
- EXPECT_CALL(framer_visitor_, OnPacketComplete());
- }
- ProcessPacket(serialized.packet);
- delete serialized.packet;
-}
-
TEST_F(QuicPacketCreatorTest, SerializeFrames) {
- frames_.push_back(QuicFrame(new QuicAckFrame(0u, 0u)));
+ frames_.push_back(QuicFrame(new QuicAckFrame(0u, QuicTime::Zero(), 0u)));
frames_.push_back(QuicFrame(new QuicStreamFrame(
0u, false, 0u, StringPiece(""))));
frames_.push_back(QuicFrame(new QuicStreamFrame(
@@ -147,7 +141,7 @@ TEST_F(QuicPacketCreatorTest, SerializeWithFEC) {
TEST_F(QuicPacketCreatorTest, SerializeConnectionClose) {
QuicConnectionCloseFrame frame;
frame.error_code = QUIC_NO_ERROR;
- frame.ack_frame = QuicAckFrame(0u, 0u);
+ frame.ack_frame = QuicAckFrame(0u, QuicTime::Zero(), 0u);
SerializedPacket serialized = creator_.SerializeConnectionClose(&frame);
ASSERT_EQ(1u, serialized.sequence_number);
@@ -188,11 +182,54 @@ TEST_F(QuicPacketCreatorTest, CreateStreamFrameFinOnly) {
delete frame.stream_frame;
}
-TEST_F(QuicPacketCreatorTest, CreateStreamFrameTooLarge) {
+TEST_F(QuicPacketCreatorTest, SerializeVersionNegotiationPacket) {
+ QuicVersionTagList versions;
+ versions.push_back(kQuicVersion1);
+ scoped_ptr<QuicEncryptedPacket> encrypted(
+ creator_.SerializeVersionNegotiationPacket(versions));
+
+ {
+ InSequence s;
+ EXPECT_CALL(framer_visitor_, OnPacket());
+ EXPECT_CALL(framer_visitor_, OnVersionNegotiationPacket(_));
+ }
+ client_framer_.ProcessPacket(*encrypted.get());
+}
+
+INSTANTIATE_TEST_CASE_P(ToggleVersionSerialization,
+ QuicPacketCreatorTest,
+ ::testing::Values(false, true));
+
+TEST_P(QuicPacketCreatorTest, SerializeFrame) {
+ if (!GetParam()) {
+ creator_.StopSendingVersion();
+ }
+ frames_.push_back(QuicFrame(new QuicStreamFrame(
+ 0u, false, 0u, StringPiece(""))));
+ SerializedPacket serialized = creator_.SerializeAllFrames(frames_);
+ delete frames_[0].stream_frame;
+
+ QuicPacketHeader header;
+ {
+ InSequence s;
+ EXPECT_CALL(framer_visitor_, OnPacket());
+ EXPECT_CALL(framer_visitor_, OnPacketHeader(_)).WillOnce(
+ DoAll(SaveArg<0>(&header), Return(true)));
+ EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
+ EXPECT_CALL(framer_visitor_, OnPacketComplete());
+ }
+ ProcessPacket(serialized.packet);
+ EXPECT_EQ(GetParam(), header.public_header.version_flag);
+ delete serialized.packet;
+}
+
+TEST_P(QuicPacketCreatorTest, CreateStreamFrameTooLarge) {
+ if (!GetParam()) {
+ creator_.StopSendingVersion();
+ }
// A string larger than fits into a frame.
- size_t ciphertext_size = NullEncrypter().GetCiphertextSize(1);
- creator_.options()->max_packet_length = ciphertext_size +
- QuicPacketCreator::StreamFramePacketOverhead(1, !kIncludeVersion);
+ creator_.options()->max_packet_length = GetPacketLengthForOneStream(
+ QuicPacketCreatorPeer::SendVersionInPacket(&creator_), 1);
QuicFrame frame;
size_t consumed = creator_.CreateStreamFrame(1u, "test", 0u, true, &frame);
EXPECT_EQ(1u, consumed);
@@ -200,11 +237,16 @@ TEST_F(QuicPacketCreatorTest, CreateStreamFrameTooLarge) {
delete frame.stream_frame;
}
-TEST_F(QuicPacketCreatorTest, AddFrameAndSerialize) {
+TEST_P(QuicPacketCreatorTest, AddFrameAndSerialize) {
+ if (!GetParam()) {
+ creator_.StopSendingVersion();
+ }
const size_t max_plaintext_size =
- framer_.GetMaxPlaintextSize(creator_.options()->max_packet_length);
+ client_framer_.GetMaxPlaintextSize(creator_.options()->max_packet_length);
EXPECT_FALSE(creator_.HasPendingFrames());
- EXPECT_EQ(max_plaintext_size - GetPacketHeaderSize(!kIncludeVersion),
+ EXPECT_EQ(max_plaintext_size -
+ GetPacketHeaderSize(
+ QuicPacketCreatorPeer::SendVersionInPacket(&creator_)),
creator_.BytesFree());
// Add a variety of frame types and then a padding frame.
@@ -243,7 +285,9 @@ TEST_F(QuicPacketCreatorTest, AddFrameAndSerialize) {
delete serialized.retransmittable_frames;
EXPECT_FALSE(creator_.HasPendingFrames());
- EXPECT_EQ(max_plaintext_size - GetPacketHeaderSize(!kIncludeVersion),
+ EXPECT_EQ(max_plaintext_size -
+ GetPacketHeaderSize(
+ QuicPacketCreatorPeer::SendVersionInPacket(&creator_)),
creator_.BytesFree());
}
« no previous file with comments | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_packet_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698