OLD | NEW |
| (Empty) |
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "net/quic/quic_multipath_transmissions_map.h" | |
6 #include "testing/gtest/include/gtest/gtest.h" | |
7 | |
8 namespace net { | |
9 namespace test { | |
10 namespace { | |
11 | |
12 TEST(QuicAcrossPathsTransmissionMapTest, OnPacketRetransmittedOnDifferentPath) { | |
13 QuicMultipathTransmissionsMap transmission_map; | |
14 // Packet0's original transmission sent on path 1 with packet number 1. | |
15 QuicPathIdPacketNumber packet0_0(1, 1); | |
16 // Packet0's retransmission sent on path 2 with packet number 1. | |
17 QuicPathIdPacketNumber packet0_1(2, 1); | |
18 // packet0's 2nd retransmission sent on path 3 with packet number 1. | |
19 QuicPathIdPacketNumber packet0_2(3, 1); | |
20 | |
21 transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_0, packet0_1); | |
22 const QuicMultipathTransmissionsMap::MultipathTransmissionsList* | |
23 transmission_list1 = | |
24 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_0); | |
25 EXPECT_EQ(packet0_0, (*transmission_list1)[0]); | |
26 EXPECT_EQ(packet0_1, (*transmission_list1)[1]); | |
27 | |
28 transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_1, packet0_2); | |
29 const QuicMultipathTransmissionsMap::MultipathTransmissionsList* | |
30 transmission_list2 = | |
31 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_0); | |
32 EXPECT_EQ(packet0_0, (*transmission_list2)[0]); | |
33 EXPECT_EQ(packet0_1, (*transmission_list2)[1]); | |
34 EXPECT_EQ(packet0_2, (*transmission_list2)[2]); | |
35 // Make sure there is no memory leakage. | |
36 } | |
37 | |
38 TEST(QuicAcrossPathsTransmissionMapTest, MaybeGetTransmissionsOnOtherPaths) { | |
39 QuicMultipathTransmissionsMap transmission_map; | |
40 // Packet0's original transmission sent on path 1 with packet number 1. | |
41 QuicPathIdPacketNumber packet0_0(1, 1); | |
42 // Packet0's retransmission sent on path 2 with packet number 1. | |
43 QuicPathIdPacketNumber packet0_1(2, 1); | |
44 // packet0's 2nd retransmission sent on path 3 with packet number 1. | |
45 QuicPathIdPacketNumber packet0_2(3, 1); | |
46 | |
47 transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_0, packet0_1); | |
48 transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_1, packet0_2); | |
49 | |
50 const QuicMultipathTransmissionsMap::MultipathTransmissionsList* | |
51 transmission_list1 = | |
52 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_0); | |
53 const QuicMultipathTransmissionsMap::MultipathTransmissionsList* | |
54 transmission_list2 = | |
55 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_1); | |
56 const QuicMultipathTransmissionsMap::MultipathTransmissionsList* | |
57 transmission_list3 = | |
58 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_2); | |
59 // Make sure all three pointers point to the same list. | |
60 EXPECT_EQ(transmission_list1, transmission_list2); | |
61 EXPECT_EQ(transmission_list2, transmission_list3); | |
62 EXPECT_EQ(packet0_0, (*transmission_list1)[0]); | |
63 EXPECT_EQ(packet0_1, (*transmission_list1)[1]); | |
64 EXPECT_EQ(packet0_2, (*transmission_list1)[2]); | |
65 | |
66 // Packet1 which is not transmitted across path. | |
67 QuicPathIdPacketNumber packet1_0(1, 2); | |
68 EXPECT_EQ(nullptr, | |
69 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet1_0)); | |
70 // Make sure there is no memory leakage. | |
71 } | |
72 | |
73 TEST(QuicAcrossPathsTransmissionMapTest, OnPacketHandled) { | |
74 QuicMultipathTransmissionsMap transmission_map; | |
75 | |
76 // Packet's original transmission sent on path 1 with packet number 1. | |
77 QuicPathIdPacketNumber packet0_0(1, 1); | |
78 // Packet's retransmission sent on path 2 with packet number 1. | |
79 QuicPathIdPacketNumber packet0_1(2, 1); | |
80 // packet's 2nd retransmission sent on path 3 with packet number 1. | |
81 QuicPathIdPacketNumber packet0_2(3, 1); | |
82 transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_0, packet0_1); | |
83 transmission_map.OnPacketRetransmittedOnDifferentPath(packet0_1, packet0_2); | |
84 | |
85 // Packet1's original transmission sent on path 1 with packet number 2. | |
86 QuicPathIdPacketNumber packet1_0(1, 2); | |
87 // Packet1's retransmission sent on path 2 with packet number 2. | |
88 QuicPathIdPacketNumber packet1_1(2, 2); | |
89 transmission_map.OnPacketRetransmittedOnDifferentPath(packet1_0, packet1_1); | |
90 | |
91 transmission_map.OnPacketHandled(packet0_0); | |
92 EXPECT_EQ(nullptr, | |
93 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_0)); | |
94 EXPECT_EQ(nullptr, | |
95 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_1)); | |
96 EXPECT_EQ(nullptr, | |
97 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet0_2)); | |
98 const QuicMultipathTransmissionsMap::MultipathTransmissionsList* | |
99 transmission_list = | |
100 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet1_0); | |
101 EXPECT_EQ(packet1_0, (*transmission_list)[0]); | |
102 EXPECT_EQ(packet1_1, (*transmission_list)[1]); | |
103 // Packet 1 is received on path 2. | |
104 transmission_map.OnPacketHandled(packet1_1); | |
105 EXPECT_EQ(nullptr, | |
106 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet1_0)); | |
107 EXPECT_EQ(nullptr, | |
108 transmission_map.MaybeGetTransmissionsOnOtherPaths(packet1_1)); | |
109 // Make sure there is no memory leakage. | |
110 } | |
111 | |
112 } // namespace | |
113 } // namespace test | |
114 } // namespace net | |
OLD | NEW |