Skip to content

Commit ae1ce09

Browse files
authored
Move additional dns tests to test_dns (#561)
1 parent b5d848d commit ae1ce09

2 files changed

Lines changed: 68 additions & 68 deletions

File tree

tests/test_dns.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,74 @@ def test_numbers_questions(self):
416416
assert num_additionals == 0
417417

418418

419+
class TestDnsIncoming(unittest.TestCase):
420+
def test_incoming_exception_handling(self):
421+
generated = r.DNSOutgoing(0)
422+
packet = generated.packet()
423+
packet = packet[:8] + b'deadbeef' + packet[8:]
424+
parsed = r.DNSIncoming(packet)
425+
parsed = r.DNSIncoming(packet)
426+
assert parsed.valid is False
427+
428+
def test_incoming_unknown_type(self):
429+
generated = r.DNSOutgoing(0)
430+
answer = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'a')
431+
generated.add_additional_answer(answer)
432+
packet = generated.packet()
433+
parsed = r.DNSIncoming(packet)
434+
assert len(parsed.answers) == 0
435+
assert parsed.is_query() != parsed.is_response()
436+
437+
def test_incoming_ipv6(self):
438+
addr = "2606:2800:220:1:248:1893:25c8:1946" # example.com
439+
packed = socket.inet_pton(socket.AF_INET6, addr)
440+
generated = r.DNSOutgoing(0)
441+
answer = r.DNSAddress('domain', r._TYPE_AAAA, r._CLASS_IN | r._CLASS_UNIQUE, 1, packed)
442+
generated.add_additional_answer(answer)
443+
packet = generated.packet()
444+
parsed = r.DNSIncoming(packet)
445+
record = parsed.answers[0]
446+
assert isinstance(record, r.DNSAddress)
447+
assert record.address == packed
448+
449+
450+
class TestDNSCache(unittest.TestCase):
451+
def test_order(self):
452+
record1 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'a')
453+
record2 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'b')
454+
cache = r.DNSCache()
455+
cache.add(record1)
456+
cache.add(record2)
457+
entry = r.DNSEntry('a', r._TYPE_SOA, r._CLASS_IN)
458+
cached_record = cache.get(entry)
459+
assert cached_record == record2
460+
461+
def test_cache_empty_does_not_leak_memory_by_leaving_empty_list(self):
462+
record1 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'a')
463+
record2 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'b')
464+
cache = r.DNSCache()
465+
cache.add(record1)
466+
cache.add(record2)
467+
assert 'a' in cache.cache
468+
cache.remove(record1)
469+
cache.remove(record2)
470+
assert 'a' not in cache.cache
471+
472+
def test_cache_empty_multiple_calls_does_not_throw(self):
473+
record1 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'a')
474+
record2 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'b')
475+
cache = r.DNSCache()
476+
cache.add(record1)
477+
cache.add(record2)
478+
assert 'a' in cache.cache
479+
cache.remove(record1)
480+
cache.remove(record2)
481+
# Ensure multiple removes does not throw
482+
cache.remove(record1)
483+
cache.remove(record2)
484+
assert 'a' not in cache.cache
485+
486+
419487
def test_dns_compression_rollback_for_corruption():
420488
"""Verify rolling back does not lead to dns compression corruption."""
421489
out = r.DNSOutgoing(r._FLAGS_QR_RESPONSE | r._FLAGS_AA)

tests/test_init.py

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -247,37 +247,6 @@ def generate_host(zc, host_name, type_):
247247
zc.send(out)
248248

249249

250-
class TestDnsIncoming(unittest.TestCase):
251-
def test_incoming_exception_handling(self):
252-
generated = r.DNSOutgoing(0)
253-
packet = generated.packet()
254-
packet = packet[:8] + b'deadbeef' + packet[8:]
255-
parsed = r.DNSIncoming(packet)
256-
parsed = r.DNSIncoming(packet)
257-
assert parsed.valid is False
258-
259-
def test_incoming_unknown_type(self):
260-
generated = r.DNSOutgoing(0)
261-
answer = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'a')
262-
generated.add_additional_answer(answer)
263-
packet = generated.packet()
264-
parsed = r.DNSIncoming(packet)
265-
assert len(parsed.answers) == 0
266-
assert parsed.is_query() != parsed.is_response()
267-
268-
def test_incoming_ipv6(self):
269-
addr = "2606:2800:220:1:248:1893:25c8:1946" # example.com
270-
packed = socket.inet_pton(socket.AF_INET6, addr)
271-
generated = r.DNSOutgoing(0)
272-
answer = r.DNSAddress('domain', r._TYPE_AAAA, r._CLASS_IN | r._CLASS_UNIQUE, 1, packed)
273-
generated.add_additional_answer(answer)
274-
packet = generated.packet()
275-
parsed = r.DNSIncoming(packet)
276-
record = parsed.answers[0]
277-
assert isinstance(record, r.DNSAddress)
278-
assert record.address == packed
279-
280-
281250
class TestRegistrar(unittest.TestCase):
282251
def test_ttl(self):
283252

@@ -484,43 +453,6 @@ def test_lookups(self):
484453
assert registry.get_types() == [type_]
485454

486455

487-
class TestDNSCache(unittest.TestCase):
488-
def test_order(self):
489-
record1 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'a')
490-
record2 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'b')
491-
cache = r.DNSCache()
492-
cache.add(record1)
493-
cache.add(record2)
494-
entry = r.DNSEntry('a', r._TYPE_SOA, r._CLASS_IN)
495-
cached_record = cache.get(entry)
496-
assert cached_record == record2
497-
498-
def test_cache_empty_does_not_leak_memory_by_leaving_empty_list(self):
499-
record1 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'a')
500-
record2 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'b')
501-
cache = r.DNSCache()
502-
cache.add(record1)
503-
cache.add(record2)
504-
assert 'a' in cache.cache
505-
cache.remove(record1)
506-
cache.remove(record2)
507-
assert 'a' not in cache.cache
508-
509-
def test_cache_empty_multiple_calls_does_not_throw(self):
510-
record1 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'a')
511-
record2 = r.DNSAddress('a', r._TYPE_SOA, r._CLASS_IN, 1, b'b')
512-
cache = r.DNSCache()
513-
cache.add(record1)
514-
cache.add(record2)
515-
assert 'a' in cache.cache
516-
cache.remove(record1)
517-
cache.remove(record2)
518-
# Ensure multiple removes does not throw
519-
cache.remove(record1)
520-
cache.remove(record2)
521-
assert 'a' not in cache.cache
522-
523-
524456
class ServiceTypesQuery(unittest.TestCase):
525457
def test_integration_with_listener(self):
526458

0 commit comments

Comments
 (0)