]>
git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.dnsdist/test_DynBlocksEBPF.py
5 from dnsdisttests
import DNSDistTest
6 from dnsdistDynBlockTests
import DynBlocksTest
8 class EBPFTest(object):
11 @unittest.skipUnless('ENABLE_SUDO_TESTS' in os
.environ
, "sudo is not available")
12 class TestDynBlockEBPFQPS(DynBlocksTest
):
14 _config_template
= """
15 bpf = newBPFFilter({ipv4MaxItems=10, ipv6MaxItems=10, qnamesMaxItems=10})
16 setDefaultBPFFilter(bpf)
17 local dbr = dynBlockRulesGroup()
18 dbr:setQueryRate(%d, %d, "Exceeded query rate", %d)
19 function maintenance()
23 -- not going to wait 60s!
24 setDynBlocksPurgeInterval(1)
26 -- exercise the manual blocking methods
27 bpf:block(newCA("2001:DB8::42"))
28 bpf:blockQName(newDNSName("powerdns.com."), 255)
30 bpf:unblock(newCA("2001:DB8::42"))
31 bpf:unblockQName(newDNSName("powerdns.com."), 255)
33 newServer{address="127.0.0.1:%s"}
34 webserver("127.0.0.1:%s")
35 setWebserverConfig({password="%s", apiKey="%s"})
37 _config_params
= ['_dynBlockQPS', '_dynBlockPeriod', '_dynBlockDuration', '_testServerPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed']
40 def testDynBlocksQRate(self
):
44 name
= 'qrate.dynblocks.tests.powerdns.com.'
45 self
.doTestQRate(name
, ebpf
=True)