summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/samba/tests/blackbox/netads_dns.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/python/samba/tests/blackbox/netads_dns.py b/python/samba/tests/blackbox/netads_dns.py
new file mode 100644
index 00000000000..0a491504537
--- /dev/null
+++ b/python/samba/tests/blackbox/netads_dns.py
@@ -0,0 +1,81 @@
+# Blackbox tests for the "net ads dns async" commands
+#
+# Copyright (C) Samuel Cabrero <scabrero@samba.org> 2022
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import os
+import dns.resolver
+import re
+
+from samba.tests import BlackboxTestCase
+
+SERVER = os.environ["DC_SERVER"]
+REALM = os.environ["REALM"]
+COMMAND = "bin/net ads"
+
+class NetAdsDnsTests(BlackboxTestCase):
+
+ def setUp(self):
+ super(NetAdsDnsTests, self).setUp()
+ nameserver = os.environ["DC_SERVER_IP"]
+ self.resolver = dns.resolver.Resolver()
+ self.resolver.nameservers = [nameserver]
+
+ def parse_output(self, output):
+ v4 = []
+ v6 = []
+ for line in output.split("\n"):
+ m = re.search(r'^.*IPv4addr = (.*)$', line)
+ if m:
+ v4.append(m.group(1))
+ m = re.search(r'^.*IPv6addr = (.*)$', line)
+ if m:
+ v6.append(m.group(1))
+ return (v4, v6)
+
+ def test_async_dns(self):
+ host = "%s.%s" % (SERVER, REALM)
+
+ sync_v4 = []
+ answers = self.resolver.query(host, 'A')
+ for rdata in answers:
+ sync_v4.append(rdata.address)
+ self.assertGreaterEqual(len(sync_v4), 1)
+
+ sync_v6 = []
+ answers = self.resolver.query(host, 'AAAA')
+ for rdata in answers:
+ sync_v6.append(rdata.address)
+ self.assertGreaterEqual(len(sync_v6), 1)
+
+ async_v4 = []
+ async_v6 = []
+ argv = "%s dns async %s.%s " % (COMMAND, SERVER, REALM)
+ try:
+ out = self.check_output(argv)
+ (async_v4, async_v6) = self.parse_output(out.decode('utf-8'))
+ except samba.tests.BlackboxProcessError as e:
+ self.fail("Error calling [%s]: %s" % (argv, e))
+
+ self.assertGreaterEqual(len(async_v4), 1)
+ self.assertGreaterEqual(len(async_v6), 1)
+
+ sync_v4.sort()
+ async_v4.sort()
+ self.assertStringsEqual(' '.join(sync_v4), ' '.join(async_v4))
+
+ sync_v6.sort()
+ async_v6.sort()
+ self.assertStringsEqual(' '.join(sync_v6), ' '.join(async_v6))