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

Side by Side Diff: net/quic/quic_packet_creator_test.cc

Issue 1562833003: relnote: Clear the FEC group in QuicPacketCreator when encryption_level is none and close the conne… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@26_CL_111359954
Patch Set: sync quic_error_map with quic_protocol Created 4 years, 11 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 unified diff | Download patch
« no previous file with comments | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_packet_generator_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_packet_creator.h" 5 #include "net/quic/quic_packet_creator.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 FLAGS_quic_always_log_bugs_for_tests = true; 129 FLAGS_quic_always_log_bugs_for_tests = true;
130 creator_.set_connection_id_length(GetParam().connection_id_length); 130 creator_.set_connection_id_length(GetParam().connection_id_length);
131 131
132 creator_.SetEncrypter(ENCRYPTION_INITIAL, new NullEncrypter()); 132 creator_.SetEncrypter(ENCRYPTION_INITIAL, new NullEncrypter());
133 creator_.SetEncrypter(ENCRYPTION_FORWARD_SECURE, new NullEncrypter()); 133 creator_.SetEncrypter(ENCRYPTION_FORWARD_SECURE, new NullEncrypter());
134 client_framer_.set_visitor(&framer_visitor_); 134 client_framer_.set_visitor(&framer_visitor_);
135 client_framer_.set_received_entropy_calculator(&entropy_calculator_); 135 client_framer_.set_received_entropy_calculator(&entropy_calculator_);
136 server_framer_.set_visitor(&framer_visitor_); 136 server_framer_.set_visitor(&framer_visitor_);
137 // TODO(ianswett): Fix this test so it uses a non-null encrypter. 137 // TODO(ianswett): Fix this test so it uses a non-null encrypter.
138 FLAGS_quic_never_write_unencrypted_data = false; 138 FLAGS_quic_never_write_unencrypted_data = false;
139 FLAGS_quic_no_unencrypted_fec = false;
139 } 140 }
140 141
141 ~QuicPacketCreatorTest() override {} 142 ~QuicPacketCreatorTest() override {}
142 143
143 SerializedPacket SerializeAllFrames(const QuicFrames& frames) { 144 SerializedPacket SerializeAllFrames(const QuicFrames& frames) {
144 SerializedPacket packet = 145 SerializedPacket packet =
145 creator_.SerializeAllFrames(frames, buffer_, kMaxPacketSize); 146 creator_.SerializeAllFrames(frames, buffer_, kMaxPacketSize);
146 EXPECT_EQ(QuicPacketCreatorPeer::GetEncryptionLevel(&creator_), 147 EXPECT_EQ(QuicPacketCreatorPeer::GetEncryptionLevel(&creator_),
147 packet.encryption_level); 148 packet.encryption_level);
148 return packet; 149 return packet;
(...skipping 1432 matching lines...) Expand 10 before | Expand all | Expand 10 after
1581 1582
1582 TEST_P(QuicPacketCreatorTest, AddUnencryptedStreamDataClosesConnection) { 1583 TEST_P(QuicPacketCreatorTest, AddUnencryptedStreamDataClosesConnection) {
1583 FLAGS_quic_never_write_unencrypted_data = true; 1584 FLAGS_quic_never_write_unencrypted_data = true;
1584 EXPECT_CALL(delegate_, CloseConnection(_, _)); 1585 EXPECT_CALL(delegate_, CloseConnection(_, _));
1585 QuicStreamFrame stream_frame(kHeadersStreamId, /*fin=*/false, 0u, 1586 QuicStreamFrame stream_frame(kHeadersStreamId, /*fin=*/false, 0u,
1586 StringPiece()); 1587 StringPiece());
1587 EXPECT_DFATAL(creator_.AddSavedFrame(QuicFrame(&stream_frame)), 1588 EXPECT_DFATAL(creator_.AddSavedFrame(QuicFrame(&stream_frame)),
1588 "Cannot send stream data without encryption."); 1589 "Cannot send stream data without encryption.");
1589 } 1590 }
1590 1591
1592 TEST_P(QuicPacketCreatorTest, DontSendUnencryptedFec) {
1593 FLAGS_quic_no_unencrypted_fec = true;
1594 // Send FEC packet every 6 packets.
1595 creator_.set_max_packets_per_fec_group(6);
1596 // Send stream data encrypted with FEC protection.
1597 creator_.set_encryption_level(ENCRYPTION_INITIAL);
1598 // Turn on FEC protection.
1599 QuicFrame frame;
1600 QuicIOVector io_vector(MakeIOVector("test"));
1601 ASSERT_TRUE(creator_.ConsumeData(kHeadersStreamId, io_vector, 0u, 0u, false,
1602 false, &frame, MUST_FEC_PROTECT));
1603 EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
1604 // Serialize the packet.
1605 EXPECT_CALL(delegate_, OnSerializedPacket(_))
1606 .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
1607 creator_.Flush();
1608
1609 // The creator will clear the FEC group rather than try to send without
1610 // encryption.
1611 creator_.set_encryption_level(ENCRYPTION_NONE);
1612 EXPECT_CALL(delegate_, OnResetFecGroup());
1613 creator_.MaybeSendFecPacketAndCloseGroup(true, false);
1614 }
1615
1616 TEST_P(QuicPacketCreatorTest, SerializeUnencryptedFecClosesConnection) {
1617 FLAGS_quic_no_unencrypted_fec = true;
1618 // Send FEC packet every 6 packets.
1619 creator_.set_max_packets_per_fec_group(6);
1620 // Send stream data encrypted with FEC protection.
1621 creator_.set_encryption_level(ENCRYPTION_INITIAL);
1622 // Turn on FEC protection.
1623 QuicFrame frame;
1624 QuicIOVector io_vector(MakeIOVector("test"));
1625 ASSERT_TRUE(creator_.ConsumeData(kHeadersStreamId, io_vector, 0u, 0u, false,
1626 false, &frame, MUST_FEC_PROTECT));
1627 EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
1628 // Serialize the packet.
1629 EXPECT_CALL(delegate_, OnSerializedPacket(_))
1630 .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
1631 creator_.Flush();
1632
1633 // Try to send an FEC packet unencrypted.
1634 creator_.set_encryption_level(ENCRYPTION_NONE);
1635 EXPECT_CALL(delegate_, CloseConnection(QUIC_UNENCRYPTED_FEC_DATA, _));
1636 char seralized_fec_buffer[kMaxPacketSize];
1637 EXPECT_DFATAL(QuicPacketCreatorPeer::SerializeFec(
1638 &creator_, seralized_fec_buffer, kMaxPacketSize),
1639 "SerializeFEC must be called with encryption.");
1640 }
1641
1591 } // namespace 1642 } // namespace
1592 } // namespace test 1643 } // namespace test
1593 } // namespace net 1644 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_packet_generator_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698