| Index: net/dns/mdns_client_unittest.cc
|
| diff --git a/net/dns/mdns_client_unittest.cc b/net/dns/mdns_client_unittest.cc
|
| index 0186839da04aa80fefd9ab11c7b389adadeed51d..50c5fd541ca71f734205a64cf3b06fdc79985759 100644
|
| --- a/net/dns/mdns_client_unittest.cc
|
| +++ b/net/dns/mdns_client_unittest.cc
|
| @@ -28,328 +28,270 @@ namespace net {
|
|
|
| namespace {
|
|
|
| -const uint8 kSamplePacket1[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No questions (for simplicity)
|
| - 0x00, 0x02, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x00, // TTL (4 bytes) is 1 second;
|
| - 0x00, 0x01,
|
| - 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| - 0x05, 'h', 'e', 'l', 'l', 'o',
|
| - 0xc0, 0x0c,
|
| -
|
| - // Answer 2
|
| - 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
|
| - 0xc0, 0x14, // Pointer to "._tcp.local"
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
|
| - 0x24, 0x75,
|
| - 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| - 0x05, 'h', 'e', 'l', 'l', 'o',
|
| - 0xc0, 0x32
|
| -};
|
| +const uint8
|
| + kSamplePacket1
|
| + [] =
|
| + {
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p', 0x05, 'l', 'o',
|
| + 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x00, // TTL (4 bytes) is 1 second;
|
| + 0x00, 0x01, 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c,
|
| +
|
| + // Answer 2
|
| + 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e',
|
| + 'r', 0xc0, 0x14, // Pointer to "._tcp.local"
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
|
| + 0x24, 0x75, 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x32};
|
|
|
| const uint8 kCorruptedPacketBadQuestion[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x01, // One question
|
| - 0x00, 0x02, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Question is corrupted and cannot be read.
|
| - 0x99, 'h', 'e', 'l', 'l', 'o',
|
| - 0x00,
|
| - 0x00, 0x00,
|
| - 0x00, 0x00,
|
| -
|
| - // Answer 1
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x99, // RDLENGTH is impossible
|
| - 0x05, 'h', 'e', 'l', 'l', 'o',
|
| - 0xc0, 0x0c,
|
| -
|
| - // Answer 2
|
| - 0x08, '_', 'p', 'r', // Useless trailing data.
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x01, // One question
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Question is corrupted and cannot be read.
|
| + 0x99, 'h', 'e', 'l', 'l', 'o', 0x00, 0x00, 0x00, 0x00, 0x00,
|
| +
|
| + // Answer 1
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c',
|
| + 'p', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x99, // RDLENGTH is impossible
|
| + 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c,
|
| +
|
| + // Answer 2
|
| + 0x08, '_', 'p', 'r', // Useless trailing data.
|
| };
|
|
|
| const uint8 kCorruptedPacketUnsalvagable[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No questions (for simplicity)
|
| - 0x00, 0x02, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x99, // RDLENGTH is impossible
|
| - 0x05, 'h', 'e', 'l', 'l', 'o',
|
| - 0xc0, 0x0c,
|
| -
|
| - // Answer 2
|
| - 0x08, '_', 'p', 'r', // Useless trailing data.
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c',
|
| + 'p', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x99, // RDLENGTH is impossible
|
| + 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c,
|
| +
|
| + // Answer 2
|
| + 0x08, '_', 'p', 'r', // Useless trailing data.
|
| };
|
|
|
| const uint8 kCorruptedPacketDoubleRecord[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No questions (for simplicity)
|
| - 0x00, 0x02, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x06, 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x04, // RDLENGTH is 4
|
| - 0x05, 0x03,
|
| - 0xc0, 0x0c,
|
| -
|
| - // Answer 2 -- Same key
|
| - 0x06, 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x04, // RDLENGTH is 4
|
| - 0x02, 0x03,
|
| - 0x04, 0x05,
|
| -};
|
| -
|
| -const uint8 kCorruptedPacketSalvagable[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No questions (for simplicity)
|
| - 0x00, 0x02, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| - 0x99, 'h', 'e', 'l', 'l', 'o', // Bad RDATA format.
|
| - 0xc0, 0x0c,
|
| -
|
| - // Answer 2
|
| - 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
|
| - 0xc0, 0x14, // Pointer to "._tcp.local"
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
|
| - 0x24, 0x75,
|
| - 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| - 0x05, 'h', 'e', 'l', 'l', 'o',
|
| - 0xc0, 0x32
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x06, 'p', 'r', 'i', 'v', 'e', 't', 0x05,
|
| + 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x04, // RDLENGTH is 4
|
| + 0x05, 0x03, 0xc0, 0x0c,
|
| +
|
| + // Answer 2 -- Same key
|
| + 0x06, 'p', 'r', 'i', 'v', 'e', 't', 0x05,
|
| + 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x04, // RDLENGTH is 4
|
| + 0x02, 0x03, 0x04, 0x05,
|
| };
|
|
|
| -const uint8 kSamplePacket2[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No questions (for simplicity)
|
| - 0x00, 0x02, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| - 0x05, 'z', 'z', 'z', 'z', 'z',
|
| - 0xc0, 0x0c,
|
| -
|
| - // Answer 2
|
| - 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
|
| - 0xc0, 0x14, // Pointer to "._tcp.local"
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| - 0x05, 'z', 'z', 'z', 'z', 'z',
|
| - 0xc0, 0x32
|
| -};
|
| +const uint8
|
| + kCorruptedPacketSalvagable
|
| + [] =
|
| + {
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p', 0x05, 'l', 'o',
|
| + 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x99, 'h', 'e', 'l', 'l', 'o', // Bad RDATA format.
|
| + 0xc0, 0x0c,
|
| +
|
| + // Answer 2
|
| + 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e',
|
| + 'r', 0xc0, 0x14, // Pointer to "._tcp.local"
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
|
| + 0x24, 0x75, 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x32};
|
| +
|
| +const uint8
|
| + kSamplePacket2
|
| + [] =
|
| + {
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p', 0x05, 'l', 'o',
|
| + 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'z', 'z', 'z', 'z', 'z', 0xc0, 0x0c,
|
| +
|
| + // Answer 2
|
| + 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e',
|
| + 'r', 0xc0, 0x14, // Pointer to "._tcp.local"
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'z', 'z', 'z', 'z', 'z', 0xc0, 0x32};
|
|
|
| const uint8 kQueryPacketPrivet[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x00, 0x00, // No flags.
|
| - 0x00, 0x01, // One question.
|
| - 0x00, 0x00, // 0 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Question
|
| - // This part is echoed back from the respective query.
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x00, 0x00, // No flags.
|
| + 0x00, 0x01, // One question.
|
| + 0x00, 0x00, // 0 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Question
|
| + // This part is echoed back from the respective query.
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c',
|
| + 'p', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| };
|
|
|
| const uint8 kQueryPacketPrivetA[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x00, 0x00, // No flags.
|
| - 0x00, 0x01, // One question.
|
| - 0x00, 0x00, // 0 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Question
|
| - // This part is echoed back from the respective query.
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x00, 0x00, // No flags.
|
| + 0x00, 0x01, // One question.
|
| + 0x00, 0x00, // 0 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Question
|
| + // This part is echoed back from the respective query.
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't',
|
| + 'c', 'p', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| };
|
|
|
| const uint8 kSamplePacketAdditionalOnly[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No questions (for simplicity)
|
| - 0x00, 0x00, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x01, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| - 0x05, 'h', 'e', 'l', 'l', 'o',
|
| - 0xc0, 0x0c,
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x00, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x01, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c',
|
| + 'p', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c,
|
| };
|
|
|
| const uint8 kSamplePacketNsec[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No questions (for simplicity)
|
| - 0x00, 0x01, // 1 RR (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x2f, // TYPE is NSEC.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x06, // RDLENGTH is 6 bytes.
|
| - 0xc0, 0x0c,
|
| - 0x00, 0x02, 0x00, 0x08 // Only A record present
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x01, // 1 RR (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c',
|
| + 'p', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x2f, // TYPE is NSEC.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x06, // RDLENGTH is 6 bytes.
|
| + 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x08 // Only A record present
|
| };
|
|
|
| const uint8 kSamplePacketAPrivet[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No questions (for simplicity)
|
| - 0x00, 0x01, // 1 RR (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x00, // TTL (4 bytes) is 5 seconds
|
| - 0x00, 0x05,
|
| - 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| - 0xc0, 0x0c,
|
| - 0x00, 0x02,
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x01, // 1 RR (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't',
|
| + 'c', 'p', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x00, // TTL (4 bytes) is 5 seconds
|
| + 0x00, 0x05, 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| + 0xc0, 0x0c, 0x00, 0x02,
|
| };
|
|
|
| const uint8 kSamplePacketGoodbye[] = {
|
| - // Header
|
| - 0x00, 0x00, // ID is zeroed out
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No questions (for simplicity)
|
| - 0x00, 0x01, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - 0x04, '_', 't', 'c', 'p',
|
| - 0x05, 'l', 'o', 'c', 'a', 'l',
|
| - 0x00,
|
| - 0x00, 0x0c, // TYPE is PTR.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x00, // TTL (4 bytes) is zero;
|
| - 0x00, 0x00,
|
| - 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| - 0x05, 'z', 'z', 'z', 'z', 'z',
|
| - 0xc0, 0x0c,
|
| + // Header
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x01, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c',
|
| + 'p', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x00, // TTL (4 bytes) is zero;
|
| + 0x00, 0x00, 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'z', 'z', 'z', 'z', 'z', 0xc0, 0x0c,
|
| };
|
|
|
| std::string MakeString(const uint8* data, unsigned size) {
|
| @@ -363,9 +305,7 @@ class PtrRecordCopyContainer {
|
|
|
| bool is_set() const { return set_; }
|
|
|
| - void SaveWithDummyArg(int unused, const RecordParsed* value) {
|
| - Save(value);
|
| - }
|
| + void SaveWithDummyArg(int unused, const RecordParsed* value) { Save(value); }
|
|
|
| void Save(const RecordParsed* value) {
|
| set_ = true;
|
| @@ -397,12 +337,13 @@ class MDnsTest : public ::testing::Test {
|
| void RunFor(base::TimeDelta time_period);
|
| void Stop();
|
|
|
| - MOCK_METHOD2(MockableRecordCallback, void(MDnsTransaction::Result result,
|
| - const RecordParsed* record));
|
| -
|
| - MOCK_METHOD2(MockableRecordCallback2, void(MDnsTransaction::Result result,
|
| - const RecordParsed* record));
|
| + MOCK_METHOD2(MockableRecordCallback,
|
| + void(MDnsTransaction::Result result,
|
| + const RecordParsed* record));
|
|
|
| + MOCK_METHOD2(MockableRecordCallback2,
|
| + void(MDnsTransaction::Result result,
|
| + const RecordParsed* record));
|
|
|
| protected:
|
| void ExpectPacket(const uint8* packet, unsigned size);
|
| @@ -437,8 +378,7 @@ void MDnsTest::SimulatePacketReceive(const uint8* packet, unsigned size) {
|
| }
|
|
|
| void MDnsTest::ExpectPacket(const uint8* packet, unsigned size) {
|
| - EXPECT_CALL(socket_factory_, OnSendTo(MakeString(packet, size)))
|
| - .Times(2);
|
| + EXPECT_CALL(socket_factory_, OnSendTo(MakeString(packet, size))).Times(2);
|
| }
|
|
|
| void MDnsTest::DeleteTransaction() {
|
| @@ -451,8 +391,8 @@ void MDnsTest::DeleteBothListeners() {
|
| }
|
|
|
| void MDnsTest::RunFor(base::TimeDelta time_period) {
|
| - base::CancelableCallback<void()> callback(base::Bind(&MDnsTest::Stop,
|
| - base::Unretained(this)));
|
| + base::CancelableCallback<void()> callback(
|
| + base::Bind(&MDnsTest::Stop, base::Unretained(this)));
|
| base::MessageLoop::current()->PostDelayedTask(
|
| FROM_HERE, callback.callback(), time_period);
|
|
|
| @@ -471,12 +411,10 @@ TEST_F(MDnsTest, PassiveListeners) {
|
| PtrRecordCopyContainer record_privet;
|
| PtrRecordCopyContainer record_printer;
|
|
|
| - scoped_ptr<MDnsListener> listener_privet =
|
| - test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - &delegate_privet);
|
| - scoped_ptr<MDnsListener> listener_printer =
|
| - test_client_.CreateListener(dns_protocol::kTypePTR, "_printer._tcp.local",
|
| - &delegate_printer);
|
| + scoped_ptr<MDnsListener> listener_privet = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet);
|
| + scoped_ptr<MDnsListener> listener_printer = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_printer._tcp.local", &delegate_printer);
|
|
|
| ASSERT_TRUE(listener_privet->Start());
|
| ASSERT_TRUE(listener_printer->Start());
|
| @@ -485,16 +423,13 @@ TEST_F(MDnsTest, PassiveListeners) {
|
|
|
| EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_ADDED, _))
|
| .Times(Exactly(1))
|
| - .WillOnce(Invoke(
|
| - &record_privet,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg));
|
| + .WillOnce(
|
| + Invoke(&record_privet, &PtrRecordCopyContainer::SaveWithDummyArg));
|
|
|
| EXPECT_CALL(delegate_printer, OnRecordUpdate(MDnsListener::RECORD_ADDED, _))
|
| .Times(Exactly(1))
|
| - .WillOnce(Invoke(
|
| - &record_printer,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg));
|
| -
|
| + .WillOnce(
|
| + Invoke(&record_printer, &PtrRecordCopyContainer::SaveWithDummyArg));
|
|
|
| SimulatePacketReceive(kSamplePacket1, sizeof(kSamplePacket1));
|
| SimulatePacketReceive(kSamplePacket1, sizeof(kSamplePacket1));
|
| @@ -515,17 +450,15 @@ TEST_F(MDnsTest, PassiveListenersCacheCleanup) {
|
| PtrRecordCopyContainer record_privet;
|
| PtrRecordCopyContainer record_privet2;
|
|
|
| - scoped_ptr<MDnsListener> listener_privet =
|
| - test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - &delegate_privet);
|
| + scoped_ptr<MDnsListener> listener_privet = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet);
|
|
|
| ASSERT_TRUE(listener_privet->Start());
|
|
|
| EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_ADDED, _))
|
| .Times(Exactly(1))
|
| - .WillOnce(Invoke(
|
| - &record_privet,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg));
|
| + .WillOnce(
|
| + Invoke(&record_privet, &PtrRecordCopyContainer::SaveWithDummyArg));
|
|
|
| SimulatePacketReceive(kSamplePacket1, sizeof(kSamplePacket1));
|
|
|
| @@ -535,9 +468,9 @@ TEST_F(MDnsTest, PassiveListenersCacheCleanup) {
|
| // Expect record is removed when its TTL expires.
|
| EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_REMOVED, _))
|
| .Times(Exactly(1))
|
| - .WillOnce(DoAll(InvokeWithoutArgs(this, &MDnsTest::Stop),
|
| - Invoke(&record_privet2,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg)));
|
| + .WillOnce(DoAll(
|
| + InvokeWithoutArgs(this, &MDnsTest::Stop),
|
| + Invoke(&record_privet2, &PtrRecordCopyContainer::SaveWithDummyArg)));
|
|
|
| RunFor(base::TimeDelta::FromSeconds(record_privet.ttl() + 1));
|
|
|
| @@ -550,17 +483,15 @@ TEST_F(MDnsTest, MalformedPacket) {
|
|
|
| PtrRecordCopyContainer record_printer;
|
|
|
| - scoped_ptr<MDnsListener> listener_printer =
|
| - test_client_.CreateListener(dns_protocol::kTypePTR, "_printer._tcp.local",
|
| - &delegate_printer);
|
| + scoped_ptr<MDnsListener> listener_printer = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_printer._tcp.local", &delegate_printer);
|
|
|
| ASSERT_TRUE(listener_printer->Start());
|
|
|
| EXPECT_CALL(delegate_printer, OnRecordUpdate(MDnsListener::RECORD_ADDED, _))
|
| .Times(Exactly(1))
|
| - .WillOnce(Invoke(
|
| - &record_printer,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg));
|
| + .WillOnce(
|
| + Invoke(&record_printer, &PtrRecordCopyContainer::SaveWithDummyArg));
|
|
|
| // First, send unsalvagable packet to ensure we can deal with it.
|
| SimulatePacketReceive(kCorruptedPacketUnsalvagable,
|
| @@ -583,10 +514,10 @@ TEST_F(MDnsTest, TransactionWithEmptyCache) {
|
|
|
| scoped_ptr<MDnsTransaction> transaction_privet =
|
| test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE |
|
| - MDnsTransaction::SINGLE_RESULT,
|
| + dns_protocol::kTypePTR,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE |
|
| + MDnsTransaction::SINGLE_RESULT,
|
| base::Bind(&MDnsTest::MockableRecordCallback,
|
| base::Unretained(this)));
|
|
|
| @@ -596,8 +527,8 @@ TEST_F(MDnsTest, TransactionWithEmptyCache) {
|
|
|
| EXPECT_CALL(*this, MockableRecordCallback(MDnsTransaction::RESULT_RECORD, _))
|
| .Times(Exactly(1))
|
| - .WillOnce(Invoke(&record_privet,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg));
|
| + .WillOnce(
|
| + Invoke(&record_privet, &PtrRecordCopyContainer::SaveWithDummyArg));
|
|
|
| SimulatePacketReceive(kSamplePacket1, sizeof(kSamplePacket1));
|
|
|
| @@ -608,9 +539,9 @@ TEST_F(MDnsTest, TransactionWithEmptyCache) {
|
| TEST_F(MDnsTest, TransactionCacheOnlyNoResult) {
|
| scoped_ptr<MDnsTransaction> transaction_privet =
|
| test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_CACHE |
|
| - MDnsTransaction::SINGLE_RESULT,
|
| + dns_protocol::kTypePTR,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_CACHE | MDnsTransaction::SINGLE_RESULT,
|
| base::Bind(&MDnsTest::MockableRecordCallback,
|
| base::Unretained(this)));
|
|
|
| @@ -624,28 +555,25 @@ TEST_F(MDnsTest, TransactionCacheOnlyNoResult) {
|
| TEST_F(MDnsTest, TransactionWithCache) {
|
| // Listener to force the client to listen
|
| StrictMock<MockListenerDelegate> delegate_irrelevant;
|
| - scoped_ptr<MDnsListener> listener_irrelevant =
|
| - test_client_.CreateListener(dns_protocol::kTypeA,
|
| - "codereview.chromium.local",
|
| - &delegate_irrelevant);
|
| + scoped_ptr<MDnsListener> listener_irrelevant = test_client_.CreateListener(
|
| + dns_protocol::kTypeA, "codereview.chromium.local", &delegate_irrelevant);
|
|
|
| ASSERT_TRUE(listener_irrelevant->Start());
|
|
|
| SimulatePacketReceive(kSamplePacket1, sizeof(kSamplePacket1));
|
|
|
| -
|
| PtrRecordCopyContainer record_privet;
|
|
|
| EXPECT_CALL(*this, MockableRecordCallback(MDnsTransaction::RESULT_RECORD, _))
|
| - .WillOnce(Invoke(&record_privet,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg));
|
| + .WillOnce(
|
| + Invoke(&record_privet, &PtrRecordCopyContainer::SaveWithDummyArg));
|
|
|
| scoped_ptr<MDnsTransaction> transaction_privet =
|
| test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE |
|
| - MDnsTransaction::SINGLE_RESULT,
|
| + dns_protocol::kTypePTR,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE |
|
| + MDnsTransaction::SINGLE_RESULT,
|
| base::Bind(&MDnsTest::MockableRecordCallback,
|
| base::Unretained(this)));
|
|
|
| @@ -660,17 +588,15 @@ TEST_F(MDnsTest, AdditionalRecords) {
|
|
|
| PtrRecordCopyContainer record_privet;
|
|
|
| - scoped_ptr<MDnsListener> listener_privet =
|
| - test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - &delegate_privet);
|
| + scoped_ptr<MDnsListener> listener_privet = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet);
|
|
|
| ASSERT_TRUE(listener_privet->Start());
|
|
|
| EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_ADDED, _))
|
| .Times(Exactly(1))
|
| - .WillOnce(Invoke(
|
| - &record_privet,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg));
|
| + .WillOnce(
|
| + Invoke(&record_privet, &PtrRecordCopyContainer::SaveWithDummyArg));
|
|
|
| SimulatePacketReceive(kSamplePacketAdditionalOnly,
|
| sizeof(kSamplePacketAdditionalOnly));
|
| @@ -684,10 +610,10 @@ TEST_F(MDnsTest, TransactionTimeout) {
|
|
|
| scoped_ptr<MDnsTransaction> transaction_privet =
|
| test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE |
|
| - MDnsTransaction::SINGLE_RESULT,
|
| + dns_protocol::kTypePTR,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE |
|
| + MDnsTransaction::SINGLE_RESULT,
|
| base::Bind(&MDnsTest::MockableRecordCallback,
|
| base::Unretained(this)));
|
|
|
| @@ -706,9 +632,9 @@ TEST_F(MDnsTest, TransactionMultipleRecords) {
|
|
|
| scoped_ptr<MDnsTransaction> transaction_privet =
|
| test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE ,
|
| + dns_protocol::kTypePTR,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE,
|
| base::Bind(&MDnsTest::MockableRecordCallback,
|
| base::Unretained(this)));
|
|
|
| @@ -719,10 +645,10 @@ TEST_F(MDnsTest, TransactionMultipleRecords) {
|
|
|
| EXPECT_CALL(*this, MockableRecordCallback(MDnsTransaction::RESULT_RECORD, _))
|
| .Times(Exactly(2))
|
| - .WillOnce(Invoke(&record_privet,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg))
|
| - .WillOnce(Invoke(&record_privet2,
|
| - &PtrRecordCopyContainer::SaveWithDummyArg));
|
| + .WillOnce(
|
| + Invoke(&record_privet, &PtrRecordCopyContainer::SaveWithDummyArg))
|
| + .WillOnce(
|
| + Invoke(&record_privet2, &PtrRecordCopyContainer::SaveWithDummyArg));
|
|
|
| SimulatePacketReceive(kSamplePacket1, sizeof(kSamplePacket1));
|
| SimulatePacketReceive(kSamplePacket2, sizeof(kSamplePacket2));
|
| @@ -743,17 +669,16 @@ TEST_F(MDnsTest, TransactionReentrantDelete) {
|
| ExpectPacket(kQueryPacketPrivet, sizeof(kQueryPacketPrivet));
|
|
|
| transaction_ = test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE |
|
| - MDnsTransaction::SINGLE_RESULT,
|
| - base::Bind(&MDnsTest::MockableRecordCallback,
|
| - base::Unretained(this)));
|
| + dns_protocol::kTypePTR,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE |
|
| + MDnsTransaction::SINGLE_RESULT,
|
| + base::Bind(&MDnsTest::MockableRecordCallback, base::Unretained(this)));
|
|
|
| ASSERT_TRUE(transaction_->Start());
|
|
|
| - EXPECT_CALL(*this, MockableRecordCallback(MDnsTransaction::RESULT_NO_RESULTS,
|
| - NULL))
|
| + EXPECT_CALL(*this,
|
| + MockableRecordCallback(MDnsTransaction::RESULT_NO_RESULTS, NULL))
|
| .Times(Exactly(1))
|
| .WillOnce(DoAll(InvokeWithoutArgs(this, &MDnsTest::DeleteTransaction),
|
| InvokeWithoutArgs(this, &MDnsTest::Stop)));
|
| @@ -766,18 +691,16 @@ TEST_F(MDnsTest, TransactionReentrantDelete) {
|
| TEST_F(MDnsTest, TransactionReentrantDeleteFromCache) {
|
| StrictMock<MockListenerDelegate> delegate_irrelevant;
|
| scoped_ptr<MDnsListener> listener_irrelevant = test_client_.CreateListener(
|
| - dns_protocol::kTypeA, "codereview.chromium.local",
|
| - &delegate_irrelevant);
|
| + dns_protocol::kTypeA, "codereview.chromium.local", &delegate_irrelevant);
|
| ASSERT_TRUE(listener_irrelevant->Start());
|
|
|
| SimulatePacketReceive(kSamplePacket1, sizeof(kSamplePacket1));
|
|
|
| transaction_ = test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE,
|
| - base::Bind(&MDnsTest::MockableRecordCallback,
|
| - base::Unretained(this)));
|
| + dns_protocol::kTypePTR,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE,
|
| + base::Bind(&MDnsTest::MockableRecordCallback, base::Unretained(this)));
|
|
|
| EXPECT_CALL(*this, MockableRecordCallback(MDnsTransaction::RESULT_RECORD, _))
|
| .Times(Exactly(1))
|
| @@ -791,32 +714,26 @@ TEST_F(MDnsTest, TransactionReentrantDeleteFromCache) {
|
| TEST_F(MDnsTest, TransactionReentrantCacheLookupStart) {
|
| ExpectPacket(kQueryPacketPrivet, sizeof(kQueryPacketPrivet));
|
|
|
| - scoped_ptr<MDnsTransaction> transaction1 =
|
| - test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE |
|
| + scoped_ptr<MDnsTransaction> transaction1 = test_client_.CreateTransaction(
|
| + dns_protocol::kTypePTR,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE |
|
| MDnsTransaction::SINGLE_RESULT,
|
| - base::Bind(&MDnsTest::MockableRecordCallback,
|
| - base::Unretained(this)));
|
| + base::Bind(&MDnsTest::MockableRecordCallback, base::Unretained(this)));
|
|
|
| - scoped_ptr<MDnsTransaction> transaction2 =
|
| - test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_printer._tcp.local",
|
| - MDnsTransaction::QUERY_CACHE |
|
| - MDnsTransaction::SINGLE_RESULT,
|
| - base::Bind(&MDnsTest::MockableRecordCallback2,
|
| - base::Unretained(this)));
|
| + scoped_ptr<MDnsTransaction> transaction2 = test_client_.CreateTransaction(
|
| + dns_protocol::kTypePTR,
|
| + "_printer._tcp.local",
|
| + MDnsTransaction::QUERY_CACHE | MDnsTransaction::SINGLE_RESULT,
|
| + base::Bind(&MDnsTest::MockableRecordCallback2, base::Unretained(this)));
|
|
|
| - EXPECT_CALL(*this, MockableRecordCallback2(MDnsTransaction::RESULT_RECORD,
|
| - _))
|
| + EXPECT_CALL(*this, MockableRecordCallback2(MDnsTransaction::RESULT_RECORD, _))
|
| .Times(Exactly(1));
|
|
|
| - EXPECT_CALL(*this, MockableRecordCallback(MDnsTransaction::RESULT_RECORD,
|
| - _))
|
| + EXPECT_CALL(*this, MockableRecordCallback(MDnsTransaction::RESULT_RECORD, _))
|
| .Times(Exactly(1))
|
| - .WillOnce(IgnoreResult(InvokeWithoutArgs(transaction2.get(),
|
| - &MDnsTransaction::Start)));
|
| + .WillOnce(IgnoreResult(
|
| + InvokeWithoutArgs(transaction2.get(), &MDnsTransaction::Start)));
|
|
|
| ASSERT_TRUE(transaction1->Start());
|
|
|
| @@ -838,9 +755,8 @@ TEST_F(MDnsTest, GoodbyePacketNotification) {
|
| TEST_F(MDnsTest, GoodbyePacketRemoval) {
|
| StrictMock<MockListenerDelegate> delegate_privet;
|
|
|
| - scoped_ptr<MDnsListener> listener_privet =
|
| - test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - &delegate_privet);
|
| + scoped_ptr<MDnsListener> listener_privet = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet);
|
| ASSERT_TRUE(listener_privet->Start());
|
|
|
| EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_ADDED, _))
|
| @@ -863,13 +779,11 @@ TEST_F(MDnsTest, GoodbyePacketRemoval) {
|
| TEST_F(MDnsTest, ListenerReentrantDelete) {
|
| StrictMock<MockListenerDelegate> delegate_privet;
|
|
|
| - listener1_ = test_client_.CreateListener(dns_protocol::kTypePTR,
|
| - "_privet._tcp.local",
|
| - &delegate_privet);
|
| + listener1_ = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet);
|
|
|
| - listener2_ = test_client_.CreateListener(dns_protocol::kTypePTR,
|
| - "_privet._tcp.local",
|
| - &delegate_privet);
|
| + listener2_ = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet);
|
|
|
| ASSERT_TRUE(listener1_->Start());
|
|
|
| @@ -896,9 +810,8 @@ TEST_F(MDnsTest, DoubleRecordDisagreeing) {
|
| IPAddressNumber address;
|
| StrictMock<MockListenerDelegate> delegate_privet;
|
|
|
| - scoped_ptr<MDnsListener> listener_privet =
|
| - test_client_.CreateListener(dns_protocol::kTypeA, "privet.local",
|
| - &delegate_privet);
|
| + scoped_ptr<MDnsListener> listener_privet = test_client_.CreateListener(
|
| + dns_protocol::kTypeA, "privet.local", &delegate_privet);
|
|
|
| ASSERT_TRUE(listener_privet->Start());
|
|
|
| @@ -914,33 +827,30 @@ TEST_F(MDnsTest, DoubleRecordDisagreeing) {
|
|
|
| TEST_F(MDnsTest, NsecWithListener) {
|
| StrictMock<MockListenerDelegate> delegate_privet;
|
| - scoped_ptr<MDnsListener> listener_privet =
|
| - test_client_.CreateListener(dns_protocol::kTypeA, "_privet._tcp.local",
|
| - &delegate_privet);
|
| + scoped_ptr<MDnsListener> listener_privet = test_client_.CreateListener(
|
| + dns_protocol::kTypeA, "_privet._tcp.local", &delegate_privet);
|
|
|
| // Test to make sure nsec callback is NOT called for PTR
|
| // (which is marked as existing).
|
| StrictMock<MockListenerDelegate> delegate_privet2;
|
| - scoped_ptr<MDnsListener> listener_privet2 =
|
| - test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - &delegate_privet2);
|
| + scoped_ptr<MDnsListener> listener_privet2 = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet2);
|
|
|
| ASSERT_TRUE(listener_privet->Start());
|
|
|
| EXPECT_CALL(delegate_privet,
|
| OnNsecRecord("_privet._tcp.local", dns_protocol::kTypeA));
|
|
|
| - SimulatePacketReceive(kSamplePacketNsec,
|
| - sizeof(kSamplePacketNsec));
|
| + SimulatePacketReceive(kSamplePacketNsec, sizeof(kSamplePacketNsec));
|
| }
|
|
|
| TEST_F(MDnsTest, NsecWithTransactionFromNetwork) {
|
| scoped_ptr<MDnsTransaction> transaction_privet =
|
| test_client_.CreateTransaction(
|
| - dns_protocol::kTypeA, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE |
|
| - MDnsTransaction::SINGLE_RESULT,
|
| + dns_protocol::kTypeA,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE |
|
| + MDnsTransaction::SINGLE_RESULT,
|
| base::Bind(&MDnsTest::MockableRecordCallback,
|
| base::Unretained(this)));
|
|
|
| @@ -951,30 +861,27 @@ TEST_F(MDnsTest, NsecWithTransactionFromNetwork) {
|
| EXPECT_CALL(*this,
|
| MockableRecordCallback(MDnsTransaction::RESULT_NSEC, NULL));
|
|
|
| - SimulatePacketReceive(kSamplePacketNsec,
|
| - sizeof(kSamplePacketNsec));
|
| + SimulatePacketReceive(kSamplePacketNsec, sizeof(kSamplePacketNsec));
|
| }
|
|
|
| TEST_F(MDnsTest, NsecWithTransactionFromCache) {
|
| // Force mDNS to listen.
|
| StrictMock<MockListenerDelegate> delegate_irrelevant;
|
| - scoped_ptr<MDnsListener> listener_irrelevant =
|
| - test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - &delegate_irrelevant);
|
| + scoped_ptr<MDnsListener> listener_irrelevant = test_client_.CreateListener(
|
| + dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_irrelevant);
|
| listener_irrelevant->Start();
|
|
|
| - SimulatePacketReceive(kSamplePacketNsec,
|
| - sizeof(kSamplePacketNsec));
|
| + SimulatePacketReceive(kSamplePacketNsec, sizeof(kSamplePacketNsec));
|
|
|
| EXPECT_CALL(*this,
|
| MockableRecordCallback(MDnsTransaction::RESULT_NSEC, NULL));
|
|
|
| scoped_ptr<MDnsTransaction> transaction_privet_a =
|
| test_client_.CreateTransaction(
|
| - dns_protocol::kTypeA, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE |
|
| - MDnsTransaction::SINGLE_RESULT,
|
| + dns_protocol::kTypeA,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE |
|
| + MDnsTransaction::SINGLE_RESULT,
|
| base::Bind(&MDnsTest::MockableRecordCallback,
|
| base::Unretained(this)));
|
|
|
| @@ -985,10 +892,10 @@ TEST_F(MDnsTest, NsecWithTransactionFromCache) {
|
|
|
| scoped_ptr<MDnsTransaction> transaction_privet_ptr =
|
| test_client_.CreateTransaction(
|
| - dns_protocol::kTypePTR, "_privet._tcp.local",
|
| - MDnsTransaction::QUERY_NETWORK |
|
| - MDnsTransaction::QUERY_CACHE |
|
| - MDnsTransaction::SINGLE_RESULT,
|
| + dns_protocol::kTypePTR,
|
| + "_privet._tcp.local",
|
| + MDnsTransaction::QUERY_NETWORK | MDnsTransaction::QUERY_CACHE |
|
| + MDnsTransaction::SINGLE_RESULT,
|
| base::Bind(&MDnsTest::MockableRecordCallback,
|
| base::Unretained(this)));
|
|
|
| @@ -999,9 +906,8 @@ TEST_F(MDnsTest, NsecWithTransactionFromCache) {
|
|
|
| TEST_F(MDnsTest, NsecConflictRemoval) {
|
| StrictMock<MockListenerDelegate> delegate_privet;
|
| - scoped_ptr<MDnsListener> listener_privet =
|
| - test_client_.CreateListener(dns_protocol::kTypeA, "_privet._tcp.local",
|
| - &delegate_privet);
|
| + scoped_ptr<MDnsListener> listener_privet = test_client_.CreateListener(
|
| + dns_protocol::kTypeA, "_privet._tcp.local", &delegate_privet);
|
|
|
| ASSERT_TRUE(listener_privet->Start());
|
|
|
| @@ -1011,8 +917,7 @@ TEST_F(MDnsTest, NsecConflictRemoval) {
|
| EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_ADDED, _))
|
| .WillOnce(SaveArg<1>(&record1));
|
|
|
| - SimulatePacketReceive(kSamplePacketAPrivet,
|
| - sizeof(kSamplePacketAPrivet));
|
| + SimulatePacketReceive(kSamplePacketAPrivet, sizeof(kSamplePacketAPrivet));
|
|
|
| EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_REMOVED, _))
|
| .WillOnce(SaveArg<1>(&record2));
|
| @@ -1020,32 +925,28 @@ TEST_F(MDnsTest, NsecConflictRemoval) {
|
| EXPECT_CALL(delegate_privet,
|
| OnNsecRecord("_privet._tcp.local", dns_protocol::kTypeA));
|
|
|
| - SimulatePacketReceive(kSamplePacketNsec,
|
| - sizeof(kSamplePacketNsec));
|
| + SimulatePacketReceive(kSamplePacketNsec, sizeof(kSamplePacketNsec));
|
|
|
| EXPECT_EQ(record1, record2);
|
| }
|
|
|
| -
|
| TEST_F(MDnsTest, RefreshQuery) {
|
| StrictMock<MockListenerDelegate> delegate_privet;
|
| - scoped_ptr<MDnsListener> listener_privet =
|
| - test_client_.CreateListener(dns_protocol::kTypeA, "_privet._tcp.local",
|
| - &delegate_privet);
|
| + scoped_ptr<MDnsListener> listener_privet = test_client_.CreateListener(
|
| + dns_protocol::kTypeA, "_privet._tcp.local", &delegate_privet);
|
|
|
| listener_privet->SetActiveRefresh(true);
|
| ASSERT_TRUE(listener_privet->Start());
|
|
|
| EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_ADDED, _));
|
|
|
| - SimulatePacketReceive(kSamplePacketAPrivet,
|
| - sizeof(kSamplePacketAPrivet));
|
| + SimulatePacketReceive(kSamplePacketAPrivet, sizeof(kSamplePacketAPrivet));
|
|
|
| // Expecting 2 calls (one for ipv4 and one for ipv6) for each of the 2
|
| // scheduled refresh queries.
|
| - EXPECT_CALL(socket_factory_, OnSendTo(
|
| - MakeString(kQueryPacketPrivetA, sizeof(kQueryPacketPrivetA))))
|
| - .Times(4);
|
| + EXPECT_CALL(socket_factory_,
|
| + OnSendTo(MakeString(kQueryPacketPrivetA,
|
| + sizeof(kQueryPacketPrivetA)))).Times(4);
|
|
|
| EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_REMOVED, _));
|
|
|
| @@ -1062,9 +963,7 @@ class SimpleMockSocketFactory : public MDnsSocketFactory {
|
| sockets->swap(sockets_);
|
| }
|
|
|
| - void PushSocket(DatagramServerSocket* socket) {
|
| - sockets_.push_back(socket);
|
| - }
|
| + void PushSocket(DatagramServerSocket* socket) { sockets_.push_back(socket); }
|
|
|
| private:
|
| ScopedVector<DatagramServerSocket> sockets_;
|
| @@ -1083,8 +982,7 @@ class MockMDnsConnectionDelegate : public MDnsConnection::Delegate {
|
|
|
| class MDnsConnectionTest : public ::testing::Test {
|
| public:
|
| - MDnsConnectionTest() : connection_(&delegate_) {
|
| - }
|
| + MDnsConnectionTest() : connection_(&delegate_) {}
|
|
|
| protected:
|
| // Follow successful connection initialization.
|
| @@ -1095,9 +993,7 @@ class MDnsConnectionTest : public ::testing::Test {
|
| factory_.PushSocket(socket_ipv4_);
|
| }
|
|
|
| - bool InitConnection() {
|
| - return connection_.Init(&factory_);
|
| - }
|
| + bool InitConnection() { return connection_.Init(&factory_); }
|
|
|
| StrictMock<MockMDnsConnectionDelegate> delegate_;
|
|
|
| @@ -1109,15 +1005,15 @@ class MDnsConnectionTest : public ::testing::Test {
|
| };
|
|
|
| TEST_F(MDnsConnectionTest, ReceiveSynchronous) {
|
| - std::string sample_packet = MakeString(kSamplePacket1,
|
| - sizeof(kSamplePacket1));
|
| + std::string sample_packet =
|
| + MakeString(kSamplePacket1, sizeof(kSamplePacket1));
|
|
|
| socket_ipv6_->SetResponsePacket(sample_packet);
|
| EXPECT_CALL(*socket_ipv4_, RecvFrom(_, _, _, _))
|
| .WillOnce(Return(ERR_IO_PENDING));
|
| EXPECT_CALL(*socket_ipv6_, RecvFrom(_, _, _, _))
|
| .WillOnce(
|
| - Invoke(socket_ipv6_, &MockMDnsDatagramServerSocket::HandleRecvNow))
|
| + Invoke(socket_ipv6_, &MockMDnsDatagramServerSocket::HandleRecvNow))
|
| .WillOnce(Return(ERR_IO_PENDING));
|
|
|
| EXPECT_CALL(delegate_, HandlePacketInternal(sample_packet));
|
| @@ -1126,14 +1022,14 @@ TEST_F(MDnsConnectionTest, ReceiveSynchronous) {
|
| }
|
|
|
| TEST_F(MDnsConnectionTest, ReceiveAsynchronous) {
|
| - std::string sample_packet = MakeString(kSamplePacket1,
|
| - sizeof(kSamplePacket1));
|
| + std::string sample_packet =
|
| + MakeString(kSamplePacket1, sizeof(kSamplePacket1));
|
| socket_ipv6_->SetResponsePacket(sample_packet);
|
| EXPECT_CALL(*socket_ipv4_, RecvFrom(_, _, _, _))
|
| .WillOnce(Return(ERR_IO_PENDING));
|
| EXPECT_CALL(*socket_ipv6_, RecvFrom(_, _, _, _))
|
| .WillOnce(
|
| - Invoke(socket_ipv6_, &MockMDnsDatagramServerSocket::HandleRecvLater))
|
| + Invoke(socket_ipv6_, &MockMDnsDatagramServerSocket::HandleRecvLater))
|
| .WillOnce(Return(ERR_IO_PENDING));
|
|
|
| ASSERT_TRUE(InitConnection());
|
| @@ -1144,8 +1040,8 @@ TEST_F(MDnsConnectionTest, ReceiveAsynchronous) {
|
| }
|
|
|
| TEST_F(MDnsConnectionTest, Send) {
|
| - std::string sample_packet = MakeString(kSamplePacket1,
|
| - sizeof(kSamplePacket1));
|
| + std::string sample_packet =
|
| + MakeString(kSamplePacket1, sizeof(kSamplePacket1));
|
|
|
| scoped_refptr<IOBufferWithSize> buf(
|
| new IOBufferWithSize(sizeof kSamplePacket1));
|
| @@ -1172,7 +1068,7 @@ TEST_F(MDnsConnectionTest, Error) {
|
| EXPECT_CALL(*socket_ipv4_, RecvFrom(_, _, _, _))
|
| .WillOnce(Return(ERR_IO_PENDING));
|
| EXPECT_CALL(*socket_ipv6_, RecvFrom(_, _, _, _))
|
| - .WillOnce(DoAll(SaveArg<3>(&callback), Return(ERR_IO_PENDING)));
|
| + .WillOnce(DoAll(SaveArg<3>(&callback), Return(ERR_IO_PENDING)));
|
|
|
| ASSERT_TRUE(InitConnection());
|
|
|
|
|