| Index: net/dns/mdns_cache_unittest.cc
|
| diff --git a/net/dns/mdns_cache_unittest.cc b/net/dns/mdns_cache_unittest.cc
|
| index c12ad6b6ec3c830fbb88489aea4d8c41df3ea5f4..5bd0ce9f7bfed11081aa1ec0ec1ed24720e12b0d 100644
|
| --- a/net/dns/mdns_cache_unittest.cc
|
| +++ b/net/dns/mdns_cache_unittest.cc
|
| @@ -19,110 +19,82 @@ using ::testing::StrictMock;
|
| namespace net {
|
|
|
| static const uint8 kTestResponsesDifferentAnswers[] = {
|
| - // Answer 1
|
| - // ghs.l.google.com in DNS format.
|
| - 3, 'g', 'h', 's',
|
| - 1, 'l',
|
| - 6, 'g', 'o', 'o', 'g', 'l', 'e',
|
| - 3, 'c', 'o', 'm',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| - 0, 4, // RDLENGTH is 4 bytes.
|
| - 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| -
|
| - // Answer 2
|
| - // Pointer to answer 1
|
| - 0xc0, 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| - 0, 4, // RDLENGTH is 4 bytes.
|
| - 74, 125, 95, 122, // RDATA is the IP: 74.125.95.122
|
| + // Answer 1
|
| + // ghs.l.google.com in DNS format.
|
| + 3, 'g', 'h', 's', 1, 'l', 6, 'g', 'o', 'o',
|
| + 'g', 'l', 'e', 3, 'c', 'o', 'm', 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| + 0, 4, // RDLENGTH is 4 bytes.
|
| + 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| +
|
| + // Answer 2
|
| + // Pointer to answer 1
|
| + 0xc0, 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| + 0, 4, // RDLENGTH is 4 bytes.
|
| + 74, 125, 95, 122, // RDATA is the IP: 74.125.95.122
|
| };
|
|
|
| static const uint8 kTestResponsesSameAnswers[] = {
|
| - // Answer 1
|
| - // ghs.l.google.com in DNS format.
|
| - 3, 'g', 'h', 's',
|
| - 1, 'l',
|
| - 6, 'g', 'o', 'o', 'g', 'l', 'e',
|
| - 3, 'c', 'o', 'm',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| - 0, 4, // RDLENGTH is 4 bytes.
|
| - 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| -
|
| - // Answer 2
|
| - // Pointer to answer 1
|
| - 0xc0, 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0, 0, 0, 112, // TTL (4 bytes) is 112 seconds.
|
| - 0, 4, // RDLENGTH is 4 bytes.
|
| - 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| + // Answer 1
|
| + // ghs.l.google.com in DNS format.
|
| + 3, 'g', 'h', 's', 1, 'l', 6, 'g', 'o', 'o',
|
| + 'g', 'l', 'e', 3, 'c', 'o', 'm', 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| + 0, 4, // RDLENGTH is 4 bytes.
|
| + 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| +
|
| + // Answer 2
|
| + // Pointer to answer 1
|
| + 0xc0, 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0, 0, 0, 112, // TTL (4 bytes) is 112 seconds.
|
| + 0, 4, // RDLENGTH is 4 bytes.
|
| + 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| };
|
|
|
| static const uint8 kTestResponseTwoRecords[] = {
|
| - // Answer 1
|
| - // ghs.l.google.com in DNS format. (A)
|
| - 3, 'g', 'h', 's',
|
| - 1, 'l',
|
| - 6, 'g', 'o', 'o', 'g', 'l', 'e',
|
| - 3, 'c', 'o', 'm',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| - 0, 4, // RDLENGTH is 4 bytes.
|
| - 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| -
|
| - // Answer 2
|
| - // ghs.l.google.com in DNS format. (AAAA)
|
| - 3, 'g', 'h', 's',
|
| - 1, 'l',
|
| - 6, 'g', 'o', 'o', 'g', 'l', 'e',
|
| - 3, 'c', 'o', 'm',
|
| - 0x00,
|
| - 0x00, 0x1c, // TYPE is AAA.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| - 0, 16, // RDLENGTH is 16 bytes.
|
| - 0x4a, 0x7d, 0x4a, 0x7d,
|
| - 0x5f, 0x79, 0x5f, 0x79,
|
| - 0x5f, 0x79, 0x5f, 0x79,
|
| - 0x5f, 0x79, 0x5f, 0x79,
|
| + // Answer 1
|
| + // ghs.l.google.com in DNS format. (A)
|
| + 3, 'g', 'h', 's', 1, 'l', 6, 'g', 'o', 'o',
|
| + 'g', 'l', 'e', 3, 'c', 'o', 'm', 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| + 0, 4, // RDLENGTH is 4 bytes.
|
| + 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| +
|
| + // Answer 2
|
| + // ghs.l.google.com in DNS format. (AAAA)
|
| + 3, 'g', 'h', 's', 1, 'l', 6, 'g', 'o', 'o',
|
| + 'g', 'l', 'e', 3, 'c', 'o', 'm', 0x00, 0x00, 0x1c, // TYPE is AAA.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| + 0, 16, // RDLENGTH is 16 bytes.
|
| + 0x4a, 0x7d, 0x4a, 0x7d, 0x5f, 0x79, 0x5f, 0x79, 0x5f, 0x79,
|
| + 0x5f, 0x79, 0x5f, 0x79, 0x5f, 0x79,
|
| };
|
|
|
| static const uint8 kTestResponsesGoodbyePacket[] = {
|
| - // Answer 1
|
| - // ghs.l.google.com in DNS format. (Goodbye packet)
|
| - 3, 'g', 'h', 's',
|
| - 1, 'l',
|
| - 6, 'g', 'o', 'o', 'g', 'l', 'e',
|
| - 3, 'c', 'o', 'm',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0, 0, 0, 0, // TTL (4 bytes) is zero.
|
| - 0, 4, // RDLENGTH is 4 bytes.
|
| - 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| -
|
| - // Answer 2
|
| - // ghs.l.google.com in DNS format.
|
| - 3, 'g', 'h', 's',
|
| - 1, 'l',
|
| - 6, 'g', 'o', 'o', 'g', 'l', 'e',
|
| - 3, 'c', 'o', 'm',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| - 0, 4, // RDLENGTH is 4 bytes.
|
| - 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| + // Answer 1
|
| + // ghs.l.google.com in DNS format. (Goodbye packet)
|
| + 3, 'g', 'h', 's', 1, 'l', 6, 'g', 'o', 'o',
|
| + 'g', 'l', 'e', 3, 'c', 'o', 'm', 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0, 0, 0, 0, // TTL (4 bytes) is zero.
|
| + 0, 4, // RDLENGTH is 4 bytes.
|
| + 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| +
|
| + // Answer 2
|
| + // ghs.l.google.com in DNS format.
|
| + 3, 'g', 'h', 's', 1, 'l', 6, 'g', 'o', 'o',
|
| + 'g', 'l', 'e', 3, 'c', 'o', 'm', 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0, 0, 0, 53, // TTL (4 bytes) is 53 seconds.
|
| + 0, 4, // RDLENGTH is 4 bytes.
|
| + 74, 125, 95, 121, // RDATA is the IP: 74.125.95.121
|
| };
|
|
|
| class RecordRemovalMock {
|
| @@ -132,8 +104,7 @@ class RecordRemovalMock {
|
|
|
| class MDnsCacheTest : public ::testing::Test {
|
| public:
|
| - MDnsCacheTest()
|
| - : default_time_(base::Time::FromDoubleT(1234.0)) {}
|
| + MDnsCacheTest() : default_time_(base::Time::FromDoubleT(1234.0)) {}
|
| virtual ~MDnsCacheTest() {}
|
|
|
| protected:
|
| @@ -144,7 +115,8 @@ class MDnsCacheTest : public ::testing::Test {
|
|
|
| // Test a single insert, corresponding lookup, and unsuccessful lookup.
|
| TEST_F(MDnsCacheTest, InsertLookupSingle) {
|
| - DnsRecordParser parser(kT1ResponseDatagram, sizeof(kT1ResponseDatagram),
|
| + DnsRecordParser parser(kT1ResponseDatagram,
|
| + sizeof(kT1ResponseDatagram),
|
| sizeof(dns_protocol::Header));
|
| parser.SkipQuestion();
|
|
|
| @@ -159,8 +131,8 @@ TEST_F(MDnsCacheTest, InsertLookupSingle) {
|
|
|
| EXPECT_EQ(MDnsCache::RecordAdded, cache_.UpdateDnsRecord(record2.Pass()));
|
|
|
| - cache_.FindDnsRecords(ARecordRdata::kType, "ghs.l.google.com", &results,
|
| - default_time_);
|
| + cache_.FindDnsRecords(
|
| + ARecordRdata::kType, "ghs.l.google.com", &results, default_time_);
|
|
|
| EXPECT_EQ(1u, results.size());
|
| EXPECT_EQ(default_time_, results.front()->time_created());
|
| @@ -168,15 +140,16 @@ TEST_F(MDnsCacheTest, InsertLookupSingle) {
|
| EXPECT_EQ("ghs.l.google.com", results.front()->name());
|
|
|
| results.clear();
|
| - cache_.FindDnsRecords(PtrRecordRdata::kType, "ghs.l.google.com", &results,
|
| - default_time_);
|
| + cache_.FindDnsRecords(
|
| + PtrRecordRdata::kType, "ghs.l.google.com", &results, default_time_);
|
|
|
| EXPECT_EQ(0u, results.size());
|
| }
|
|
|
| // Test that records expire when their ttl has passed.
|
| TEST_F(MDnsCacheTest, Expiration) {
|
| - DnsRecordParser parser(kT1ResponseDatagram, sizeof(kT1ResponseDatagram),
|
| + DnsRecordParser parser(kT1ResponseDatagram,
|
| + sizeof(kT1ResponseDatagram),
|
| sizeof(dns_protocol::Header));
|
| parser.SkipQuestion();
|
| scoped_ptr<const RecordParsed> record1;
|
| @@ -195,30 +168,30 @@ TEST_F(MDnsCacheTest, Expiration) {
|
| EXPECT_EQ(MDnsCache::RecordAdded, cache_.UpdateDnsRecord(record1.Pass()));
|
| EXPECT_EQ(MDnsCache::RecordAdded, cache_.UpdateDnsRecord(record2.Pass()));
|
|
|
| - cache_.FindDnsRecords(ARecordRdata::kType, "ghs.l.google.com", &results,
|
| - default_time_);
|
| + cache_.FindDnsRecords(
|
| + ARecordRdata::kType, "ghs.l.google.com", &results, default_time_);
|
|
|
| EXPECT_EQ(1u, results.size());
|
|
|
| EXPECT_EQ(default_time_ + ttl2, cache_.next_expiration());
|
|
|
| -
|
| - cache_.FindDnsRecords(ARecordRdata::kType, "ghs.l.google.com", &results,
|
| - default_time_ + ttl2);
|
| + cache_.FindDnsRecords(
|
| + ARecordRdata::kType, "ghs.l.google.com", &results, default_time_ + ttl2);
|
|
|
| EXPECT_EQ(0u, results.size());
|
|
|
| EXPECT_CALL(record_removal_, OnRecordRemoved(record_to_be_deleted));
|
|
|
| - cache_.CleanupRecords(default_time_ + ttl2, base::Bind(
|
| - &RecordRemovalMock::OnRecordRemoved, base::Unretained(&record_removal_)));
|
| + cache_.CleanupRecords(default_time_ + ttl2,
|
| + base::Bind(&RecordRemovalMock::OnRecordRemoved,
|
| + base::Unretained(&record_removal_)));
|
|
|
| // To make sure that we've indeed removed them from the map, check no funny
|
| // business happens once they're deleted for good.
|
|
|
| EXPECT_EQ(default_time_ + ttl1, cache_.next_expiration());
|
| - cache_.FindDnsRecords(ARecordRdata::kType, "ghs.l.google.com", &results,
|
| - default_time_ + ttl2);
|
| + cache_.FindDnsRecords(
|
| + ARecordRdata::kType, "ghs.l.google.com", &results, default_time_ + ttl2);
|
|
|
| EXPECT_EQ(0u, results.size());
|
| }
|
| @@ -238,24 +211,22 @@ TEST_F(MDnsCacheTest, RecordChange) {
|
| record2 = RecordParsed::CreateFrom(&parser, default_time_);
|
|
|
| EXPECT_EQ(MDnsCache::RecordAdded, cache_.UpdateDnsRecord(record1.Pass()));
|
| - EXPECT_EQ(MDnsCache::RecordChanged,
|
| - cache_.UpdateDnsRecord(record2.Pass()));
|
| + EXPECT_EQ(MDnsCache::RecordChanged, cache_.UpdateDnsRecord(record2.Pass()));
|
| }
|
|
|
| // Test that a new record replacing an otherwise identical one already in the
|
| // cache causes the cache to output a "no change" event.
|
| TEST_F(MDnsCacheTest, RecordNoChange) {
|
| - DnsRecordParser parser(kTestResponsesSameAnswers,
|
| - sizeof(kTestResponsesSameAnswers),
|
| - 0);
|
| + DnsRecordParser parser(
|
| + kTestResponsesSameAnswers, sizeof(kTestResponsesSameAnswers), 0);
|
|
|
| scoped_ptr<const RecordParsed> record1;
|
| scoped_ptr<const RecordParsed> record2;
|
| std::vector<const RecordParsed*> results;
|
|
|
| record1 = RecordParsed::CreateFrom(&parser, default_time_);
|
| - record2 = RecordParsed::CreateFrom(&parser, default_time_ +
|
| - base::TimeDelta::FromSeconds(1));
|
| + record2 = RecordParsed::CreateFrom(
|
| + &parser, default_time_ + base::TimeDelta::FromSeconds(1));
|
|
|
| EXPECT_EQ(MDnsCache::RecordAdded, cache_.UpdateDnsRecord(record1.Pass()));
|
| EXPECT_EQ(MDnsCache::NoChange, cache_.UpdateDnsRecord(record2.Pass()));
|
| @@ -264,9 +235,8 @@ TEST_F(MDnsCacheTest, RecordNoChange) {
|
| // Test that the next expiration time of the cache is updated properly on record
|
| // insertion.
|
| TEST_F(MDnsCacheTest, RecordPreemptExpirationTime) {
|
| - DnsRecordParser parser(kTestResponsesSameAnswers,
|
| - sizeof(kTestResponsesSameAnswers),
|
| - 0);
|
| + DnsRecordParser parser(
|
| + kTestResponsesSameAnswers, sizeof(kTestResponsesSameAnswers), 0);
|
|
|
| scoped_ptr<const RecordParsed> record1;
|
| scoped_ptr<const RecordParsed> record2;
|
| @@ -288,9 +258,8 @@ TEST_F(MDnsCacheTest, RecordPreemptExpirationTime) {
|
| // records to the cache if they are not already there, and eventually removing
|
| // records from the cache if they are.
|
| TEST_F(MDnsCacheTest, GoodbyePacket) {
|
| - DnsRecordParser parser(kTestResponsesGoodbyePacket,
|
| - sizeof(kTestResponsesGoodbyePacket),
|
| - 0);
|
| + DnsRecordParser parser(
|
| + kTestResponsesGoodbyePacket, sizeof(kTestResponsesGoodbyePacket), 0);
|
|
|
| scoped_ptr<const RecordParsed> record_goodbye;
|
| scoped_ptr<const RecordParsed> record_hello;
|
| @@ -299,9 +268,8 @@ TEST_F(MDnsCacheTest, GoodbyePacket) {
|
|
|
| record_goodbye = RecordParsed::CreateFrom(&parser, default_time_);
|
| record_hello = RecordParsed::CreateFrom(&parser, default_time_);
|
| - parser = DnsRecordParser(kTestResponsesGoodbyePacket,
|
| - sizeof(kTestResponsesGoodbyePacket),
|
| - 0);
|
| + parser = DnsRecordParser(
|
| + kTestResponsesGoodbyePacket, sizeof(kTestResponsesGoodbyePacket), 0);
|
| record_goodbye2 = RecordParsed::CreateFrom(&parser, default_time_);
|
|
|
| base::TimeDelta ttl = base::TimeDelta::FromSeconds(record_hello->ttl());
|
| @@ -319,9 +287,8 @@ TEST_F(MDnsCacheTest, GoodbyePacket) {
|
| }
|
|
|
| TEST_F(MDnsCacheTest, AnyRRType) {
|
| - DnsRecordParser parser(kTestResponseTwoRecords,
|
| - sizeof(kTestResponseTwoRecords),
|
| - 0);
|
| + DnsRecordParser parser(
|
| + kTestResponseTwoRecords, sizeof(kTestResponseTwoRecords), 0);
|
|
|
| scoped_ptr<const RecordParsed> record1;
|
| scoped_ptr<const RecordParsed> record2;
|
| @@ -346,7 +313,8 @@ TEST_F(MDnsCacheTest, AnyRRType) {
|
| }
|
|
|
| TEST_F(MDnsCacheTest, RemoveRecord) {
|
| - DnsRecordParser parser(kT1ResponseDatagram, sizeof(kT1ResponseDatagram),
|
| + DnsRecordParser parser(kT1ResponseDatagram,
|
| + sizeof(kT1ResponseDatagram),
|
| sizeof(dns_protocol::Header));
|
| parser.SkipQuestion();
|
|
|
| @@ -356,8 +324,10 @@ TEST_F(MDnsCacheTest, RemoveRecord) {
|
| record1 = RecordParsed::CreateFrom(&parser, default_time_);
|
| EXPECT_EQ(MDnsCache::RecordAdded, cache_.UpdateDnsRecord(record1.Pass()));
|
|
|
| - cache_.FindDnsRecords(dns_protocol::kTypeCNAME, "codereview.chromium.org",
|
| - &results, default_time_);
|
| + cache_.FindDnsRecords(dns_protocol::kTypeCNAME,
|
| + "codereview.chromium.org",
|
| + &results,
|
| + default_time_);
|
|
|
| EXPECT_EQ(1u, results.size());
|
|
|
| @@ -366,8 +336,10 @@ TEST_F(MDnsCacheTest, RemoveRecord) {
|
|
|
| EXPECT_EQ(record_out.get(), results.front());
|
|
|
| - cache_.FindDnsRecords(dns_protocol::kTypeCNAME, "codereview.chromium.org",
|
| - &results, default_time_);
|
| + cache_.FindDnsRecords(dns_protocol::kTypeCNAME,
|
| + "codereview.chromium.org",
|
| + &results,
|
| + default_time_);
|
|
|
| EXPECT_EQ(0u, results.size());
|
| }
|
|
|