| OLD | NEW |
| 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_fec_group.h" | 5 #include "net/quic/quic_fec_group.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 | 165 |
| 166 QuicPacketHeader header; | 166 QuicPacketHeader header; |
| 167 header.fec_group = 1; | 167 header.fec_group = 1; |
| 168 header.packet_number = 3; | 168 header.packet_number = 3; |
| 169 group.Update(ENCRYPTION_FORWARD_SECURE, header, data1); | 169 group.Update(ENCRYPTION_FORWARD_SECURE, header, data1); |
| 170 | 170 |
| 171 header.packet_number = 2; | 171 header.packet_number = 2; |
| 172 ASSERT_FALSE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, header, redundancy)); | 172 ASSERT_FALSE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, header, redundancy)); |
| 173 } | 173 } |
| 174 | 174 |
| 175 TEST_F(QuicFecGroupTest, ProtectsPacketsBefore) { | 175 TEST_F(QuicFecGroupTest, IsWaitingForPacketBefore) { |
| 176 QuicPacketHeader header; | 176 QuicPacketHeader header; |
| 177 header.fec_group = 3; | 177 header.fec_group = 3; |
| 178 header.packet_number = 3; | 178 header.packet_number = 3; |
| 179 | 179 |
| 180 QuicFecGroup group(3); | 180 QuicFecGroup group(3); |
| 181 ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); | 181 ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); |
| 182 | 182 |
| 183 EXPECT_FALSE(group.ProtectsPacketsBefore(1)); | 183 EXPECT_FALSE(group.IsWaitingForPacketBefore(1)); |
| 184 EXPECT_FALSE(group.ProtectsPacketsBefore(2)); | 184 EXPECT_FALSE(group.IsWaitingForPacketBefore(2)); |
| 185 EXPECT_FALSE(group.ProtectsPacketsBefore(3)); | 185 EXPECT_FALSE(group.IsWaitingForPacketBefore(3)); |
| 186 EXPECT_TRUE(group.ProtectsPacketsBefore(4)); | 186 EXPECT_FALSE(group.IsWaitingForPacketBefore(4)); |
| 187 EXPECT_TRUE(group.ProtectsPacketsBefore(5)); | 187 EXPECT_TRUE(group.IsWaitingForPacketBefore(5)); |
| 188 EXPECT_TRUE(group.ProtectsPacketsBefore(50)); | 188 EXPECT_TRUE(group.IsWaitingForPacketBefore(50)); |
| 189 } | 189 } |
| 190 | 190 |
| 191 TEST_F(QuicFecGroupTest, ProtectsPacketsBeforeWithSeveralPackets) { | 191 TEST_F(QuicFecGroupTest, IsWaitingForPacketBeforeWithSeveralPackets) { |
| 192 QuicPacketHeader header; | 192 QuicPacketHeader header; |
| 193 header.fec_group = 3; | 193 header.fec_group = 3; |
| 194 header.packet_number = 3; | 194 header.packet_number = 3; |
| 195 | 195 |
| 196 QuicFecGroup group(3); | 196 QuicFecGroup group(3); |
| 197 ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); | 197 ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); |
| 198 | 198 |
| 199 header.packet_number = 7; | 199 header.packet_number = 7; |
| 200 ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); | 200 ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); |
| 201 | 201 |
| 202 header.packet_number = 5; | 202 header.packet_number = 5; |
| 203 ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); | 203 ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); |
| 204 | 204 |
| 205 EXPECT_FALSE(group.ProtectsPacketsBefore(1)); | 205 EXPECT_FALSE(group.IsWaitingForPacketBefore(1)); |
| 206 EXPECT_FALSE(group.ProtectsPacketsBefore(2)); | 206 EXPECT_FALSE(group.IsWaitingForPacketBefore(2)); |
| 207 EXPECT_FALSE(group.ProtectsPacketsBefore(3)); | 207 EXPECT_FALSE(group.IsWaitingForPacketBefore(3)); |
| 208 EXPECT_TRUE(group.ProtectsPacketsBefore(4)); | 208 EXPECT_FALSE(group.IsWaitingForPacketBefore(4)); |
| 209 EXPECT_TRUE(group.ProtectsPacketsBefore(5)); | 209 EXPECT_TRUE(group.IsWaitingForPacketBefore(5)); |
| 210 EXPECT_TRUE(group.ProtectsPacketsBefore(6)); | 210 EXPECT_TRUE(group.IsWaitingForPacketBefore(6)); |
| 211 EXPECT_TRUE(group.ProtectsPacketsBefore(7)); | 211 EXPECT_TRUE(group.IsWaitingForPacketBefore(7)); |
| 212 EXPECT_TRUE(group.ProtectsPacketsBefore(8)); | 212 EXPECT_TRUE(group.IsWaitingForPacketBefore(8)); |
| 213 EXPECT_TRUE(group.ProtectsPacketsBefore(9)); | 213 EXPECT_TRUE(group.IsWaitingForPacketBefore(9)); |
| 214 EXPECT_TRUE(group.ProtectsPacketsBefore(50)); | 214 EXPECT_TRUE(group.IsWaitingForPacketBefore(50)); |
| 215 } | 215 } |
| 216 | 216 |
| 217 TEST_F(QuicFecGroupTest, ProtectsPacketsBeforeWithFecData) { | 217 TEST_F(QuicFecGroupTest, IsWaitingForPacketBeforeWithFecData1) { |
| 218 QuicFecGroup group(2); | 218 QuicFecGroup group(3); |
| 219 |
| 219 QuicPacketHeader header; | 220 QuicPacketHeader header; |
| 220 header.fec_group = 2; | 221 header.fec_group = 3; |
| 221 header.packet_number = 3; | 222 header.packet_number = 4; |
| 222 ASSERT_TRUE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); | 223 ASSERT_TRUE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); |
| 223 | 224 |
| 224 EXPECT_FALSE(group.ProtectsPacketsBefore(1)); | 225 EXPECT_FALSE(group.IsWaitingForPacketBefore(1)); |
| 225 EXPECT_FALSE(group.ProtectsPacketsBefore(2)); | 226 EXPECT_FALSE(group.IsWaitingForPacketBefore(2)); |
| 226 EXPECT_TRUE(group.ProtectsPacketsBefore(3)); | 227 EXPECT_FALSE(group.IsWaitingForPacketBefore(3)); |
| 227 EXPECT_TRUE(group.ProtectsPacketsBefore(4)); | 228 EXPECT_TRUE(group.IsWaitingForPacketBefore(4)); |
| 228 EXPECT_TRUE(group.ProtectsPacketsBefore(5)); | 229 EXPECT_TRUE(group.IsWaitingForPacketBefore(5)); |
| 229 EXPECT_TRUE(group.ProtectsPacketsBefore(50)); | 230 EXPECT_TRUE(group.IsWaitingForPacketBefore(6)); |
| 231 EXPECT_TRUE(group.IsWaitingForPacketBefore(50)); |
| 232 } |
| 233 |
| 234 TEST_F(QuicFecGroupTest, IsWaitingForPacketBeforeWithFecData2) { |
| 235 QuicFecGroup group(3); |
| 236 |
| 237 QuicPacketHeader header; |
| 238 header.fec_group = 3; |
| 239 header.packet_number = 3; |
| 240 ASSERT_TRUE(group.Update(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); |
| 241 |
| 242 header.packet_number = 5; |
| 243 ASSERT_TRUE(group.UpdateFec(ENCRYPTION_FORWARD_SECURE, header, kDataSingle)); |
| 244 |
| 245 EXPECT_FALSE(group.IsWaitingForPacketBefore(1)); |
| 246 EXPECT_FALSE(group.IsWaitingForPacketBefore(2)); |
| 247 EXPECT_FALSE(group.IsWaitingForPacketBefore(3)); |
| 248 EXPECT_FALSE(group.IsWaitingForPacketBefore(4)); |
| 249 EXPECT_TRUE(group.IsWaitingForPacketBefore(5)); |
| 250 EXPECT_TRUE(group.IsWaitingForPacketBefore(6)); |
| 251 EXPECT_TRUE(group.IsWaitingForPacketBefore(50)); |
| 230 } | 252 } |
| 231 | 253 |
| 232 TEST_F(QuicFecGroupTest, EffectiveEncryptionLevel) { | 254 TEST_F(QuicFecGroupTest, EffectiveEncryptionLevel) { |
| 233 QuicFecGroup group(1); | 255 QuicFecGroup group(1); |
| 234 EXPECT_EQ(NUM_ENCRYPTION_LEVELS, group.EffectiveEncryptionLevel()); | 256 EXPECT_EQ(NUM_ENCRYPTION_LEVELS, group.EffectiveEncryptionLevel()); |
| 235 | 257 |
| 236 QuicPacketHeader header; | 258 QuicPacketHeader header; |
| 237 header.fec_group = 1; | 259 header.fec_group = 1; |
| 238 header.packet_number = 5; | 260 header.packet_number = 5; |
| 239 ASSERT_TRUE(group.Update(ENCRYPTION_INITIAL, header, kDataSingle)); | 261 ASSERT_TRUE(group.Update(ENCRYPTION_INITIAL, header, kDataSingle)); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 | 333 |
| 312 // XOR the buffers and compare the result with the reference. | 334 // XOR the buffers and compare the result with the reference. |
| 313 QuicFecGroup::XorBuffers(shorter.buffer(), shorter.size(), | 335 QuicFecGroup::XorBuffers(shorter.buffer(), shorter.size(), |
| 314 longer.buffer()); | 336 longer.buffer()); |
| 315 EXPECT_EQ(output_reference, longer.AsStringPiece()); | 337 EXPECT_EQ(output_reference, longer.AsStringPiece()); |
| 316 } | 338 } |
| 317 } | 339 } |
| 318 } | 340 } |
| 319 | 341 |
| 320 } // namespace net | 342 } // namespace net |
| OLD | NEW |