Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Unified Diff: net/quic/quic_connection_logger_unittest.cc

Issue 1672513002: Expose packet loss counts from QUIC to NetworkQualityEstimator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed bengr comments, Rebased Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/quic/quic_connection_logger_unittest.cc
diff --git a/net/quic/quic_connection_logger_unittest.cc b/net/quic/quic_connection_logger_unittest.cc
index ebaa12dbfeccb8fbb1845f941c955465e1cee0a2..14b34f472e2c4e13e649aa62261d70a73a267993 100644
--- a/net/quic/quic_connection_logger_unittest.cc
+++ b/net/quic/quic_connection_logger_unittest.cc
@@ -4,56 +4,130 @@
#include "net/quic/quic_connection_logger.h"
+#include <stddef.h>
+#include <stdint.h>
+
+#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
#include "net/base/socket_performance_watcher.h"
+#include "net/base/socket_performance_watcher_factory.h"
#include "net/quic/quic_protocol.h"
#include "net/quic/test_tools/quic_test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
+namespace base {
+class TimeDelta;
+}
+
namespace net {
namespace test {
+class TestSocketPerformanceWatcherFactory
+ : public SocketPerformanceWatcherFactory {
+ public:
+ TestSocketPerformanceWatcherFactory()
+ : packets_lost_(0),
+ packets_received_in_order_(0),
+ packets_received_out_of_order_(0) {}
+
+ ~TestSocketPerformanceWatcherFactory() override {}
+
+ scoped_ptr<SocketPerformanceWatcher> CreateSocketPerformanceWatcher(
+ const Protocol protocol) override {
+ if (protocol != PROTOCOL_QUIC) {
+ NOTIMPLEMENTED();
+ }
+ return scoped_ptr<SocketPerformanceWatcher>(
+ new SocketPerformanceWatcher(protocol, this));
+ }
+
+ void OnUpdatedRTTAvailable(const Protocol protocol,
+ const base::TimeDelta& rtt) override {}
+
+ void OnUpdatedPacketCountAvailable(
+ Protocol protocol,
+ size_t packets_lost,
+ size_t packets_received_in_order,
+ size_t packets_received_out_of_order) override {
+ if (protocol != PROTOCOL_QUIC) {
+ NOTIMPLEMENTED();
+ }
+ packets_lost_ = packets_lost;
+ packets_received_in_order_ = packets_received_in_order;
+ packets_received_out_of_order_ = packets_received_out_of_order;
+ }
+
+ void VerifyAndResetPacketCounts(size_t packets_lost,
+ size_t packets_received_in_order,
+ size_t packets_received_out_of_order) {
+ EXPECT_EQ(packets_lost, packets_lost_);
+ EXPECT_EQ(packets_received_in_order, packets_received_in_order_);
+ EXPECT_EQ(packets_received_out_of_order, packets_received_out_of_order_);
+ packets_lost_ = 0;
+ packets_received_in_order_ = 0;
+ packets_received_out_of_order_ = 0;
+ }
+
+ private:
+ size_t packets_lost_;
+ size_t packets_received_in_order_;
+ size_t packets_received_out_of_order_;
+ DISALLOW_COPY_AND_ASSIGN(TestSocketPerformanceWatcherFactory);
+};
+
class QuicConnectionLoggerPeer {
public:
- static size_t num_truncated_acks_sent(const QuicConnectionLogger& logger) {
- return logger.num_truncated_acks_sent_;
+ static size_t num_truncated_acks_sent(const QuicConnectionLogger* logger) {
+ return logger->num_truncated_acks_sent_;
}
- static void set_num_packets_received(QuicConnectionLogger& logger,
+ static void set_num_packets_received(QuicConnectionLogger* logger,
int value) {
- logger.num_packets_received_ = value;
+ logger->num_packets_received_ = value;
}
- static void set_largest_received_packet_number(QuicConnectionLogger& logger,
+ static void set_largest_received_packet_number(QuicConnectionLogger* logger,
int value) {
- logger.largest_received_packet_number_ = value;
+ logger->largest_received_packet_number_ = value;
+ }
+
+ static void ReportPacketCounts(
+ QuicConnectionLogger* logger,
+ size_t previous_largest_received_packet_number) {
+ logger->ReportPacketCounts(previous_largest_received_packet_number);
}
};
class QuicConnectionLoggerTest : public ::testing::Test {
protected:
QuicConnectionLoggerTest()
- : session_(new MockConnection(&helper_, Perspective::IS_CLIENT)),
- logger_(&session_,
- "CONNECTION_UNKNOWN",
- /*socket_performance_watcher=*/nullptr,
- net_log_) {}
+ : session_(new MockConnection(&helper_, Perspective::IS_CLIENT)) {
+ logger_.reset(new QuicConnectionLogger(
+ &session_, "CONNECTION_UNKNOWN",
+ socket_performance_watcher_factory_.CreateSocketPerformanceWatcher(
+ SocketPerformanceWatcherFactory::PROTOCOL_QUIC),
+ net_log_));
+ }
BoundNetLog net_log_;
MockConnectionHelper helper_;
+ TestSocketPerformanceWatcherFactory socket_performance_watcher_factory_;
MockQuicSpdySession session_;
- QuicConnectionLogger logger_;
+ scoped_ptr<QuicConnectionLogger> logger_;
};
TEST_F(QuicConnectionLoggerTest, TruncatedAcksSentNotChanged) {
QuicAckFrame frame;
- logger_.OnFrameAddedToPacket(QuicFrame(&frame));
- EXPECT_EQ(0u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_));
+ logger_->OnFrameAddedToPacket(QuicFrame(&frame));
+ EXPECT_EQ(0u,
+ QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_.get()));
for (QuicPacketNumber i = 0; i < 256; ++i) {
frame.missing_packets.Add(i);
}
- logger_.OnFrameAddedToPacket(QuicFrame(&frame));
- EXPECT_EQ(0u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_));
+ logger_->OnFrameAddedToPacket(QuicFrame(&frame));
+ EXPECT_EQ(0u,
+ QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_.get()));
}
TEST_F(QuicConnectionLoggerTest, TruncatedAcksSent) {
@@ -61,14 +135,38 @@ TEST_F(QuicConnectionLoggerTest, TruncatedAcksSent) {
for (QuicPacketNumber i = 0; i < 512; i += 2) {
frame.missing_packets.Add(i);
}
- logger_.OnFrameAddedToPacket(QuicFrame(&frame));
- EXPECT_EQ(1u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_));
+ logger_->OnFrameAddedToPacket(QuicFrame(&frame));
+ EXPECT_EQ(1u,
+ QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_.get()));
}
TEST_F(QuicConnectionLoggerTest, ReceivedPacketLossRate) {
- QuicConnectionLoggerPeer::set_num_packets_received(logger_, 1);
- QuicConnectionLoggerPeer::set_largest_received_packet_number(logger_, 2);
- EXPECT_EQ(0.5f, logger_.ReceivedPacketLossRate());
+ QuicConnectionLoggerPeer::set_num_packets_received(logger_.get(), 1);
+ QuicConnectionLoggerPeer::set_largest_received_packet_number(logger_.get(),
+ 2);
+ EXPECT_EQ(0.5f, logger_->ReceivedPacketLossRate());
+}
+
+// Tests that packet counts reported to the socket performance watcher are
+// computed correctly.
+TEST_F(QuicConnectionLoggerTest, ReportUplinkPacketCounts) {
+ // Expecting packet 10. Received packet 10.
+ QuicConnectionLoggerPeer::set_largest_received_packet_number(logger_.get(),
+ 10);
+ QuicConnectionLoggerPeer::ReportPacketCounts(logger_.get(), 9);
+ socket_performance_watcher_factory_.VerifyAndResetPacketCounts(0, 1, 0);
+
+ // Expecting packet 11. Received packet 12.
+ QuicConnectionLoggerPeer::set_largest_received_packet_number(logger_.get(),
+ 12);
+ QuicConnectionLoggerPeer::ReportPacketCounts(logger_.get(), 10);
+ socket_performance_watcher_factory_.VerifyAndResetPacketCounts(1, 1, 0);
+
+ // Expecting packet 13. Received packet with sequence number less than 13.
+ QuicConnectionLoggerPeer::set_largest_received_packet_number(logger_.get(),
+ 12);
+ QuicConnectionLoggerPeer::ReportPacketCounts(logger_.get(), 12);
+ socket_performance_watcher_factory_.VerifyAndResetPacketCounts(0, 0, 1);
}
} // namespace test

Powered by Google App Engine
This is Rietveld 408576698