The branch, master has been updated via cea3bdb wintest: enable dns forwarding for internal dns via 1318b5b wintest: get original nameserver for forwarding on a more general place via 5305570 wintest: extend get_is_dc function with additional expectations via 884e28f6 wintest: check netcats exitstatus instead of output via ed3ded1 wintest: set recursive queries for internal dns via b45d4be wintest: add option to select the dns backend via 09bee25 wintest: set nameserver on a more general place via 226dbc1 wintest: add option to use ntvfs instead of s3fs via 9fcd4a8 wintest: add working bbaumbach.conf file for use with VirtualBox from dd763d6 Fix bug #8974 - Kernel oplocks are broken when uid(file) != uid(process).
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit cea3bdb1031c95b874447676bcecfdd3b4731968 Author: Björn Baumbach <b...@sernet.de> Date: Thu Jun 21 13:45:18 2012 +0200 wintest: enable dns forwarding for internal dns Internal DNS will forward dns requests to the original nameserver (specified in resolv.conf). Signed-off-by: Kai Blin <k...@samba.org> Autobuild-User(master): Kai Blin <k...@samba.org> Autobuild-Date(master): Thu Jun 21 23:47:35 CEST 2012 on sn-devel-104 commit 1318b5bb2c6ebc2a810cb899a27daf5d90505559 Author: Björn Baumbach <b...@sernet.de> Date: Thu Jun 21 13:43:22 2012 +0200 wintest: get original nameserver for forwarding on a more general place Signed-off-by: Kai Blin <k...@samba.org> commit 5305570758e93cbe84f58161d71d65b219dde467 Author: Björn Baumbach <b...@sernet.de> Date: Tue Jun 5 13:57:59 2012 +0200 wintest: extend get_is_dc function with additional expectations Windows Server 2003 r2 answers "wintest2k3 is not a DC." Signed-off-by: Kai Blin <k...@samba.org> commit 884e28f66b01a8bf21f855f91875f22defa121ab Author: Björn Baumbach <b...@sernet.de> Date: Tue Jun 12 19:45:51 2012 +0200 wintest: check netcats exitstatus instead of output There are many netcat implementations with different output messages. Signed-off-by: Kai Blin <k...@samba.org> commit ed3ded11220d16c5ebfefd7e165eeb32e185f452 Author: Björn Baumbach <b...@sernet.de> Date: Tue Jun 5 10:35:19 2012 +0200 wintest: set recursive queries for internal dns Need dns recursive queries = yes, since host expects answers with RA-bit. Signed-off-by: Kai Blin <k...@samba.org> commit b45d4beca54428cb71994fed40d44c9ba06bb4d3 Author: Björn Baumbach <b...@sernet.de> Date: Thu May 31 14:15:47 2012 +0200 wintest: add option to select the dns backend This is an option to use the internal dns. Signed-off-by: Kai Blin <k...@samba.org> commit 09bee254f028368e59a462ab5d487546da6f940a Author: Björn Baumbach <b...@sernet.de> Date: Fri Jun 1 16:16:16 2012 +0200 wintest: set nameserver on a more general place Signed-off-by: Kai Blin <k...@samba.org> commit 226dbc116da7eb59fd59a9fb8a88c05a13b74e05 Author: Björn Baumbach <b...@sernet.de> Date: Thu May 31 11:13:59 2012 +0200 wintest: add option to use ntvfs instead of s3fs Signed-off-by: Kai Blin <k...@samba.org> commit 9fcd4a83a5c75d227846467756c64d2bf5adde9a Author: Björn Baumbach <b...@sernet.de> Date: Wed May 30 15:00:07 2012 +0200 wintest: add working bbaumbach.conf file for use with VirtualBox Signed-off-by: Kai Blin <k...@samba.org> ----------------------------------------------------------------------- Summary of changes: wintest/conf/bbaumbach.conf | 97 +++++++++++++++++++++++++++++++++++++++++++ wintest/test-s4-howto.py | 36 +++++++++++----- wintest/wintest.py | 46 ++++++++++++++++---- 3 files changed, 158 insertions(+), 21 deletions(-) create mode 100644 wintest/conf/bbaumbach.conf Changeset truncated at 500 lines: diff --git a/wintest/conf/bbaumbach.conf b/wintest/conf/bbaumbach.conf new file mode 100644 index 0000000..aaacd32 --- /dev/null +++ b/wintest/conf/bbaumbach.conf @@ -0,0 +1,97 @@ +# Björn Baumbachs wintest config file +# Using VirtualBox in headless mode. Since it's not possible to +# startup VMs in gui mode. + +# where the git checkout is +SOURCETREE : /home/bbaumba/src/git/samba + +# where to install Samba to +PREFIX : /smbTest/wintest + +# debug level which will be put in smb.conf +DEBUGLEVEL : 1 + +# commands to control VMs +VM_POWEROFF : su bbaumba -c "VBoxManage controlvm ${VMNAME} poweroff" +VM_RESTORE : su bbaumba -c "VBoxManage snapshot ${VMNAME} restore ${SNAPSHOT} && VBoxManage startvm ${VMNAME} --type headless" +VM_RESET : su bbaumba -c "VBoxManage controlvm ${VMNAME} reset" + +# interfaces to listen on +INTERFACE : wintest + +# this is an additional IP that will be used for named to listen +# on. It should not be the primary IP of the interface +INTERFACE_IP : 192.168.4.77 +INTERFACE_NET : 192.168.4.77/24 + +# how to run bind9 +BIND9 : /usr/sbin/named +NAMED_CHECKCONF : /usr/sbin/named-checkconf +RNDC : /usr/sbin/rndc +BIND_USER : named + +# provision information +REALM : WINTEST.EXAMPLE.ORG +LCREALM : wintest.example.org +DOMAIN : wintest +BASEDN : DC=wintest,DC=example,DC=org +PASSWORD1 : p@ssw0rd +PASSWORD2 : p@ssw0rd2 +PASSWORD3 : p@ssw0rd3 + +## a Windows7 VM +#WINDOWS7_HOSTNAME : wintest7 +#WINDOWS7_VM : wintest7 +#WINDOWS7_SNAPSHOT : ready +#WINDOWS7_USER : Administrator +#WINDOWS7_PASS : Passw0rd + +# a winxp VM - needs Windows XP Service Pack 2 Support Tools +WINXP_HOSTNAME : wintestxp +WINXP_VM : wintestxp +WINXP_SNAPSHOT : ready +WINXP_USER : Administrator +WINXP_PASS : geheim + +# Samba will join this w2k8r2 VM as a DC and then as a RODC +#W2K8R2A_HOSTNAME : wintest2k8r2 +#W2K8R2A_VM : wintest2k8r2 +#W2K8R2A_REALM : v2.tridgell.net +#W2K8R2A_DOMAIN : v2 +#W2K8R2A_PASS : Passw0rd +#W2K8R2A_SNAPSHOT : ready2 +#W2K8R2A_IP : 192.168.4.103 + + +## this w2k8r2 VM will become a DC in the samba domain +#W2K8R2B_HOSTNAME : w2k8r2b +#W2K8R2B_VM : w2k8r2b +#W2K8R2B_PASS : p@ssw0rd +#W2K8R2B_SNAPSHOT : howto-test2 +# +## this w2k8r2 VM will become a RODC in the samba domain +#W2K8R2C_HOSTNAME : w2k8r2c +#W2K8R2C_VM : w2k8r2c +#W2K8R2C_PASS : p@ssw0rd +#W2K8R2C_SNAPSHOT : howto-test2 + +# Samba will join this w2k3 VM as a DC +W2K3A_HOSTNAME : wintest2k3 +W2K3A_VM : wintest2k3 +W2K3A_REALM : vsofs3.com +W2K3A_DOMAIN : vsofs3 +W2K3A_PASS : Passw0rd +W2K3A_SNAPSHOT : ready +W2K3A_IP : 192.168.4.102 + +## this w2k3 VM will become a DC in the samba domain +#W2K3B_HOSTNAME : w2k3b +#W2K3B_VM : w2k3b +#W2K3B_PASS : penguin +#W2K3B_SNAPSHOT : howto-test +# +## this w2k8 VM will become a DC in the samba domain +#W2K8B_HOSTNAME : w2k8c +#W2K8B_VM : w2k8 +#W2K8B_PASS : p@ssw0rd +#W2K8B_SNAPSHOT : howto-test diff --git a/wintest/test-s4-howto.py b/wintest/test-s4-howto.py index 91ae0a2..fdbb181 100755 --- a/wintest/test-s4-howto.py +++ b/wintest/test-s4-howto.py @@ -35,7 +35,12 @@ def provision_s4(t, func_level="2008"): '--option=interfaces=${INTERFACE}', '--host-ip=${INTERFACE_IP}', '--option=bind interfaces only=yes', - '--option=rndc command=${RNDC} -c${PREFIX}/etc/rndc.conf'] + '--option=rndc command=${RNDC} -c${PREFIX}/etc/rndc.conf', + '${USE_NTVFS}', + '--dns-backend=${NAMESERVER_BACKEND}', + '${ALLOW_DNS_UPDATES}', + '${DNS_RECURSIVE_QUERIES}', + '${DNS_FORWARDER}'] if t.getvar('INTERFACE_IPV6'): provision.append('--host-ip6=${INTERFACE_IPV6}') t.run_cmd(provision) @@ -112,7 +117,8 @@ def test_dyndns(t): '''test that dynamic DNS is working''' t.chdir('${PREFIX}') t.run_cmd("sbin/samba_dnsupdate --fail-immediately") - t.rndc_cmd("flush") + if not t.getvar('NAMESERVER_BACKEND') == 'SAMBA_INTERNAL': + t.rndc_cmd("flush") def run_winjoin(t, vm): @@ -392,7 +398,8 @@ def prep_join_as_dc(t, vm): t.info("Starting VMs for joining ${WIN_VM} as a second DC using samba-tool domain join DC") t.chdir('${PREFIX}') t.run_cmd('killall -9 -q samba smbd nmbd winbindd', checkfail=False) - t.rndc_cmd('flush') + if not t.getvar('NAMESERVER_BACKEND') == 'SAMBA_INTERNAL': + t.rndc_cmd('flush') t.run_cmd("rm -rf etc/smb.conf private") child = t.open_telnet("${WIN_HOSTNAME}", "${WIN_DOMAIN}\\administrator", "${WIN_PASS}", set_time=True) t.get_ipconfig(child) @@ -558,10 +565,12 @@ def test_howto(t): # we don't need fsync safety in these tests t.putenv('TDB_NO_FSYNC', '1') - if not t.skip("configure_bind"): - t.configure_bind(kerberos_support=True, include='${PREFIX}/private/named.conf') - if not t.skip("stop_bind"): - t.stop_bind() + if not t.getvar('NAMESERVER_BACKEND') == 'SAMBA_INTERNAL': + if not t.skip("configure_bind"): + t.configure_bind(kerberos_support=True, include='${PREFIX}/private/named.conf') + if not t.skip("stop_bind"): + t.stop_bind() + if not t.skip("stop_vms"): t.stop_vms() @@ -580,10 +589,15 @@ def test_howto(t): start_s4(t) if not t.skip("smbclient"): test_smbclient(t) - if not t.skip("configure_bind2"): - t.configure_bind(kerberos_support=True, include='${PREFIX}/private/named.conf') - if not t.skip("start_bind"): - t.start_bind() + + t.set_nameserver(t.getvar('INTERFACE_IP')) + + if not t.getvar('NAMESERVER_BACKEND') == 'SAMBA_INTERNAL': + if not t.skip("configure_bind2"): + t.configure_bind(kerberos_support=True, include='${PREFIX}/private/named.conf') + if not t.skip("start_bind"): + t.start_bind() + if not t.skip("dns"): test_dns(t) if not t.skip("kerberos"): diff --git a/wintest/wintest.py b/wintest/wintest.py index 36711d9..6257fb4 100644 --- a/wintest/wintest.py +++ b/wintest/wintest.py @@ -325,11 +325,6 @@ nameserver %s def configure_bind(self, kerberos_support=False, include=None): self.chdir('${PREFIX}') - nameserver = self.get_nameserver() - if nameserver == self.getvar('INTERFACE_IP'): - raise RuntimeError("old /etc/resolv.conf must not contain %s as a nameserver, this will create loops with the generated dns configuration" % nameserver) - self.setvar('DNSSERVER', nameserver) - if self.getvar('INTERFACE_IPV6'): ipv6_listen = 'listen-on-v6 port 53 { ${INTERFACE_IPV6}; };' else: @@ -437,8 +432,6 @@ options { self.info("Restarting bind9") self.chdir('${PREFIX}') - self.set_nameserver(self.getvar('INTERFACE_IP')) - self.run_cmd("mkdir -p var/named/data") self.run_cmd("chown -R ${BIND_USER} var/named") @@ -494,9 +487,12 @@ options { while retries > 0: child = self.pexpect_spawn("nc -v -z -w 1 %s %u" % (hostname, port), crlf=False, timeout=1) - i = child.expect(['succeeded', 'failed', pexpect.EOF, pexpect.TIMEOUT]) + child.expect([pexpect.EOF, pexpect.TIMEOUT]) + child.close() + i = child.exitstatus if wait_for_fail: - if i > 0: + #wait for timeout or fail + if i == None or i > 0: return else: if i == 0: @@ -553,7 +549,7 @@ options { def get_is_dc(self, child): '''check if a windows machine is a domain controller''' child.sendline("dcdiag") - i = child.expect(["is not a Directory Server", + i = child.expect(["is not a [Directory Server|DC]", "is not recognized as an internal or external command", "Home Server = ", "passed test Replications"]) @@ -901,6 +897,14 @@ RebootOnCompletion=No self.parser.add_option("--prefix", type='string', default=None, help='override install prefix') self.parser.add_option("--sourcetree", type='string', default=None, help='override sourcetree location') self.parser.add_option("--nocleanup", action='store_true', default=False, help='disable cleanup code') + self.parser.add_option("--use-ntvfs", action='store_true', default=False, help='use NTVFS for the fileserver') + self.parser.add_option("--dns-backend", type="choice", + choices=["SAMBA_INTERNAL", "BIND9_FLATFILE", "BIND9_DLZ", "NONE"], + help="The DNS server backend. SAMBA_INTERNAL is the builtin name server, " \ + "BIND9_FLATFILE uses bind9 text database to store zone information, " \ + "BIND9_DLZ uses samba4 AD to store zone information (default), " \ + "NONE skips the DNS setup entirely (not recommended)", + default="BIND9_DLZ") self.opts, self.args = self.parser.parse_args() @@ -913,6 +917,11 @@ RebootOnCompletion=No self.load_config(self.opts.conf) + nameserver = self.get_nameserver() + if nameserver == self.getvar('INTERFACE_IP'): + raise RuntimeError("old /etc/resolv.conf must not contain %s as a nameserver, this will create loops with the generated dns configuration" % nameserver) + self.setvar('DNSSERVER', nameserver) + self.set_skip(self.opts.skip) self.set_vms(self.opts.vms) @@ -934,3 +943,20 @@ RebootOnCompletion=No self.info('cleaning') self.chdir('${SOURCETREE}/' + subdir) self.run_cmd('make clean') + + if self.opts.use_ntvfs: + self.setvar('USE_NTVFS', "--use-ntvfs") + else: + self.setvar('USE_NTVFS', "") + + self.setvar('NAMESERVER_BACKEND', self.opts.dns_backend) + + if self.opts.dns_backend == 'SAMBA_INTERNAL': + self.setvar('ALLOW_DNS_UPDATES', '--option=allow dns updates = True') + # we need recursive queries, since host expects answers with RA-bit + self.setvar('DNS_RECURSIVE_QUERIES', '--option=dns recursive queries = Yes') + self.setvar('DNS_FORWARDER', "--option=dns forwarder = %s" % nameserver) + else: + self.setvar('ALLOW_DNS_UPDATES', '') + self.setvar('DNS_RECURSIVE_QUERIES', '') + self.setvar('DNS_FORWARDER', '') -- Samba Shared Repository