diff options
Diffstat (limited to 'chromium/net/quic/quic_fec_group_test.cc')
-rw-r--r-- | chromium/net/quic/quic_fec_group_test.cc | 59 |
1 files changed, 41 insertions, 18 deletions
diff --git a/chromium/net/quic/quic_fec_group_test.cc b/chromium/net/quic/quic_fec_group_test.cc index 3de40b1bc7c..b9420dd11d5 100644 --- a/chromium/net/quic/quic_fec_group_test.cc +++ b/chromium/net/quic/quic_fec_group_test.cc @@ -2,12 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "net/quic/quic_fec_group.h" + #include <algorithm> #include <vector> +#include "base/basictypes.h" #include "base/logging.h" #include "base/memory/scoped_ptr.h" -#include "net/quic/quic_fec_group.h" #include "testing/gmock/include/gmock/gmock.h" using ::testing::_; @@ -35,8 +37,6 @@ const bool kEntropyFlag[] = { true, }; -const bool kTestFecPacketEntropy = false; - } // namespace class QuicFecGroupTest : public ::testing::Test { @@ -44,7 +44,6 @@ class QuicFecGroupTest : public ::testing::Test { void RunTest(size_t num_packets, size_t lost_packet, bool out_of_order) { size_t max_len = strlen(kData[0]); scoped_ptr<char[]> redundancy(new char[max_len]); - bool entropy_redundancy = false; for (size_t packet = 0; packet < num_packets; ++packet) { for (size_t i = 0; i < max_len; i++) { if (packet == 0) { @@ -56,7 +55,6 @@ class QuicFecGroupTest : public ::testing::Test { uint8 byte = i > strlen(kData[packet]) ? 0x00 : kData[packet][i]; redundancy[i] = redundancy[i] ^ byte; } - entropy_redundancy = (entropy_redundancy != kEntropyFlag[packet]); } QuicFecGroup group; @@ -71,17 +69,19 @@ class QuicFecGroupTest : public ::testing::Test { QuicFecData fec; fec.fec_group = 0; fec.redundancy = StringPiece(redundancy.get(), strlen(kData[0])); - ASSERT_TRUE(group.UpdateFec(num_packets, entropy_redundancy, fec)); + ASSERT_TRUE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, num_packets, + fec)); } else { QuicPacketHeader header; header.packet_sequence_number = packet; header.entropy_flag = kEntropyFlag[packet]; - ASSERT_TRUE(group.Update(header, kData[packet])); + ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, + kData[packet])); } ASSERT_TRUE(group.CanRevive() == (packet == num_packets - 1)); } } else { - // Update the FEC state for each non-lost packet. + // Update the FEC state for each non-lost packet. for (size_t packet = 0; packet < num_packets; packet++) { if (packet == lost_packet) { continue; @@ -90,7 +90,8 @@ class QuicFecGroupTest : public ::testing::Test { QuicPacketHeader header; header.packet_sequence_number = packet; header.entropy_flag = kEntropyFlag[packet]; - ASSERT_TRUE(group.Update(header, kData[packet])); + ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, + kData[packet])); ASSERT_FALSE(group.CanRevive()); } @@ -100,7 +101,8 @@ class QuicFecGroupTest : public ::testing::Test { fec.fec_group = 0; fec.redundancy = StringPiece(redundancy.get(), strlen(kData[0])); - ASSERT_TRUE(group.UpdateFec(num_packets, entropy_redundancy, fec)); + ASSERT_TRUE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, num_packets, + fec)); } QuicPacketHeader header; char recovered[kMaxPacketSize]; @@ -112,7 +114,8 @@ class QuicFecGroupTest : public ::testing::Test { EXPECT_EQ(lost_packet, header.packet_sequence_number) << "Failed to revive packet " << lost_packet << " out of " << num_packets; - EXPECT_EQ(kEntropyFlag[lost_packet], header.entropy_flag); + // Revived packets have an unknown entropy. + EXPECT_FALSE(header.entropy_flag); ASSERT_GE(len, strlen(kData[lost_packet])) << "Incorrect length"; for (size_t i = 0; i < strlen(kData[lost_packet]); i++) { EXPECT_EQ(kData[lost_packet][i], recovered[i]); @@ -150,14 +153,14 @@ TEST_F(QuicFecGroupTest, UpdateFecIfReceivedPacketIsNotCovered) { QuicPacketHeader header; header.packet_sequence_number = 3; - group.Update(header, data1); + group.Update(ENCRYPTION_FORWARD_SECURE, header, data1); QuicFecData fec; fec.fec_group = 1; fec.redundancy = redundancy; header.packet_sequence_number = 2; - ASSERT_FALSE(group.UpdateFec(2, kTestFecPacketEntropy, fec)); + ASSERT_FALSE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, 2, fec)); } TEST_F(QuicFecGroupTest, ProtectsPacketsBefore) { @@ -165,7 +168,7 @@ TEST_F(QuicFecGroupTest, ProtectsPacketsBefore) { header.packet_sequence_number = 3; QuicFecGroup group; - ASSERT_TRUE(group.Update(header, kData[0])); + ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kData[0])); EXPECT_FALSE(group.ProtectsPacketsBefore(1)); EXPECT_FALSE(group.ProtectsPacketsBefore(2)); @@ -180,13 +183,13 @@ TEST_F(QuicFecGroupTest, ProtectsPacketsBeforeWithSeveralPackets) { header.packet_sequence_number = 3; QuicFecGroup group; - ASSERT_TRUE(group.Update(header, kData[0])); + ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kData[0])); header.packet_sequence_number = 7; - ASSERT_TRUE(group.Update(header, kData[0])); + ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kData[0])); header.packet_sequence_number = 5; - ASSERT_TRUE(group.Update(header, kData[0])); + ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kData[0])); EXPECT_FALSE(group.ProtectsPacketsBefore(1)); EXPECT_FALSE(group.ProtectsPacketsBefore(2)); @@ -206,7 +209,7 @@ TEST_F(QuicFecGroupTest, ProtectsPacketsBeforeWithFecData) { fec.redundancy = kData[0]; QuicFecGroup group; - ASSERT_TRUE(group.UpdateFec(3, kTestFecPacketEntropy, fec)); + ASSERT_TRUE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, 3, fec)); EXPECT_FALSE(group.ProtectsPacketsBefore(1)); EXPECT_FALSE(group.ProtectsPacketsBefore(2)); @@ -216,4 +219,24 @@ TEST_F(QuicFecGroupTest, ProtectsPacketsBeforeWithFecData) { EXPECT_TRUE(group.ProtectsPacketsBefore(50)); } +TEST_F(QuicFecGroupTest, EffectiveEncryptionLevel) { + QuicFecGroup group; + EXPECT_EQ(NUM_ENCRYPTION_LEVELS, group.effective_encryption_level()); + + QuicPacketHeader header; + header.packet_sequence_number = 5; + ASSERT_TRUE(group.Update(ENCRYPTION_INITIAL, header, kData[0])); + EXPECT_EQ(ENCRYPTION_INITIAL, group.effective_encryption_level()); + + QuicFecData fec; + fec.fec_group = 0; + fec.redundancy = kData[0]; + ASSERT_TRUE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, 7, fec)); + EXPECT_EQ(ENCRYPTION_INITIAL, group.effective_encryption_level()); + + header.packet_sequence_number = 3; + ASSERT_TRUE(group.Update(ENCRYPTION_NONE, header, kData[0])); + EXPECT_EQ(ENCRYPTION_NONE, group.effective_encryption_level()); +} + } // namespace net |