]>
Commit | Line | Data |
---|---|---|
1cfaa5c0 RG |
1 | #!/usr/bin/env python |
2 | import unittest | |
3 | import os | |
4 | import subprocess | |
5 | import time | |
6 | ||
7 | class TestNetworkEndpointConfig(unittest.TestCase): | |
8 | ||
9 | def checkDNSDistExitCode(self, configTemplate, expectedCode, clientMode=False, verboseMode=False): | |
10 | conffile = 'configs/dnsdist_TestNetworkEndpointConfig.conf' | |
11 | with open(conffile, 'w') as conf: | |
12 | conf.write("-- Autogenerated by dnsdisttests.py\n") | |
13 | conf.write(configTemplate) | |
14 | ||
15 | dnsdistcmd = [os.environ['DNSDISTBIN'], '-C', conffile, '--check-config'] | |
16 | if clientMode: | |
17 | dnsdistcmd.append('-c') | |
18 | if verboseMode: | |
19 | dnsdistcmd.append('-v') | |
20 | ||
21 | output = None | |
22 | returnCode = None | |
23 | try: | |
24 | output = subprocess.check_output(dnsdistcmd, stderr=subprocess.STDOUT, close_fds=True) | |
25 | returnCode = 0 | |
26 | except subprocess.CalledProcessError as exc: | |
27 | output = exc.output | |
28 | returnCode = exc.returncode | |
29 | ||
30 | print(output) | |
31 | self.assertEqual(returnCode, expectedCode) | |
32 | ||
33 | def testNonExistingEndpoint(self): | |
34 | """ | |
35 | NetworkBindings: Non existing endpoint | |
36 | """ | |
37 | configTemplate = """ | |
38 | newServer{address="127.0.0.1:53"} | |
39 | local endpoint = newNetworkEndpoint('/this/path/does/not/exist') | |
40 | if endpoint == nil then | |
41 | os.exit(1) | |
42 | end | |
43 | if endpoint:isValid() then | |
44 | os.exit(2) | |
45 | end | |
46 | if endpoint:send('test') then | |
47 | os.exit(3) | |
48 | end | |
49 | os.exit(0) | |
50 | """ | |
51 | ||
52 | self.checkDNSDistExitCode(configTemplate, 0) | |
53 | ||
54 | def testClientMode(self): | |
55 | """ | |
56 | NetworkBindings: Client mode | |
57 | """ | |
58 | configTemplate = """ | |
59 | newServer{address="127.0.0.1:53"} | |
60 | local endpoint = newNetworkEndpoint('/this/path/does/not/exist') | |
61 | if endpoint == nil then | |
62 | os.exit(1) | |
63 | end | |
64 | if endpoint:isValid() then | |
65 | os.exit(2) | |
66 | end | |
67 | if endpoint:send('test') then | |
68 | os.exit(3) | |
69 | end | |
70 | local listener = newNetworkListener() | |
71 | if listener == nil then | |
72 | os.exit(4) | |
73 | end | |
74 | local endpointId = 1 | |
75 | local function callback(_, _, _) | |
76 | end | |
77 | if listener:addUnixListeningEndpoint('/path', 1, callback) then | |
78 | os.exit(5) | |
79 | end | |
80 | listener:start() | |
81 | os.exit(0) | |
82 | """ | |
83 | ||
84 | self.checkDNSDistExitCode(configTemplate, 0, clientMode=True) | |
85 | ||
86 | def testGetResolvers(self): | |
87 | """ | |
88 | NetworkBindings: getResolvers | |
89 | """ | |
90 | configTemplate = """ | |
91 | newServer{address="127.0.0.1:53"} | |
92 | local resolvers = getResolvers('resolv.conf.sample') | |
93 | if #resolvers ~= 2 then | |
94 | os.exit(1) | |
95 | end | |
96 | if resolvers[1] ~= '9.9.9.9' then | |
97 | os.exit(2) | |
98 | end | |
99 | if resolvers[2] ~= '2620:fe::fe' then | |
100 | os.exit(2) | |
101 | end | |
102 | os.exit(0) | |
103 | """ | |
104 | ||
105 | self.checkDNSDistExitCode(configTemplate, 0, clientMode=True) | |
106 | ||
107 | def testCommunication(self): | |
108 | """ | |
109 | NetworkBindings: Communication | |
110 | """ | |
111 | configTemplate = """ | |
112 | newServer{address="127.0.0.1:53"} | |
113 | local listener = newNetworkListener() | |
114 | if listener == nil then | |
115 | os.exit(1) | |
116 | end | |
117 | local endpointId = 1 | |
118 | ||
119 | local function callback(id, dgram, _) | |
120 | -- this function will never get called because we are holding the Lua lock | |
121 | end | |
122 | ||
123 | if not listener:addUnixListeningEndpoint('/tmp/dnsdist.network-bindings.test', 1, callback) then | |
124 | os.exit(4) | |
125 | end | |
126 | --listener:start() | |
127 | ||
128 | local endpoint = newNetworkEndpoint('/tmp/dnsdist.network-bindings.test') | |
129 | if endpoint == nil then | |
130 | os.exit(5) | |
131 | end | |
132 | if not endpoint:isValid() then | |
133 | os.exit(6) | |
134 | end | |
135 | if not endpoint:send('test') then | |
136 | os.exit(7) | |
137 | end | |
138 | os.exit(0) | |
139 | """ | |
140 | ||
141 | self.checkDNSDistExitCode(configTemplate, 0) |