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.
5 #include "net/quic/quic_connection_logger.h"
7 #include "net/quic/quic_protocol.h"
8 #include "net/quic/test_tools/quic_test_utils.h"
9 #include "testing/gtest/include/gtest/gtest.h"
14 class QuicConnectionLoggerPeer
{
16 static size_t num_truncated_acks_sent(const QuicConnectionLogger
& logger
) {
17 return logger
.num_truncated_acks_sent_
;
20 static void set_num_packets_received(QuicConnectionLogger
& logger
,
22 logger
.num_packets_received_
= value
;
25 static void set_largest_received_packet_number(QuicConnectionLogger
& logger
,
27 logger
.largest_received_packet_number_
= value
;
31 class QuicConnectionLoggerTest
: public ::testing::Test
{
33 QuicConnectionLoggerTest()
34 : session_(new MockConnection(Perspective::IS_CLIENT
)),
35 logger_(&session_
, "CONNECTION_UNKNOWN", net_log_
) {}
38 MockQuicSpdySession session_
;
39 QuicConnectionLogger logger_
;
42 TEST_F(QuicConnectionLoggerTest
, TruncatedAcksSentNotChanged
) {
44 logger_
.OnFrameAddedToPacket(QuicFrame(&frame
));
45 EXPECT_EQ(0u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_
));
47 for (QuicPacketNumber i
= 0; i
< 256; ++i
) {
48 frame
.missing_packets
.insert(i
);
50 logger_
.OnFrameAddedToPacket(QuicFrame(&frame
));
51 EXPECT_EQ(0u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_
));
54 TEST_F(QuicConnectionLoggerTest
, TruncatedAcksSent
) {
56 for (QuicPacketNumber i
= 0; i
< 512; i
+= 2) {
57 frame
.missing_packets
.insert(i
);
59 logger_
.OnFrameAddedToPacket(QuicFrame(&frame
));
60 EXPECT_EQ(1u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_
));
63 TEST_F(QuicConnectionLoggerTest
, ReceivedPacketLossRate
) {
64 QuicConnectionLoggerPeer::set_num_packets_received(logger_
, 1);
65 QuicConnectionLoggerPeer::set_largest_received_packet_number(logger_
, 2);
66 EXPECT_EQ(0.5f
, logger_
.ReceivedPacketLossRate());