network_stats_unittest.cc revision f2477e01787aa58f445919b809d89e252beef54f
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 69ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/net/network_stats.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/net_errors.h" 9558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "net/base/network_change_notifier.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/test_completion_callback.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/dns/host_resolver.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/dns/mock_host_resolver.h" 13558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "net/socket/socket_test_util.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/platform_test.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome_browser_net { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetworkStatsTest : public PlatformTest { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkStatsTest() {} 22558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 24558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 25558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual void SetUp() { 26558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 27558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch base::MessageLoop::current()->RunUntilIdle(); 28558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_writes_.clear(); 29558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_reads_.clear(); 30558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 31558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void TearDown() { 33558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 34558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Empty the current queue. 35558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch base::MessageLoop::current()->RunUntilIdle(); 36558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch PlatformTest::TearDown(); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void CreateToken(uint64 timestamp_micros, 40558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const string& hash, 41558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ProbePacket_Token* token) { 42558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch token->set_timestamp_micros(timestamp_micros); 43558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch token->mutable_hash()->assign(hash); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // DeterministicMockData defines the exact sequence of the read/write 47558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // operations (specified by the last parameter of MockRead/MockWrite). 48558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // |io_mode_write| is the IO mode for writing only. Reading is always async. 49558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void MakeDeterministicMockData(uint32 max_tests, 50558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 max_probe_packets, 51558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 probe_bytes, 52558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::IoMode io_mode_write) { 53558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Only allow 0 or 1 test because the test 2 in NetworkStats is random. 54558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DCHECK_LT(max_tests, 2U); 55558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch outputs_.resize(10); 56558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ProbePacket probe_packet; 57558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ProbeMessage probe_message; 58558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_message.SetPacketHeader(ProbePacket_Type_HELLO_REQUEST, 59558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch &probe_packet); 60558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.set_group_id(0); 61558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch outputs_[0] = probe_message.MakeEncodedPacket(probe_packet); 62558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_writes_.clear(); 63558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_writes_.push_back(net::MockWrite( 64558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch io_mode_write, &outputs_[0][0], outputs_[0].size(), 0)); 65558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Add one probe_request. 66558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet = ProbePacket(); // Clear all content. 67558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ProbePacket_Token token; 68558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CreateToken(1L, "1010", &token); 69558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_message.GenerateProbeRequest( 70558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch token, 1, probe_bytes, 0, max_probe_packets, &probe_packet); 71558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch outputs_[1] = probe_message.MakeEncodedPacket(probe_packet); 72558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_writes_.push_back(net::MockWrite( 73558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch io_mode_write, &outputs_[1][0], outputs_[1].size(), 2)); 74558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 75558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch inputs_.resize(10); 76558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_reads_.clear(); 77558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Add a hello reply. 78558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet = ProbePacket(); // Clear all content. 79558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_message.SetPacketHeader(ProbePacket_Type_HELLO_REPLY, &probe_packet); 80558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.set_group_id(0); 81558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CreateToken(1L, "1010", probe_packet.mutable_token()); 82558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch inputs_[0] = probe_message.MakeEncodedPacket(probe_packet); 83558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_reads_.push_back( 84558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::MockRead(net::ASYNC, &inputs_[0][0], inputs_[0].size(), 1)); 85558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 86558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch for (uint32 i = 0; i < max_probe_packets; ++i) { 87558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Add a probe reply. 88558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet = ProbePacket(); // Clear all content. 89558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_message.SetPacketHeader(ProbePacket_Type_PROBE_REPLY, 90558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch &probe_packet); 91558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch int padding_size = probe_bytes - probe_packet.ByteSize() - 8; 92558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.mutable_padding()->append( 93558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch std::string(std::max(0, padding_size), 0)); 94558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.mutable_header()->set_checksum(0); 95558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.set_group_id(1); 96558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.set_packet_index(i); 97558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch inputs_[1 + i] = probe_message.MakeEncodedPacket(probe_packet); 98558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_reads_.push_back(net::MockRead( 99558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::ASYNC, &inputs_[1 + i][0], inputs_[1 + i].size(), 3 + i)); 100558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 101558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 103558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Test NetworkStats::Start(...) method. 104558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void TestStart(bool has_proxy, 105558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 max_tests, 106558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 max_probe_packets, 107558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 bytes, 108558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::IoMode io_mode) { 109558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::DeterministicMockClientSocketFactory mock_socket_factory; 110558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch MakeDeterministicMockData(max_tests, max_probe_packets, bytes, io_mode); 111558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::DeterministicSocketData test_data( 112558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch &mock_reads_[0], mock_reads_.size(), 113558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch &mock_writes_[0], mock_writes_.size()); 114558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_socket_factory.AddSocketDataProvider(&test_data); 115558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch NetworkStats* udp_stats_client = new NetworkStats(&mock_socket_factory); 116558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->maximum_tests_ = max_tests; 117558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->maximum_sequential_packets_ = max_probe_packets; 118558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 119558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::TestCompletionCallback cb; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<net::MockHostResolver> host_resolver( 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new net::MockHostResolver()); 122558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::HostPortPair host_port_pair; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(udp_stats_client->Start(host_resolver.get(), 124558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch host_port_pair, 125558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 9999, 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_proxy, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bytes, 128f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bytes, 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cb.callback())); 130558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch int num_packets_run = (max_tests + 1) * 2 + max_probe_packets - 1; 131558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch test_data.RunFor(num_packets_run); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int rv = cb.WaitForResult(); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check there were no errors during connect/write/read to echo UDP server. 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0, rv); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 137558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Make one write and then |max_probe_packets| reads. 138558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void MakeDelayedMockData(NetworkStats::TestType test_type, 139558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 probe_bytes, 140558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 pacing_interval_micros, 141558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 max_probe_packets, 142558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::IoMode io_mode) { 143558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch outputs_.resize(1); 144558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ProbePacket probe_packet; 145558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ProbeMessage probe_message; 146558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_writes_.clear(); 147558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ProbePacket_Token token; 148558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CreateToken(2L, "2a2b", &token); 149558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch switch (test_type) { 150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case NetworkStats::PACKET_SIZE_TEST: 151558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch case NetworkStats::NON_PACED_PACKET_TEST: 152558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch pacing_interval_micros = 0; 153558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch break; 154558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch case NetworkStats::NAT_BIND_TEST: 155558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // For NAT_BIND_TEST, we always set this to 1000000 to avoid the 156558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // randomness in NetworkStats::SendProbeRequest() and to match 157558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // the value chosen in TestStartOneTest() below. 158558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch pacing_interval_micros = 1000000; 159558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch break; 160558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch default: {} // Do nothing here. 161558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 162558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_message.GenerateProbeRequest(token, 163558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 1, // current_test_index_ = 1. 164558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_bytes, 165558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch pacing_interval_micros, 166558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch max_probe_packets, 167558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch &probe_packet); 168558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch outputs_[0] = probe_message.MakeEncodedPacket(probe_packet); 169558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_writes_.push_back( 170558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::MockWrite(io_mode, &outputs_[0][0], outputs_[0].size())); 171558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 172558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch inputs_.resize(max_probe_packets); 173558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_reads_.clear(); 174558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch for (uint32 i = 0; i < max_probe_packets; ++i) { 175558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Add a probe reply. 176558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet = ProbePacket(); // Clear all content. 177558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_message.SetPacketHeader(ProbePacket_Type_PROBE_REPLY, 178558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch &probe_packet); 179558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch int padding_size = probe_bytes - probe_packet.ByteSize() - 8; 180558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.mutable_padding()->append( 181558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch std::string(std::max(0, padding_size), 0)); 182558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.mutable_header()->set_checksum(0); 183558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.set_group_id(1); 184558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch probe_packet.set_packet_index(i); 185558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch inputs_[i] = probe_message.MakeEncodedPacket(probe_packet); 186558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_reads_.push_back( 187558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::MockRead(io_mode, &inputs_[i][0], inputs_[i].size())); 188558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 189558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 190558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 191558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Test NetworkStats::StartOneTest(...) method. 192558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch void TestStartOneTest(bool has_proxy, 193558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch NetworkStats::TestType test_type, 194558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 bytes, 195558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 interval_micros, 196558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32 max_probe_packets, 197558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::IoMode io_mode) { 198558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 199558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::MockClientSocketFactory mock_socket_factory; 200558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch MakeDelayedMockData( 201558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch test_type, bytes, interval_micros, max_probe_packets, io_mode); 202558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::DelayedSocketData test_data(1, 203558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch &mock_reads_[0], 204558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_reads_.size(), 205558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch &mock_writes_[0], 206558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_writes_.size()); 207558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch mock_socket_factory.AddSocketDataProvider(&test_data); 208558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch NetworkStats* udp_stats_client = new NetworkStats(&mock_socket_factory); 209558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->maximum_tests_ = 1; // Only do one probe at a time. 210558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->maximum_sequential_packets_ = max_probe_packets; 211558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->maximum_NAT_packets_ = max_probe_packets; 212558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // For NAT_BIND_TEST, we always set this to 1 (second) to avoid the 213558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // randomness in NetworkStats::SendProbeRequest(). 214558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->maximum_NAT_idle_seconds_ = 1; 215558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->start_test_after_connect_ = false; 216558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->inter_arrival_time_ = 217558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch base::TimeDelta::FromMicroseconds(interval_micros); 218558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CreateToken(2L, "2a2b", &udp_stats_client->token_); 219558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 220558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::TestCompletionCallback cb; 221558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch scoped_ptr<net::MockHostResolver> host_resolver( 222558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch new net::MockHostResolver()); 223558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch net::HostPortPair host_port_pair; 224558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch EXPECT_TRUE(udp_stats_client->Start(host_resolver.get(), 225558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch host_port_pair, 226558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 9999, 227558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch has_proxy, 228558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch bytes, 229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bytes, 230558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch cb.callback())); 231558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Test need to be added after Start() because Start() will reset 232558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // test_sequence_ 233558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->test_sequence_.push_back(test_type); 234558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->current_test_index_ = 1; 235558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Wait for host resolving and check if there were no errors during 236558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // connect/write/read to UDP server. 237558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch int rv = cb.WaitForResult(); 238558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch EXPECT_EQ(0, rv); 239558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->ReadData(); 240558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch udp_stats_client->StartOneTest(); 241558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch rv = cb.WaitForResult(); 242558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch EXPECT_EQ(0, rv); 243558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 244558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 245558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch base::MessageLoopForIO message_loop_; 246558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch std::vector<std::string> inputs_; 247558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch std::vector<std::string> outputs_; 248558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch std::vector<net::MockRead> mock_reads_; 249558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch std::vector<net::MockWrite> mock_writes_; 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 252558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest100BHasProxyGetToken) { 253558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(true, 0, 1, 100, net::ASYNC); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 256558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest500BHasNoProxyGetTokenSync) { 257558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(false, 0, 1, 500, net::SYNCHRONOUS); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 260558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest100BHasNoProxyOneTest) { 261558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(false, 1, 1, 100, net::ASYNC); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 264558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest100BHasNoProxyOneTestSync) { 265558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(false, 1, 1, 100, net::SYNCHRONOUS); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 268558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest100BHasProxyOneTest) { 269558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(true, 1, 1, 100, net::ASYNC); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 272558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest100BHasProxyOneTestSync) { 273558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(true, 1, 1, 100, net::SYNCHRONOUS); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 276558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest500BHasProxyOneTest) { 277558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(true, 1, 1, 500, net::ASYNC); 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 280558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest500BHasNoProxyOneTestSync) { 281558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(false, 1, 1, 500, net::SYNCHRONOUS); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 284558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest500BHasNoProxyOneTest) { 285558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(false, 1, 1, 500, net::ASYNC); 286558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 288558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest500BHasProxyOneTestSync) { 289558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(true, 1, 1, 500, net::SYNCHRONOUS); 290558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 291558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 292558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest1200BHasProxyOneTest) { 293558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(true, 1, 1, 1200, net::ASYNC); 294558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 295558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 296558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest1200BHasNoProxyOneTestSync) { 297558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(false, 1, 1, 1200, net::SYNCHRONOUS); 298558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 299558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 300558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest1200BHasNoProxyOneTest) { 301558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(false, 1, 1, 1200, net::ASYNC); 302558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 303558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 304558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest1200BHasProxyOneTestSync) { 305558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(true, 1, 1, 1200, net::SYNCHRONOUS); 306558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 307558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 308558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest100BHasNoProxyOneTestMultiPackets) { 309558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(false, 1, 4, 100, net::ASYNC); 310558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 311558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 312558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, ProbeTest1200BHasProxyOneTestMultiPacketsSync) { 313558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStart(true, 1, 4, 1200, net::SYNCHRONOUS); 314558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 315558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 316558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNonPacedTest100BHasProxy) { 317558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 318558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch true, NetworkStats::NON_PACED_PACKET_TEST, 100, 0, 1, net::ASYNC); 319558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 320558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 321558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNonPacedTest100BHasNoProxySync) { 322558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 323558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, NetworkStats::NON_PACED_PACKET_TEST, 100, 0, 1, net::SYNCHRONOUS); 324558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 325558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 326558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNonPacedTest500BHasNoProxy) { 327558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 328558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, NetworkStats::NON_PACED_PACKET_TEST, 500, 3, 1, net::ASYNC); 329558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 330558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 331558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNonPacedTest1200BHasProxySync) { 332558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 333558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch true, NetworkStats::NON_PACED_PACKET_TEST, 1200, 1, 1, net::SYNCHRONOUS); 334558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 335558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 336558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNonPacedTest500BHasNoProxyMulti) { 337558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 338558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, NetworkStats::NON_PACED_PACKET_TEST, 500, 2, 3, net::ASYNC); 339558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 340558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 341558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNonPacedTest1200BHasProxySyncMulti) { 342558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 343558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch true, NetworkStats::NON_PACED_PACKET_TEST, 1200, 1, 4, net::SYNCHRONOUS); 344558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 345558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 346558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartPacedTest100BHasProxy) { 347558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 348558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch true, NetworkStats::PACED_PACKET_TEST, 100, 0, 1, net::ASYNC); 349558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 350558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 351558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartPacedTest100BHasNoProxySync) { 352558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 353558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, NetworkStats::PACED_PACKET_TEST, 100, 0, 1, net::SYNCHRONOUS); 354558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 355558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 356558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartPacedTest500BHasNoProxy) { 357558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 358558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, NetworkStats::PACED_PACKET_TEST, 500, 3, 1, net::ASYNC); 359558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 360558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 361558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartPacedTest1200BHasProxySync) { 362558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 363558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch true, NetworkStats::PACED_PACKET_TEST, 1200, 1, 1, net::SYNCHRONOUS); 364558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 365558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 366558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartPacedTest500BHasNoProxyMulti) { 367558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 368558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, NetworkStats::PACED_PACKET_TEST, 500, 2, 3, net::ASYNC); 369558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 370558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 371558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartPacedTest1200BHasProxySyncMulti) { 372558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 373558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch true, NetworkStats::PACED_PACKET_TEST, 1200, 1, 4, net::SYNCHRONOUS); 374558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 375558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 376558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNATBindTest100BHasProxy) { 377558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest(true, NetworkStats::NAT_BIND_TEST, 100, 0, 1, net::ASYNC); 378558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 379558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 380558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNATBindTest100BHasNoProxySync) { 381558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 382558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, NetworkStats::NAT_BIND_TEST, 100, 3, 1, net::SYNCHRONOUS); 383558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 384558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 385558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNATBindTest500BHasNoProxy) { 386558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest(false, NetworkStats::NAT_BIND_TEST, 500, 0, 2, net::ASYNC); 387558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 389558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(NetworkStatsTest, StartNATBindTest1200BHasProxySync) { 390558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch TestStartOneTest( 391558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch true, NetworkStats::NAT_BIND_TEST, 1200, 3, 2, net::SYNCHRONOUS); 3927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 3937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 394f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(NetworkStatsTest, StartPacketSizeTest1500BHasProxy) { 395f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TestStartOneTest( 396f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) true, NetworkStats::PACKET_SIZE_TEST, 1500, 0, 1, net::ASYNC); 397f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 398f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 399f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(NetworkStatsTest, StartPacketSizeTest1500HasNoProxySync) { 400f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TestStartOneTest( 401f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, NetworkStats::PACKET_SIZE_TEST, 1500, 0, 1, net::SYNCHRONOUS); 402f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 403f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 404f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(NetworkStatsTest, StartPacketSizeTest1500BHasNoProxy) { 405f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TestStartOneTest( 406f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, NetworkStats::PACKET_SIZE_TEST, 1500, 0, 1, net::ASYNC); 407f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 408f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chrome_browser_net 410