Browse Source

(tests) Another test that bad queries won't break the server

main
Michal Charemza 5 years ago
parent
commit
567f334489
No known key found for this signature in database GPG Key ID: 4BBAF0F6B73C4363
1 changed files with 26 additions and 1 deletions
  1. +26
    -1
      test.py

+ 26
- 1
test.py View File

@@ -164,7 +164,7 @@ class TestProxy(unittest.TestCase):
self.assertEqual(cm.exception.args[0], 5)

@async_test
async def test_sending_bad_messages_not_affect_later_queries(self):
async def test_sending_bad_messages_not_affect_later_queries_a(self):
resolve, clear_cache = get_resolver(53)
self.add_async_cleanup(clear_cache)

@@ -188,6 +188,31 @@ class TestProxy(unittest.TestCase):
for response in responses:
self.assertEqual(type(response[0]), IPv4AddressExpiresAt)

@async_test
async def test_sending_bad_messages_not_affect_later_queries_b(self):
resolve, clear_cache = get_resolver(53)
self.add_async_cleanup(clear_cache)

start = DnsProxy(rules=((r'(^.*$)', r'\1'),))
stop = await start()
self.add_async_cleanup(stop)

response = await resolve('www.google.com', TYPES.A)
self.assertEqual(type(response[0]), IPv4AddressExpiresAt)

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for _ in range(0, 100000):
sock.sendto(b'not-a-valid-message', ('127.0.0.1', 53))
sock.close()

tasks = [
asyncio.create_task(resolve('www.google.com', TYPES.A))
for _ in range(0, 100000)
]
responses = await asyncio.gather(*tasks)
for response in responses:
self.assertEqual(type(response[0]), IPv4AddressExpiresAt)


def get_socket(port):
def _get_socket():


Loading…
Cancel
Save