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

Unified Diff: chrome/browser/net/network_stats_unittest.cc

Issue 10913037: Network connectivity - packet pacing and FEC tests for packet loss. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 3 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
« chrome/browser/net/network_stats.cc ('K') | « chrome/browser/net/network_stats.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/net/network_stats_unittest.cc
===================================================================
--- chrome/browser/net/network_stats_unittest.cc (revision 152367)
+++ chrome/browser/net/network_stats_unittest.cc (working copy)
@@ -44,7 +44,7 @@
// We will use HISTOGRAM_PORT_MAX as the PortIndex enum for testing
// purposes.
- UDPStatsClient* udp_stats_client = new UDPStatsClient();
+ NetworkStats* udp_stats_client = new NetworkStats();
EXPECT_TRUE(udp_stats_client->Start(host_resolver.get(),
test_server_.host_port_pair(),
NetworkStats::HISTOGRAM_PORT_MAX,
@@ -60,39 +60,6 @@
net::TestServer test_server_;
};
-class NetworkStatsTestTCP : public NetworkStatsTest {
- public:
- NetworkStatsTestTCP()
- : test_server_(net::TestServer::TYPE_TCP_ECHO,
- net::TestServer::kLocalhost,
- FilePath(FILE_PATH_LITERAL("net/data"))) {
- }
-
- protected:
- void RunTCPEchoTest(int bytes, int packets, bool has_proxy) {
- net::TestCompletionCallback cb;
-
- scoped_ptr<net::MockHostResolver> host_resolver(
- new net::MockHostResolver());
-
- // We will use HISTOGRAM_PORT_MAX as the PortIndex enum for testing
- // purposes.
- TCPStatsClient* tcp_stats_client = new TCPStatsClient();
- EXPECT_TRUE(tcp_stats_client->Start(host_resolver.get(),
- test_server_.host_port_pair(),
- NetworkStats::HISTOGRAM_PORT_MAX,
- has_proxy,
- bytes,
- packets,
- cb.callback()));
- int rv = cb.WaitForResult();
- // Check there were no errors during connect/write/read to echo TCP server.
- EXPECT_EQ(0, rv);
- }
-
- net::TestServer test_server_;
-};
-
TEST_F(NetworkStatsTestUDP, UDPEcho100BytesHasProxy) {
ASSERT_TRUE(test_server_.Start());
RunUDPEchoTest(100, 1, true);
@@ -133,37 +100,18 @@
RunUDPEchoTest(1024, 4, false);
}
-TEST_F(NetworkStatsTestTCP, TCPEcho100BytesHasProxy) {
- ASSERT_TRUE(test_server_.Start());
- RunTCPEchoTest(100, 1, true);
-}
-
-TEST_F(NetworkStatsTestTCP, TCPEcho100BytesNoProxy) {
- ASSERT_TRUE(test_server_.Start());
- RunTCPEchoTest(100, 1, false);
-}
-
-TEST_F(NetworkStatsTestTCP, TCPEcho1KBytesHasProxy) {
- ASSERT_TRUE(test_server_.Start());
- RunTCPEchoTest(1024, 1, true);
-}
-
-TEST_F(NetworkStatsTestTCP, TCPEcho1KBytesNoProxy) {
- ASSERT_TRUE(test_server_.Start());
- RunTCPEchoTest(1024, 1, false);
-}
-
-TEST_F(NetworkStatsTestTCP, VerifyBytes) {
- static const uint32 KBytesToSend = 100;
- static const uint32 packets_to_send = 1;
- static const uint32 packet_number = 1;
- TCPStatsClient network_stats;
+TEST_F(NetworkStatsTestUDP, VerifyBytesInvalidHeaders) {
+ const uint32 KBytesToSend = 100;
+ const uint32 packets_to_send = 1;
+ NetworkStats network_stats;
net::TestCompletionCallback cb;
network_stats.Initialize(KBytesToSend,
NetworkStats::HISTOGRAM_PORT_MAX,
true,
packets_to_send,
cb.callback());
+ uint32 packet_number = network_stats.packet_number();
+ network_stats.set_base_packet_number(packet_number);
std::string message;
EXPECT_EQ(NetworkStats::ZERO_LENGTH_ERROR,
@@ -175,7 +123,6 @@
std::string invalid_key = base::StringPrintf("%06d", -1);
std::string key_string = base::StringPrintf("%06d", 899999);
std::string packet_number_string = base::StringPrintf("%010d", packet_number);
- std::string invalid_packet_number_string = base::StringPrintf("%010d", -1);
std::string short_payload(packet_number_string +
"1234567890123456789012345678901234567890123456789012345678901234567890");
std::string long_payload(packet_number_string +
@@ -209,7 +156,32 @@
message = version + invalid_checksum + payload_size + key_string +
long_payload;
EXPECT_EQ(NetworkStats::TOO_LONG_PAYLOAD, network_stats.VerifyBytes(message));
+}
+TEST_F(NetworkStatsTestUDP, VerifyBytesInvalidChecksum) {
+ const uint32 KBytesToSend = 100;
+ const uint32 packets_to_send = 1;
+ NetworkStats network_stats;
+ net::TestCompletionCallback cb;
+
+ network_stats.Initialize(KBytesToSend,
+ NetworkStats::HISTOGRAM_PORT_MAX,
+ true,
+ packets_to_send,
+ cb.callback());
+ uint32 packet_number = network_stats.packet_number();
+ network_stats.set_base_packet_number(packet_number);
+
+ std::string message;
+ EXPECT_EQ(NetworkStats::ZERO_LENGTH_ERROR,
+ network_stats.VerifyBytes(message));
+
+ std::string version = base::StringPrintf("%02d", 1);
+ std::string invalid_checksum = base::StringPrintf("%010d", 0);
+ std::string payload_size = base::StringPrintf("%07d", KBytesToSend);
+ std::string key_string = base::StringPrintf("%06d", 899999);
+ std::string packet_number_string = base::StringPrintf("%010d", packet_number);
+
scoped_refptr<net::IOBuffer> payload(new net::IOBuffer(KBytesToSend));
// Copy the Packet number into the payload.
@@ -236,29 +208,143 @@
message = version + invalid_checksum + payload_size + key_string +
encoded_payload;
EXPECT_EQ(NetworkStats::INVALID_CHECKSUM, network_stats.VerifyBytes(message));
+}
- // Corrupt the packet_number in payload data.
- char corrupted_data_1[KBytesToSend];
- memcpy(corrupted_data_1, payload_data, KBytesToSend);
- char temp_char_0 = corrupted_data_1[packet_number_size - 1];
- corrupted_data_1[packet_number_size - 1] =
- corrupted_data_1[packet_number_size - 2];
- corrupted_data_1[packet_number_size - 2] = temp_char_0;
- char encoded_corrupted_data_1[KBytesToSend];
- memset(encoded_corrupted_data_1, 0, KBytesToSend);
- network_stats.Crypt(key,
- key_string.length(),
- corrupted_data_1,
- KBytesToSend,
- encoded_corrupted_data_1);
- std::string invalid_packet_number_payload(encoded_corrupted_data_1,
- KBytesToSend);
- message = version + checksum + payload_size + key_string +
- invalid_packet_number_payload;
+TEST_F(NetworkStatsTestUDP, VerifyBytesPreviousPacket) {
+ const uint32 KBytesToSend = 100;
+ const uint32 packets_to_send = 1;
+ NetworkStats network_stats;
+ net::TestCompletionCallback cb;
+
+ network_stats.Initialize(KBytesToSend,
+ NetworkStats::HISTOGRAM_PORT_MAX,
+ true,
+ packets_to_send,
+ cb.callback());
+ uint32 packet_number = network_stats.packet_number();
+ network_stats.set_base_packet_number(packet_number);
+ uint32 prev_packet_number = packet_number - 1;
+
+ std::string message;
+ std::string version = base::StringPrintf("%02d", 1);
+ std::string payload_size = base::StringPrintf("%07d", KBytesToSend);
+ std::string key_string = base::StringPrintf("%06d", 899999);
+ std::string prev_packet_number_string =
+ base::StringPrintf("%010d", prev_packet_number);
+
+ // Copy the previous packet number into the payload.
+ scoped_refptr<net::IOBuffer> payload(new net::IOBuffer(KBytesToSend));
+ size_t packet_number_size = prev_packet_number_string.size();
+ memcpy(payload->data(), prev_packet_number_string.c_str(),
+ packet_number_size);
+
+ // Get random bytes to fill rest of the payload.
+ network_stats.stream_.GetBytes(payload->data() + packet_number_size,
+ KBytesToSend - packet_number_size);
+
+ // Calculate checksum for the previous packet number payload.
+ char* payload_data = payload->data();
+ uint32 sum = network_stats.GetChecksum(payload_data, KBytesToSend);
+ std::string checksum = base::StringPrintf("%010d", sum);
+
+ char encoded_data[KBytesToSend];
+ memset(encoded_data, 0, KBytesToSend);
+ const char* key = key_string.c_str();
+ network_stats.Crypt(
+ key, key_string.length(), payload_data, KBytesToSend, encoded_data);
+ std::string encoded_payload(encoded_data, KBytesToSend);
+
+ message = version + checksum + payload_size + key_string + encoded_payload;
+ EXPECT_EQ(NetworkStats::PREVIOUS_PACKET_NUMBER,
+ network_stats.VerifyBytes(message));
+ EXPECT_EQ(0u, network_stats.packets_received_mask());
+}
+
+TEST_F(NetworkStatsTestUDP, VerifyBytesInvalidPacketNumber) {
+ const uint32 KBytesToSend = 100;
+ const uint32 packets_to_send = 1;
+ NetworkStats network_stats;
+ net::TestCompletionCallback cb;
+
+ network_stats.Initialize(KBytesToSend,
+ NetworkStats::HISTOGRAM_PORT_MAX,
+ true,
+ packets_to_send,
+ cb.callback());
+ uint32 packet_number = network_stats.packet_number();
+ network_stats.set_base_packet_number(packet_number);
+ uint32 corrupt_packet_number = packet_number + 1;
+
+ std::string message;
+ std::string version = base::StringPrintf("%02d", 1);
+ std::string payload_size = base::StringPrintf("%07d", KBytesToSend);
+ std::string key_string = base::StringPrintf("%06d", 899999);
+ std::string corrupt_packet_number_string =
+ base::StringPrintf("%010d", corrupt_packet_number);
+
+ scoped_refptr<net::IOBuffer> payload(new net::IOBuffer(KBytesToSend));
+ size_t packet_number_size = corrupt_packet_number_string.size();
+ memcpy(payload->data(), corrupt_packet_number_string.c_str(),
+ packet_number_size);
+
+ // Get random bytes to fill rest of the payload.
+ network_stats.stream_.GetBytes(payload->data() + packet_number_size,
+ KBytesToSend - packet_number_size);
+
+ // Calculate checksum for the corrupt packet number payload.
+ char* payload_data = payload->data();
+ uint32 sum = network_stats.GetChecksum(payload_data, KBytesToSend);
+ std::string checksum = base::StringPrintf("%010d", sum);
+
+ char encoded_data[KBytesToSend];
+ memset(encoded_data, 0, KBytesToSend);
+ const char* key = key_string.c_str();
+ network_stats.Crypt(
+ key, key_string.length(), payload_data, KBytesToSend, encoded_data);
+ std::string encoded_payload(encoded_data, KBytesToSend);
+ message = version + checksum + payload_size + key_string + encoded_payload;
EXPECT_EQ(NetworkStats::INVALID_PACKET_NUMBER,
network_stats.VerifyBytes(message));
EXPECT_EQ(0u, network_stats.packets_received_mask());
+}
+TEST_F(NetworkStatsTestUDP, VerifyBytesPatternChanged) {
+ const uint32 KBytesToSend = 100;
+ const uint32 packets_to_send = 1;
+ NetworkStats network_stats;
+ net::TestCompletionCallback cb;
+
+ network_stats.Initialize(KBytesToSend,
+ NetworkStats::HISTOGRAM_PORT_MAX,
+ true,
+ packets_to_send,
+ cb.callback());
+ uint32 packet_number = network_stats.packet_number();
+ network_stats.set_base_packet_number(packet_number);
+
+ std::string message;
+ std::string version = base::StringPrintf("%02d", 1);
+ std::string payload_size = base::StringPrintf("%07d", KBytesToSend);
+ std::string key_string = base::StringPrintf("%06d", 899999);
+ std::string packet_number_string = base::StringPrintf("%010d", packet_number);
+
+ scoped_refptr<net::IOBuffer> payload(new net::IOBuffer(KBytesToSend));
+
+ // Copy the Packet number into the payload.
+ size_t packet_number_size = packet_number_string.size();
+ memcpy(payload->data(), packet_number_string.c_str(), packet_number_size);
+
+ // Get random bytes to fill rest of the payload.
+ network_stats.stream_.GetBytes(payload->data() + packet_number_size,
+ KBytesToSend - packet_number_size);
+
+ // Calculate checksum for the payload.
+ char* payload_data = payload->data();
+ uint32 sum = network_stats.GetChecksum(payload_data, KBytesToSend);
+ std::string checksum = base::StringPrintf("%010d", sum);
+
+ const char* key = key_string.c_str();
+
// Corrupt the randomly generated bytes in payload data.
char corrupted_data_2[KBytesToSend];
memcpy(corrupted_data_2, payload_data, KBytesToSend);
@@ -277,7 +363,51 @@
message = version + checksum + payload_size + key_string + invalid_payload;
EXPECT_EQ(NetworkStats::PATTERN_CHANGED, network_stats.VerifyBytes(message));
EXPECT_EQ(0u, network_stats.packets_received_mask());
+}
+
+TEST_F(NetworkStatsTestUDP, VerifyBytes) {
+ const uint32 KBytesToSend = 100;
+ const uint32 packets_to_send = 1;
+ NetworkStats network_stats;
+ net::TestCompletionCallback cb;
+
+ network_stats.Initialize(KBytesToSend,
+ NetworkStats::HISTOGRAM_PORT_MAX,
+ true,
+ packets_to_send,
+ cb.callback());
+ uint32 packet_number = network_stats.packet_number();
+ network_stats.set_base_packet_number(packet_number);
+
+ std::string message;
+ std::string version = base::StringPrintf("%02d", 1);
+ std::string payload_size = base::StringPrintf("%07d", KBytesToSend);
+ std::string key_string = base::StringPrintf("%06d", 899999);
+ std::string packet_number_string = base::StringPrintf("%010d", packet_number);
+
+ scoped_refptr<net::IOBuffer> payload(new net::IOBuffer(KBytesToSend));
+
+ // Copy the Packet number into the payload.
+ size_t packet_number_size = packet_number_string.size();
+ memcpy(payload->data(), packet_number_string.c_str(), packet_number_size);
+
+ // Get random bytes to fill rest of the payload.
+ network_stats.stream_.GetBytes(payload->data() + packet_number_size,
+ KBytesToSend - packet_number_size);
+
+ // Calculate checksum for the payload.
+ char* payload_data = payload->data();
+ uint32 sum = network_stats.GetChecksum(payload_data, KBytesToSend);
+ std::string checksum = base::StringPrintf("%010d", sum);
+
+ char encoded_data[KBytesToSend];
+ memset(encoded_data, 0, KBytesToSend);
+ const char* key = key_string.c_str();
+ network_stats.Crypt(
+ key, key_string.length(), payload_data, KBytesToSend, encoded_data);
+ std::string encoded_payload(encoded_data, KBytesToSend);
+
message = version + checksum + payload_size + key_string + encoded_payload;
EXPECT_EQ(NetworkStats::SUCCESS, network_stats.VerifyBytes(message));
EXPECT_EQ(1u, network_stats.packets_received_mask());
« chrome/browser/net/network_stats.cc ('K') | « chrome/browser/net/network_stats.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698