Upstream version 10.38.222.0
[platform/framework/web/crosswalk.git] / src / net / quic / congestion_control / timestamp_receiver_test.cc
1 // Copyright 2014 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 "base/logging.h"
6 #include "net/quic/congestion_control/timestamp_receiver.h"
7 #include "net/quic/test_tools/mock_clock.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace net {
11 namespace test {
12
13 class TimestampReceiverTest : public ::testing::Test {
14  protected:
15   TimestampReceiver receiver_;
16   MockClock clock_;
17 };
18
19 TEST_F(TimestampReceiverTest, SimpleReceiver) {
20   QuicTime start = clock_.ApproximateNow();
21   QuicTime::Delta received_delta = QuicTime::Delta::FromMilliseconds(10);
22   clock_.AdvanceTime(received_delta);
23   QuicTime receive_timestamp = clock_.ApproximateNow();
24   receiver_.RecordIncomingPacket(1, 1, receive_timestamp);
25
26   QuicCongestionFeedbackFrame feedback;
27   // Do not generate a congestion feedback frame because it has only one packet.
28   ASSERT_FALSE(receiver_.GenerateCongestionFeedback(&feedback));
29
30   clock_.AdvanceTime(received_delta);
31   receive_timestamp = clock_.ApproximateNow();
32   // Packet not received; but rather revived by FEC.
33   receiver_.RecordIncomingPacket(1, 2, receive_timestamp);
34   clock_.AdvanceTime(received_delta);
35   receive_timestamp = clock_.ApproximateNow();
36   receiver_.RecordIncomingPacket(1, 3, receive_timestamp);
37
38   ASSERT_TRUE(receiver_.GenerateCongestionFeedback(&feedback));
39
40   EXPECT_EQ(kTimestamp, feedback.type);
41   EXPECT_EQ(3u, feedback.timestamp.received_packet_times.size());
42   TimeMap::iterator it = feedback.timestamp.received_packet_times.begin();
43   EXPECT_EQ(1u, it->first);
44   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), it->second.Subtract(start));
45   it = feedback.timestamp.received_packet_times.begin();
46   ++it;
47   EXPECT_EQ(2u, it->first);
48   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(20), it->second.Subtract(start));
49   ++it;
50   EXPECT_EQ(3u, it->first);
51   EXPECT_EQ(QuicTime::Delta::FromMilliseconds(30), it->second.Subtract(start));
52 }
53
54 }  // namespace test
55 }  // namespace net