summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Halley <halley@dnspython.org>2011-08-29 17:48:29 +0100
committerPetr Viktorin <pviktori@redhat.com>2015-05-27 13:15:12 +0200
commit1ff14621ef2cb1d525b910d89d07fff2d6728555 (patch)
tree7900b6dcbe5b162b1642343d175bc109b1e11734
parente043f0587eaea002436277dbb3e91d8a2c26addc (diff)
downloaddnspython-1ff14621ef2cb1d525b910d89d07fff2d6728555.tar.gz
add some LRUCache tests
-rw-r--r--tests/test_resolver.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/test_resolver.py b/tests/test_resolver.py
index 2f09463..f3c0d35 100644
--- a/tests/test_resolver.py
+++ b/tests/test_resolver.py
@@ -47,6 +47,10 @@ example. 1 IN A 10.0.0.1
;ADDITIONAL
"""
+class FakeAnswer(object):
+ def __init__(self, expiration):
+ self.expiration = expiration
+
class BaseResolverTests(object):
if sys.platform != 'win32':
@@ -102,6 +106,59 @@ class BaseResolverTests(object):
zname = dns.resolver.zone_for_name(name)
self.assertRaises(dns.resolver.NotAbsolute, bad)
+ def testLRUReplace(self):
+ cache = dns.resolver.LRUCache(4)
+ for i in range(0, 5):
+ name = dns.name.from_text('example%d.' % i)
+ answer = FakeAnswer(time.time() + 1)
+ cache.put((name, dns.rdatatype.A, dns.rdataclass.IN), answer)
+ for i in range(0, 5):
+ name = dns.name.from_text('example%d.' % i)
+ if i == 0:
+ self.assertTrue(cache.get((name, dns.rdatatype.A,
+ dns.rdataclass.IN))
+ is None)
+ else:
+ self.assertTrue(not cache.get((name, dns.rdatatype.A,
+ dns.rdataclass.IN))
+ is None)
+
+ def testLRUDoesLRU(self):
+ cache = dns.resolver.LRUCache(4)
+ for i in range(0, 4):
+ name = dns.name.from_text('example%d.' % i)
+ answer = FakeAnswer(time.time() + 1)
+ cache.put((name, dns.rdatatype.A, dns.rdataclass.IN), answer)
+ name = dns.name.from_text('example0.')
+ cache.get((name, dns.rdatatype.A, dns.rdataclass.IN))
+ # The LRU is now example1.
+ name = dns.name.from_text('example4.')
+ answer = FakeAnswer(time.time() + 1)
+ cache.put((name, dns.rdatatype.A, dns.rdataclass.IN), answer)
+ for i in range(0, 5):
+ name = dns.name.from_text('example%d.' % i)
+ if i == 1:
+ self.assertTrue(cache.get((name, dns.rdatatype.A,
+ dns.rdataclass.IN))
+ is None)
+ else:
+ self.assertTrue(not cache.get((name, dns.rdatatype.A,
+ dns.rdataclass.IN))
+ is None)
+
+ def testLRUExpiration(self):
+ cache = dns.resolver.LRUCache(4)
+ for i in range(0, 4):
+ name = dns.name.from_text('example%d.' % i)
+ answer = FakeAnswer(time.time() + 1)
+ cache.put((name, dns.rdatatype.A, dns.rdataclass.IN), answer)
+ time.sleep(2)
+ for i in range(0, 4):
+ name = dns.name.from_text('example%d.' % i)
+ self.assertTrue(cache.get((name, dns.rdatatype.A,
+ dns.rdataclass.IN))
+ is None)
+
class PollingMonkeyPatchMixin(object):
def setUp(self):
self.__native_polling_backend = dns.query._polling_backend