blob: 8bdb78ecdeb16e84e868177046dc99244451f6dd [file] [log] [blame]
// Copyright 2014 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_connection_logger.h"
#include "net/quic/quic_protocol.h"
#include "net/quic/test_tools/quic_test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace net {
namespace test {
class QuicConnectionLoggerPeer {
public:
static size_t num_truncated_acks_sent(const QuicConnectionLogger& logger) {
return logger.num_truncated_acks_sent_;
}
static void set_num_packets_received(QuicConnectionLogger& logger,
int value) {
logger.num_packets_received_ = value;
}
static void set_largest_received_packet_sequence_number(
QuicConnectionLogger& logger,
int value) {
logger.largest_received_packet_sequence_number_ = value;
}
};
class QuicConnectionLoggerTest : public ::testing::Test {
protected:
QuicConnectionLoggerTest()
: session_(new MockConnection(Perspective::IS_CLIENT)),
logger_(&session_, "CONNECTION_UNKNOWN", net_log_) {}
BoundNetLog net_log_;
MockQuicSpdySession session_;
QuicConnectionLogger logger_;
};
TEST_F(QuicConnectionLoggerTest, TruncatedAcksSentNotChanged) {
QuicAckFrame frame;
logger_.OnFrameAddedToPacket(QuicFrame(&frame));
EXPECT_EQ(0u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_));
for (QuicPacketSequenceNumber i = 0; i < 256; ++i) {
frame.missing_packets.insert(i);
}
logger_.OnFrameAddedToPacket(QuicFrame(&frame));
EXPECT_EQ(0u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_));
}
TEST_F(QuicConnectionLoggerTest, TruncatedAcksSent) {
QuicAckFrame frame;
for (QuicPacketSequenceNumber i = 0; i < 512; i += 2) {
frame.missing_packets.insert(i);
}
logger_.OnFrameAddedToPacket(QuicFrame(&frame));
EXPECT_EQ(1u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_));
}
TEST_F(QuicConnectionLoggerTest, ReceivedPacketLossRate) {
QuicConnectionLoggerPeer::set_num_packets_received(logger_, 1);
QuicConnectionLoggerPeer::set_largest_received_packet_sequence_number(logger_,
2);
EXPECT_EQ(0.5f, logger_.ReceivedPacketLossRate());
}
} // namespace test
} // namespace net