summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2012-09-06 14:26:57 +1000
committerAndrew Bartlett <abartlet@samba.org>2012-09-06 15:22:26 +1000
commit52f0dedc1a63c75f87adc0f70f10aae2b2bfaf72 (patch)
treea0ad48863e88a0fa757459f82c4ed6249f4e78b3 /source4
parent0d99175f2afb4badd61ba903f3752a0207b049a3 (diff)
downloadsamba-52f0dedc1a63c75f87adc0f70f10aae2b2bfaf72.tar.gz
selftest: Add tests for the dlz_bind9 module
This will help ensure that we do not break the fundemental loading etc. From here, it should be easy to extend this to more comprehensive tests. Andrew Bartlett
Diffstat (limited to 'source4')
-rw-r--r--source4/dns_server/wscript_build7
-rwxr-xr-xsource4/selftest/tests.py4
-rw-r--r--source4/torture/dns/dlz_bind9.c91
-rw-r--r--source4/torture/dns/wscript_build10
-rwxr-xr-xsource4/torture/wscript_build1
5 files changed, 113 insertions, 0 deletions
diff --git a/source4/dns_server/wscript_build b/source4/dns_server/wscript_build
index b8e2708ac87..280f8de49c0 100644
--- a/source4/dns_server/wscript_build
+++ b/source4/dns_server/wscript_build
@@ -30,3 +30,10 @@ bld.SAMBA_LIBRARY('dlz_bind9_9',
install_path='${MODULESDIR}/bind9',
deps='samba-hostconfig samdb-common gensec popt',
enabled=bld.AD_DC_BUILD_IS_ENABLED())
+
+bld.SAMBA_LIBRARY('dlz_bind9_for_torture',
+ source='dlz_bind9.c',
+ cflags='-DBIND_VERSION_9_8',
+ private_library=True,
+ deps='samba-hostconfig samdb-common gensec popt',
+ enabled=bld.AD_DC_BUILD_IS_ENABLED())
diff --git a/source4/selftest/tests.py b/source4/selftest/tests.py
index b9944cb799c..fd4b6692d28 100755
--- a/source4/selftest/tests.py
+++ b/source4/selftest/tests.py
@@ -296,6 +296,10 @@ for f in sorted(os.listdir(os.path.join(samba4srcdir, "../pidl/tests"))):
# DNS tests
planpythontestsuite("dc", "samba.tests.dns")
+# Local tests
+for t in smb4torture_testsuites("dlz_bind9."):
+ #The dlz_bind9 tests needs to look at the DNS database
+ plansmbtorturetestsuite(t, "dc:local", "ncalrpc:localhost")
planpythontestsuite("s3dc", "samba.tests.libsmb_samba_internal");
diff --git a/source4/torture/dns/dlz_bind9.c b/source4/torture/dns/dlz_bind9.c
new file mode 100644
index 00000000000..24482b6171b
--- /dev/null
+++ b/source4/torture/dns/dlz_bind9.c
@@ -0,0 +1,91 @@
+/*
+ Unix SMB/CIFS implementation.
+ SMB torture tester
+ Copyright (C) Andrew Bartlett 2012
+
+ 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/>.
+*/
+
+#include "includes.h"
+#include "torture/smbtorture.h"
+#include "dlz_minimal.h"
+#include <talloc.h>
+#include "lib/param/param.h"
+
+struct torture_context *tctx_static;
+
+static void dlz_bind9_log_wrapper(int level, const char *fmt, ...)
+{
+ va_list ap;
+ char *msg;
+ va_start(ap, fmt);
+ msg = talloc_vasprintf(NULL, fmt, ap);
+ torture_comment(tctx_static, "%s\n", msg);
+ TALLOC_FREE(msg);
+ va_end(ap);
+}
+
+static bool test_dlz_bind9_version(struct torture_context *tctx)
+{
+ unsigned int flags = 0;
+ torture_assert_int_equal(tctx, dlz_version(&flags),
+ DLZ_DLOPEN_VERSION, "got wrong DLZ version");
+ return true;
+}
+
+static bool test_dlz_bind9_create(struct torture_context *tctx)
+{
+ void *dbdata;
+ const char *argv[] = {
+ "samba_dlz",
+ "-H",
+ lpcfg_private_path(tctx, tctx->lp_ctx, "dns/sam.ldb"),
+ NULL
+ };
+ tctx_static = tctx;
+ torture_assert_int_equal(tctx, dlz_create("samba_dlz", 3, argv, &dbdata,
+ "log", dlz_bind9_log_wrapper, NULL), ISC_R_SUCCESS,
+ "Failed to create samba_dlz");
+
+ dlz_destroy(dbdata);
+
+ return true;
+}
+
+static struct torture_suite *dlz_bind9_suite(TALLOC_CTX *ctx)
+{
+ struct torture_suite *suite = torture_suite_create(ctx, "dlz_bind9");
+
+ suite->description = talloc_strdup(suite,
+ "Tests for the BIND 9 DLZ module");
+ torture_suite_add_simple_test(suite, "version", test_dlz_bind9_version);
+ torture_suite_add_simple_test(suite, "create", test_dlz_bind9_create);
+ return suite;
+}
+
+/**
+ * DNS torture module initialization
+ */
+NTSTATUS torture_dns_init(void)
+{
+ struct torture_suite *suite;
+ TALLOC_CTX *mem_ctx = talloc_autofree_context();
+
+ /* register DNS related test cases */
+ suite = dlz_bind9_suite(mem_ctx);
+ if (!suite) return NT_STATUS_NO_MEMORY;
+ torture_register_suite(suite);
+
+ return NT_STATUS_OK;
+}
diff --git a/source4/torture/dns/wscript_build b/source4/torture/dns/wscript_build
new file mode 100644
index 00000000000..83df02fec42
--- /dev/null
+++ b/source4/torture/dns/wscript_build
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+
+bld.SAMBA_MODULE('TORTURE_DNS',
+ source='dlz_bind9.c',
+ subsystem='smbtorture',
+ init_function='torture_dns_init',
+ cflags='-DBIND_VERSION_9_8',
+ deps='torture talloc torturemain dlz_bind9_for_torture',
+ internal_module=True
+ )
diff --git a/source4/torture/wscript_build b/source4/torture/wscript_build
index fbed3941c8c..a45bf3844ce 100755
--- a/source4/torture/wscript_build
+++ b/source4/torture/wscript_build
@@ -57,6 +57,7 @@ bld.SAMBA_MODULE('torture_rpc',
)
bld.RECURSE('drs')
+bld.RECURSE('dns')
bld.SAMBA_MODULE('TORTURE_RAP',
source='rap/rap.c rap/rpc.c rap/printing.c rap/sam.c',