From: Remi Gacogne Date: Mon, 29 Feb 2016 14:34:39 +0000 (+0100) Subject: dnsdist: Add a regression tests for skipCache from Lua X-Git-Tag: rec-4.0.0-alpha2~20^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=816dff3da8ca91726b94c806476a8708399b0c42;p=pdns dnsdist: Add a regression tests for skipCache from Lua --- diff --git a/regression-tests.dnsdist/test_Caching.py b/regression-tests.dnsdist/test_Caching.py index e9335c4ae..7adcd7089 100644 --- a/regression-tests.dnsdist/test_Caching.py +++ b/regression-tests.dnsdist/test_Caching.py @@ -9,6 +9,11 @@ class TestCaching(DNSDistTest): pc = newPacketCache(100, 86400, 1) getPool(""):setCache(pc) addAction(makeRule("nocache.cache.tests.powerdns.com."), SkipCacheAction()) + function skipViaLua(dq) + dq.skipCache = true + return DNSAction.None, "" + end + addLuaAction("nocachevialua.cache.tests.powerdns.com.", skipViaLua) newServer{address="127.0.0.1:%s"} """ @@ -107,6 +112,43 @@ class TestCaching(DNSDistTest): value = TestCaching._responsesCounter[key] self.assertEquals(value, numberOfQueries) + def testSkipCacheViaLua(self): + """ + Cache: SkipCache via Lua + + dnsdist is configured to not cache entries for nocachevialua.cache.tests.powerdns.com. + we are sending several requests and checking that the backend get them all. + """ + name = 'nocachevialua.cache.tests.powerdns.com.' + numberOfQueries = 10 + query = dns.message.make_query(name, 'AAAA', 'IN') + response = dns.message.make_response(query) + rrset = dns.rrset.from_text(name, + 3600, + dns.rdataclass.IN, + dns.rdatatype.AAAA, + '::1') + response.answer.append(rrset) + + for _ in range(numberOfQueries): + (receivedQuery, receivedResponse) = self.sendUDPQuery(query, response) + self.assertTrue(receivedQuery) + self.assertTrue(receivedResponse) + receivedQuery.id = query.id + self.assertEquals(query, receivedQuery) + self.assertEquals(receivedResponse, response) + + (receivedQuery, receivedResponse) = self.sendTCPQuery(query, response) + self.assertTrue(receivedQuery) + self.assertTrue(receivedResponse) + receivedQuery.id = query.id + self.assertEquals(query, receivedQuery) + self.assertEquals(receivedResponse, response) + + for key in TestCaching._responsesCounter: + value = TestCaching._responsesCounter[key] + self.assertEquals(value, numberOfQueries) + def testCacheExpiration(self): """ Cache: Cache expiration