From 52f0dedc1a63c75f87adc0f70f10aae2b2bfaf72 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 6 Sep 2012 14:26:57 +1000 Subject: [PATCH] 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 --- source4/dns_server/wscript_build | 7 +++ source4/selftest/tests.py | 4 ++ source4/torture/dns/dlz_bind9.c | 91 +++++++++++++++++++++++++++++++ source4/torture/dns/wscript_build | 10 ++++ source4/torture/wscript_build | 1 + 5 files changed, 113 insertions(+) create mode 100644 source4/torture/dns/dlz_bind9.c create mode 100644 source4/torture/dns/wscript_build 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 . +*/ + +#include "includes.h" +#include "torture/smbtorture.h" +#include "dlz_minimal.h" +#include +#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', -- 2.34.1