| Index: net/quic/quic_multipath_transmissions_map_test.cc
|
| diff --git a/net/quic/quic_multipath_transmissions_map_test.cc b/net/quic/quic_multipath_transmissions_map_test.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fcae200772c4cbf4109e1415817db84cde48c455
|
| --- /dev/null
|
| +++ b/net/quic/quic_multipath_transmissions_map_test.cc
|
| @@ -0,0 +1,114 @@
|
| +// Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "net/quic/quic_multipath_transmissions_map.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace net_quic {
|
| +namespace test {
|
| +namespace {
|
| +
|
| +TEST(QuicAcrossPathsTransmissionMapTest, OnPacketRetransmittedOnDifferentPath) {
|
| + QuicMultipathTransmissionsMap transmission_map;
|
| + // Packet0's original transmission sent on path 1 with packet number 1.
|
| + QuicPathIdPacketNumber packet0_0(1, 1);
|
| + // Packet0's retransmission sent on path 2 with packet number 1.
|
| + QuicPathIdPacketNumber packet0_1(2, 1);
|
| + // packet0's 2nd retransmission sent on path 3 with packet number 1.
|
| + QuicPathIdPacketNumber packet0_2(3, 1);
|
| +
|
| + transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_0, packet0_1);
|
| + const QuicMultipathTransmissionsMap::MultipathTransmissionsList*
|
| + transmission_list1 =
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_0);
|
| + EXPECT_EQ(packet0_0, (*transmission_list1)[0]);
|
| + EXPECT_EQ(packet0_1, (*transmission_list1)[1]);
|
| +
|
| + transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_1, packet0_2);
|
| + const QuicMultipathTransmissionsMap::MultipathTransmissionsList*
|
| + transmission_list2 =
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_0);
|
| + EXPECT_EQ(packet0_0, (*transmission_list2)[0]);
|
| + EXPECT_EQ(packet0_1, (*transmission_list2)[1]);
|
| + EXPECT_EQ(packet0_2, (*transmission_list2)[2]);
|
| + // Make sure there is no memory leakage.
|
| +}
|
| +
|
| +TEST(QuicAcrossPathsTransmissionMapTest, MaybeGetTransmissionsOnOtherPaths) {
|
| + QuicMultipathTransmissionsMap transmission_map;
|
| + // Packet0's original transmission sent on path 1 with packet number 1.
|
| + QuicPathIdPacketNumber packet0_0(1, 1);
|
| + // Packet0's retransmission sent on path 2 with packet number 1.
|
| + QuicPathIdPacketNumber packet0_1(2, 1);
|
| + // packet0's 2nd retransmission sent on path 3 with packet number 1.
|
| + QuicPathIdPacketNumber packet0_2(3, 1);
|
| +
|
| + transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_0, packet0_1);
|
| + transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_1, packet0_2);
|
| +
|
| + const QuicMultipathTransmissionsMap::MultipathTransmissionsList*
|
| + transmission_list1 =
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_0);
|
| + const QuicMultipathTransmissionsMap::MultipathTransmissionsList*
|
| + transmission_list2 =
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_1);
|
| + const QuicMultipathTransmissionsMap::MultipathTransmissionsList*
|
| + transmission_list3 =
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_2);
|
| + // Make sure all three pointers point to the same list.
|
| + EXPECT_EQ(transmission_list1, transmission_list2);
|
| + EXPECT_EQ(transmission_list2, transmission_list3);
|
| + EXPECT_EQ(packet0_0, (*transmission_list1)[0]);
|
| + EXPECT_EQ(packet0_1, (*transmission_list1)[1]);
|
| + EXPECT_EQ(packet0_2, (*transmission_list1)[2]);
|
| +
|
| + // Packet1 which is not transmitted across path.
|
| + QuicPathIdPacketNumber packet1_0(1, 2);
|
| + EXPECT_EQ(nullptr,
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet1_0));
|
| + // Make sure there is no memory leakage.
|
| +}
|
| +
|
| +TEST(QuicAcrossPathsTransmissionMapTest, OnPacketHandled) {
|
| + QuicMultipathTransmissionsMap transmission_map;
|
| +
|
| + // Packet's original transmission sent on path 1 with packet number 1.
|
| + QuicPathIdPacketNumber packet0_0(1, 1);
|
| + // Packet's retransmission sent on path 2 with packet number 1.
|
| + QuicPathIdPacketNumber packet0_1(2, 1);
|
| + // packet's 2nd retransmission sent on path 3 with packet number 1.
|
| + QuicPathIdPacketNumber packet0_2(3, 1);
|
| + transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_0, packet0_1);
|
| + transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_1, packet0_2);
|
| +
|
| + // Packet1's original transmission sent on path 1 with packet number 2.
|
| + QuicPathIdPacketNumber packet1_0(1, 2);
|
| + // Packet1's retransmission sent on path 2 with packet number 2.
|
| + QuicPathIdPacketNumber packet1_1(2, 2);
|
| + transmission_map.OnPacketRetransmittedOnDifferentPath(packet1_0, packet1_1);
|
| +
|
| + transmission_map.OnPacketHandled(packet0_0);
|
| + EXPECT_EQ(nullptr,
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_0));
|
| + EXPECT_EQ(nullptr,
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_1));
|
| + EXPECT_EQ(nullptr,
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_2));
|
| + const QuicMultipathTransmissionsMap::MultipathTransmissionsList*
|
| + transmission_list =
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet1_0);
|
| + EXPECT_EQ(packet1_0, (*transmission_list)[0]);
|
| + EXPECT_EQ(packet1_1, (*transmission_list)[1]);
|
| + // Packet 1 is received on path 2.
|
| + transmission_map.OnPacketHandled(packet1_1);
|
| + EXPECT_EQ(nullptr,
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet1_0));
|
| + EXPECT_EQ(nullptr,
|
| + transmission_map.MaybeGetTransmissionsOnOtherPaths(packet1_1));
|
| + // Make sure there is no memory leakage.
|
| +}
|
| +
|
| +} // namespace
|
| +} // namespace test
|
| +} // namespace net_quic
|
|
|