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

Side by Side Diff: chrome/browser/net/network_stats_unittest.cc

Issue 10206035: NetConnectivity - Collect stats for TCP/UDP network (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "base/stringprintf.h" 7 #include "base/stringprintf.h"
8 #include "chrome/browser/net/network_stats.h" 8 #include "chrome/browser/net/network_stats.h"
9 #include "net/base/host_resolver.h" 9 #include "net/base/host_resolver.h"
10 #include "net/base/mock_host_resolver.h" 10 #include "net/base/mock_host_resolver.h"
(...skipping 18 matching lines...) Expand all
29 29
30 class NetworkStatsTestUDP : public NetworkStatsTest { 30 class NetworkStatsTestUDP : public NetworkStatsTest {
31 public: 31 public:
32 NetworkStatsTestUDP() 32 NetworkStatsTestUDP()
33 : test_server_(net::TestServer::TYPE_UDP_ECHO, 33 : test_server_(net::TestServer::TYPE_UDP_ECHO,
34 net::TestServer::kLocalhost, 34 net::TestServer::kLocalhost,
35 FilePath(FILE_PATH_LITERAL("net/data"))) { 35 FilePath(FILE_PATH_LITERAL("net/data"))) {
36 } 36 }
37 37
38 protected: 38 protected:
39 void RunUDPEchoTest(int bytes, int packets) { 39 void RunUDPEchoTest(int bytes, int packets, bool has_proxy) {
40 net::TestCompletionCallback cb; 40 net::TestCompletionCallback cb;
41 41
42 scoped_ptr<net::MockHostResolver> host_resolver( 42 scoped_ptr<net::MockHostResolver> host_resolver(
43 new net::MockHostResolver()); 43 new net::MockHostResolver());
44 44
45 // We will use HISTOGRAM_PORT_MAX as the PortIndex enum for testing 45 // We will use HISTOGRAM_PORT_MAX as the PortIndex enum for testing
46 // purposes. 46 // purposes.
47 UDPStatsClient* udp_stats_client = new UDPStatsClient(); 47 UDPStatsClient* udp_stats_client = new UDPStatsClient();
48 EXPECT_TRUE(udp_stats_client->Start(host_resolver.get(), 48 EXPECT_TRUE(udp_stats_client->Start(host_resolver.get(),
49 test_server_.host_port_pair(), 49 test_server_.host_port_pair(),
50 NetworkStats::HISTOGRAM_PORT_MAX, 50 NetworkStats::HISTOGRAM_PORT_MAX,
51 has_proxy,
51 bytes, 52 bytes,
52 packets, 53 packets,
53 cb.callback())); 54 cb.callback()));
54 int rv = cb.WaitForResult(); 55 int rv = cb.WaitForResult();
55 // Check there were no errors during connect/write/read to echo UDP server. 56 // Check there were no errors during connect/write/read to echo UDP server.
56 EXPECT_EQ(0, rv); 57 EXPECT_EQ(0, rv);
57 } 58 }
58 59
59 net::TestServer test_server_; 60 net::TestServer test_server_;
60 }; 61 };
61 62
62 class NetworkStatsTestTCP : public NetworkStatsTest { 63 class NetworkStatsTestTCP : public NetworkStatsTest {
63 public: 64 public:
64 NetworkStatsTestTCP() 65 NetworkStatsTestTCP()
65 : test_server_(net::TestServer::TYPE_TCP_ECHO, 66 : test_server_(net::TestServer::TYPE_TCP_ECHO,
66 net::TestServer::kLocalhost, 67 net::TestServer::kLocalhost,
67 FilePath(FILE_PATH_LITERAL("net/data"))) { 68 FilePath(FILE_PATH_LITERAL("net/data"))) {
68 } 69 }
69 70
70 protected: 71 protected:
71 void RunTCPEchoTest(int bytes, int packets) { 72 void RunTCPEchoTest(int bytes, int packets, bool has_proxy) {
72 net::TestCompletionCallback cb; 73 net::TestCompletionCallback cb;
73 74
74 scoped_ptr<net::MockHostResolver> host_resolver( 75 scoped_ptr<net::MockHostResolver> host_resolver(
75 new net::MockHostResolver()); 76 new net::MockHostResolver());
76 77
77 // We will use HISTOGRAM_PORT_MAX as the PortIndex enum for testing 78 // We will use HISTOGRAM_PORT_MAX as the PortIndex enum for testing
78 // purposes. 79 // purposes.
79 TCPStatsClient* tcp_stats_client = new TCPStatsClient(); 80 TCPStatsClient* tcp_stats_client = new TCPStatsClient();
80 EXPECT_TRUE(tcp_stats_client->Start(host_resolver.get(), 81 EXPECT_TRUE(tcp_stats_client->Start(host_resolver.get(),
81 test_server_.host_port_pair(), 82 test_server_.host_port_pair(),
82 NetworkStats::HISTOGRAM_PORT_MAX, 83 NetworkStats::HISTOGRAM_PORT_MAX,
84 has_proxy,
83 bytes, 85 bytes,
84 packets, 86 packets,
85 cb.callback())); 87 cb.callback()));
86 int rv = cb.WaitForResult(); 88 int rv = cb.WaitForResult();
87 // Check there were no errors during connect/write/read to echo TCP server. 89 // Check there were no errors during connect/write/read to echo TCP server.
88 EXPECT_EQ(0, rv); 90 EXPECT_EQ(0, rv);
89 } 91 }
90 92
91 net::TestServer test_server_; 93 net::TestServer test_server_;
92 }; 94 };
93 95
94 TEST_F(NetworkStatsTestUDP, UDPEcho_100B_Of_Data) { 96 TEST_F(NetworkStatsTestUDP, UDPEcho100BytesHasProxy) {
95 ASSERT_TRUE(test_server_.Start()); 97 ASSERT_TRUE(test_server_.Start());
96 RunUDPEchoTest(100, 1); 98 RunUDPEchoTest(100, 1, true);
97 } 99 }
98 100
99 TEST_F(NetworkStatsTestUDP, UDPEcho_1K_Of_Data) { 101 TEST_F(NetworkStatsTestUDP, UDPEcho100BytesNoProxy) {
100 ASSERT_TRUE(test_server_.Start()); 102 ASSERT_TRUE(test_server_.Start());
101 RunUDPEchoTest(1024, 1); 103 RunUDPEchoTest(100, 1, false);
102 } 104 }
103 105
104 TEST_F(NetworkStatsTestUDP, UDPEchoMultiplePackets) { 106 TEST_F(NetworkStatsTestUDP, UDPEcho1KBytesHasProxy) {
105 ASSERT_TRUE(test_server_.Start()); 107 ASSERT_TRUE(test_server_.Start());
106 RunUDPEchoTest(1024, 4); 108 RunUDPEchoTest(1024, 1, true);
107 } 109 }
108 110
109 TEST_F(NetworkStatsTestTCP, TCPEcho_100B_Of_Data) { 111 TEST_F(NetworkStatsTestUDP, UDPEcho1KBytesNoProxy) {
110 ASSERT_TRUE(test_server_.Start()); 112 ASSERT_TRUE(test_server_.Start());
111 RunTCPEchoTest(100, 1); 113 RunUDPEchoTest(1024, 1, false);
112 } 114 }
113 115
114 TEST_F(NetworkStatsTestTCP, TCPEcho_1K_Of_Data) { 116 TEST_F(NetworkStatsTestUDP, UDPEchoMultiplePacketsHasProxy) {
115 ASSERT_TRUE(test_server_.Start()); 117 ASSERT_TRUE(test_server_.Start());
116 RunTCPEchoTest(1024, 1); 118 RunUDPEchoTest(1024, 4, true);
119 }
120
121 TEST_F(NetworkStatsTestUDP, UDPEchoMultiplePacketsNoProxy) {
122 ASSERT_TRUE(test_server_.Start());
123 RunUDPEchoTest(1024, 4, false);
124 }
125
126 TEST_F(NetworkStatsTestTCP, TCPEcho100BytesHasProxy) {
127 ASSERT_TRUE(test_server_.Start());
128 RunTCPEchoTest(100, 1, true);
129 }
130
131 TEST_F(NetworkStatsTestTCP, TCPEcho100BytesNoProxy) {
132 ASSERT_TRUE(test_server_.Start());
133 RunTCPEchoTest(100, 1, false);
134 }
135
136 TEST_F(NetworkStatsTestTCP, TCPEcho1KBytesHasProxy) {
137 ASSERT_TRUE(test_server_.Start());
138 RunTCPEchoTest(1024, 1, true);
139 }
140
141 TEST_F(NetworkStatsTestTCP, TCPEcho1KBytesNoProxy) {
142 ASSERT_TRUE(test_server_.Start());
143 RunTCPEchoTest(1024, 1, false);
117 } 144 }
118 145
119 TEST_F(NetworkStatsTestTCP, VerifyBytes) { 146 TEST_F(NetworkStatsTestTCP, VerifyBytes) {
120 static const uint32 KBytesToSend = 100; 147 static const uint32 KBytesToSend = 100;
121 static const uint32 packets_to_send = 1; 148 static const uint32 packets_to_send = 1;
122 static const uint32 packet_number = 1; 149 static const uint32 packet_number = 1;
123 TCPStatsClient network_stats; 150 TCPStatsClient network_stats;
124 net::TestCompletionCallback cb; 151 net::TestCompletionCallback cb;
125 network_stats.Initialize(KBytesToSend, 152 network_stats.Initialize(KBytesToSend,
126 NetworkStats::HISTOGRAM_PORT_MAX, 153 NetworkStats::HISTOGRAM_PORT_MAX,
154 true,
127 packets_to_send, 155 packets_to_send,
128 cb.callback()); 156 cb.callback());
129 157
130 std::string message; 158 std::string message;
131 EXPECT_EQ(NetworkStats::ZERO_LENGTH_ERROR, 159 EXPECT_EQ(NetworkStats::ZERO_LENGTH_ERROR,
132 network_stats.VerifyBytes(message)); 160 network_stats.VerifyBytes(message));
133 161
134 std::string version = base::StringPrintf("%02d", 1); 162 std::string version = base::StringPrintf("%02d", 1);
135 std::string invalid_checksum = base::StringPrintf("%010d", 0); 163 std::string invalid_checksum = base::StringPrintf("%010d", 0);
136 std::string payload_size = base::StringPrintf("%07d", KBytesToSend); 164 std::string payload_size = base::StringPrintf("%07d", KBytesToSend);
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 message = version + checksum + payload_size + key_string + invalid_payload; 267 message = version + checksum + payload_size + key_string + invalid_payload;
240 EXPECT_EQ(NetworkStats::PATTERN_CHANGED, network_stats.VerifyBytes(message)); 268 EXPECT_EQ(NetworkStats::PATTERN_CHANGED, network_stats.VerifyBytes(message));
241 EXPECT_EQ(0u, network_stats.packets_received_mask()); 269 EXPECT_EQ(0u, network_stats.packets_received_mask());
242 270
243 message = version + checksum + payload_size + key_string + encoded_payload; 271 message = version + checksum + payload_size + key_string + encoded_payload;
244 EXPECT_EQ(NetworkStats::SUCCESS, network_stats.VerifyBytes(message)); 272 EXPECT_EQ(NetworkStats::SUCCESS, network_stats.VerifyBytes(message));
245 EXPECT_EQ(1u, network_stats.packets_received_mask()); 273 EXPECT_EQ(1u, network_stats.packets_received_mask());
246 } 274 }
247 275
248 TEST_F(NetworkStatsTest, GetHistogramNames) { 276 TEST_F(NetworkStatsTest, GetHistogramNames) {
249 // Test TCP, large packet, success histogram name.
250 std::string rtt_histogram_name; 277 std::string rtt_histogram_name;
278 std::string rtt_no_proxy_histogram_name;
251 std::string status_histogram_name; 279 std::string status_histogram_name;
280 std::string status_no_proxy_histogram_name;
252 std::string packet_loss_histogram_name; 281 std::string packet_loss_histogram_name;
282 std::string packet_loss_no_proxy_histogram_name;
283
284 // Test TCP, large packet, success histogram name, without proxy server.
253 NetworkStats::GetHistogramNames(NetworkStats::PROTOCOL_TCP, 285 NetworkStats::GetHistogramNames(NetworkStats::PROTOCOL_TCP,
254 NetworkStats::PORT_53, 286 NetworkStats::PORT_53,
287 false, // Has no proxy.
255 1024, 288 1024,
256 net::OK, 289 net::OK,
257 &rtt_histogram_name, 290 &rtt_histogram_name,
291 &rtt_no_proxy_histogram_name,
258 &status_histogram_name, 292 &status_histogram_name,
259 &packet_loss_histogram_name); 293 &status_no_proxy_histogram_name,
294 &packet_loss_histogram_name,
295 &packet_loss_no_proxy_histogram_name);
260 EXPECT_EQ("NetConnectivity.TCP.Success.53.1K.RTT", rtt_histogram_name); 296 EXPECT_EQ("NetConnectivity.TCP.Success.53.1K.RTT", rtt_histogram_name);
297 EXPECT_EQ("NetConnectivity.TCP.NoProxy.Success.53.1K.RTT",
298 rtt_no_proxy_histogram_name);
261 EXPECT_EQ("NetConnectivity.TCP.Status.53.1K", status_histogram_name); 299 EXPECT_EQ("NetConnectivity.TCP.Status.53.1K", status_histogram_name);
300 EXPECT_EQ("NetConnectivity.TCP.NoProxy.Status.53.1K",
301 status_no_proxy_histogram_name);
262 EXPECT_EQ("NetConnectivity.TCP.PacketLoss.53.1K", packet_loss_histogram_name); 302 EXPECT_EQ("NetConnectivity.TCP.PacketLoss.53.1K", packet_loss_histogram_name);
303 EXPECT_EQ("NetConnectivity.TCP.NoProxy.PacketLoss.53.1K",
304 packet_loss_no_proxy_histogram_name);
263 305
264 // Test UDP, small packet, failure histogram name. 306 // Test TCP, large packet, success histogram name, with proxy server.
265 std::string rtt_histogram_name1; 307 NetworkStats::GetHistogramNames(NetworkStats::PROTOCOL_TCP,
266 std::string status_histogram_name1; 308 NetworkStats::PORT_53,
309 true, // Has proxy.
310 1024,
311 net::OK,
312 &rtt_histogram_name,
313 &rtt_no_proxy_histogram_name,
314 &status_histogram_name,
315 &status_no_proxy_histogram_name,
316 &packet_loss_histogram_name,
317 &packet_loss_no_proxy_histogram_name);
318 EXPECT_EQ("NetConnectivity.TCP.Success.53.1K.RTT", rtt_histogram_name);
319 EXPECT_EQ("", rtt_no_proxy_histogram_name);
320 EXPECT_EQ("NetConnectivity.TCP.Status.53.1K", status_histogram_name);
321 EXPECT_EQ("", status_no_proxy_histogram_name);
322 EXPECT_EQ("NetConnectivity.TCP.PacketLoss.53.1K", packet_loss_histogram_name);
323 EXPECT_EQ("", packet_loss_no_proxy_histogram_name);
324
325 // Test UDP, small packet, failure histogram name, without proxy server.
267 std::string packet_loss_histogram_name1; 326 std::string packet_loss_histogram_name1;
268 NetworkStats::GetHistogramNames(NetworkStats::PROTOCOL_UDP, 327 NetworkStats::GetHistogramNames(NetworkStats::PROTOCOL_UDP,
269 NetworkStats::PORT_6121, 328 NetworkStats::PORT_6121,
329 false, // Has no proxy.
270 100, 330 100,
271 net::ERR_INVALID_ARGUMENT, 331 net::ERR_INVALID_ARGUMENT,
272 &rtt_histogram_name1, 332 &rtt_histogram_name,
273 &status_histogram_name1, 333 &rtt_no_proxy_histogram_name,
274 &packet_loss_histogram_name1); 334 &status_histogram_name,
275 EXPECT_EQ("", rtt_histogram_name1); 335 &status_no_proxy_histogram_name,
276 EXPECT_EQ("NetConnectivity.UDP.Status.6121.100B", status_histogram_name1); 336 &packet_loss_histogram_name,
337 &packet_loss_no_proxy_histogram_name);
338 EXPECT_EQ("", rtt_histogram_name);
339 EXPECT_EQ("", rtt_no_proxy_histogram_name);
340 EXPECT_EQ("NetConnectivity.UDP.Status.6121.100B", status_histogram_name);
341 EXPECT_EQ("NetConnectivity.UDP.NoProxy.Status.6121.100B",
342 status_no_proxy_histogram_name);
277 EXPECT_EQ("NetConnectivity.UDP.PacketLoss.6121.100B", 343 EXPECT_EQ("NetConnectivity.UDP.PacketLoss.6121.100B",
278 packet_loss_histogram_name1); 344 packet_loss_histogram_name);
345 EXPECT_EQ("NetConnectivity.UDP.NoProxy.PacketLoss.6121.100B",
346 packet_loss_no_proxy_histogram_name);
347
348 // Test UDP, small packet, failure histogram name, with proxy server.
349 NetworkStats::GetHistogramNames(NetworkStats::PROTOCOL_UDP,
350 NetworkStats::PORT_6121,
351 true, // Has proxy.
352 100,
353 net::ERR_INVALID_ARGUMENT,
354 &rtt_histogram_name,
355 &rtt_no_proxy_histogram_name,
356 &status_histogram_name,
357 &status_no_proxy_histogram_name,
358 &packet_loss_histogram_name,
359 &packet_loss_no_proxy_histogram_name);
360 EXPECT_EQ("", rtt_histogram_name);
361 EXPECT_EQ("", rtt_no_proxy_histogram_name);
362 EXPECT_EQ("NetConnectivity.UDP.Status.6121.100B", status_histogram_name);
363 EXPECT_EQ("", status_no_proxy_histogram_name);
364 EXPECT_EQ("NetConnectivity.UDP.PacketLoss.6121.100B",
365 packet_loss_histogram_name);
366 EXPECT_EQ("", packet_loss_no_proxy_histogram_name);
279 } 367 }
280 368
281 } // namespace chrome_browser_net 369 } // namespace chrome_browser_net
OLDNEW
« 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