summaryrefslogtreecommitdiffstats
path: root/chromium/net/quic/quic_fec_group_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/quic/quic_fec_group_test.cc')
-rw-r--r--chromium/net/quic/quic_fec_group_test.cc59
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