| Index: net/base/dns_query_unittest.cc
|
| diff --git a/net/base/dns_query_unittest.cc b/net/base/dns_query_unittest.cc
|
| index ba21c4e02353434e07581bc76341533167fc4961..7e5e75eccf7bcb696b853b3f1ec6dcb1eeb84ebd 100644
|
| --- a/net/base/dns_query_unittest.cc
|
| +++ b/net/base/dns_query_unittest.cc
|
| @@ -42,35 +42,11 @@ namespace net {
|
| // | QCLASS |
|
| // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
|
|
| -TEST(DnsQueryTest, RandomIdTest) {
|
| - const std::string kHostname = "www.google.com";
|
| - const uint16 kPort = 80;
|
| -
|
| - DnsQuery q1(kHostname, ADDRESS_FAMILY_IPV4, kPort);
|
| - EXPECT_TRUE(q1.IsValid());
|
| - EXPECT_EQ(kPort, q1.port());
|
| - EXPECT_EQ(kDNS_A, q1.qtype());
|
| - EXPECT_EQ(kHostname, q1.hostname());
|
| -
|
| - DnsQuery q2(kHostname, ADDRESS_FAMILY_IPV4, kPort);
|
| - EXPECT_TRUE(q2.IsValid());
|
| - EXPECT_EQ(kPort, q2.port());
|
| - EXPECT_EQ(kDNS_A, q2.qtype());
|
| - EXPECT_EQ(kHostname, q2.hostname());
|
| -
|
| - // This has a 1/2^16 probability of failure.
|
| - EXPECT_FALSE(q1.id() == q2.id());
|
| -}
|
| -
|
| TEST(DnsQueryTest, ConstructorTest) {
|
| - const std::string kHostname = "www.google.com";
|
| - const uint16 kPort = 80;
|
| + std::string kHostnameDns("\003www\006google\003com", 16);
|
|
|
| - DnsQuery q1(kHostname, ADDRESS_FAMILY_IPV4, kPort);
|
| - EXPECT_TRUE(q1.IsValid());
|
| - EXPECT_EQ(kPort, q1.port());
|
| + DnsQuery q1(kHostnameDns, kDNS_A);
|
| EXPECT_EQ(kDNS_A, q1.qtype());
|
| - EXPECT_EQ(kHostname, q1.hostname());
|
|
|
| uint8 id_hi = q1.id() >> 8, id_lo = q1.id() & 0xff;
|
|
|
| @@ -96,14 +72,36 @@ TEST(DnsQueryTest, ConstructorTest) {
|
|
|
| int expected_size = arraysize(query_data);
|
| EXPECT_EQ(expected_size, q1.io_buffer()->size());
|
| - EXPECT_EQ(0, memcmp(q1.io_buffer()->data(), query_data,
|
| - q1.io_buffer()->size()));
|
| + EXPECT_EQ(0, memcmp(q1.io_buffer()->data(), query_data, expected_size));
|
| +}
|
|
|
| - // Query with a long hostname.
|
| - const char hostname_too_long[] = "123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.1234";
|
| +TEST(DnsQueryTest, CloneTest) {
|
| + std::string kHostnameDns("\003www\006google\003com", 16);
|
|
|
| - DnsQuery q2(hostname_too_long, ADDRESS_FAMILY_IPV4, kPort);
|
| - EXPECT_FALSE(q2.IsValid());
|
| + DnsQuery q1(kHostnameDns, kDNS_A);
|
| + scoped_ptr<DnsQuery> q2(q1.CloneWithNewId());
|
| + EXPECT_EQ(q1.io_buffer()->size(), q2->io_buffer()->size());
|
| + EXPECT_EQ(q1.qtype(), q2->qtype());
|
| + EXPECT_EQ(q1.question_size(), q2->question_size());
|
| + EXPECT_EQ(0, memcmp(q1.question_data(), q2->question_data(),
|
| + q1.question_size()));
|
| +}
|
| +
|
| +TEST(DnsQueryTest, RandomIdTest) {
|
| + std::string kHostnameDns("\003www\006google\003com", 16);
|
| +
|
| + // Since id fields are 16-bit values, we iterate to reduce the
|
| + // probability of collision, to avoid a flaky test.
|
| + bool ids_are_random = false;
|
| + for (int i = 0; i < 1000; ++i) {
|
| + DnsQuery q1(kHostnameDns, kDNS_A);
|
| + DnsQuery q2(kHostnameDns, kDNS_A);
|
| + scoped_ptr<DnsQuery> q3(q1.CloneWithNewId());
|
| + ids_are_random = q1.id () != q2.id() && q1.id() != q3->id();
|
| + if (ids_are_random)
|
| + break;
|
| + }
|
| + EXPECT_TRUE(ids_are_random);
|
| }
|
|
|
| } // namespace net
|
|
|