The branch, master has been updated via 58c43f7 s4-wintest: reliability and usability improvements via 5b3981a s4-rodc: enable the DRS_GET_ALL_GROUP_MEMBERSHIP flag for RODC replication via 96e55cb s4-join: initially disable the machine account via 6a41afb s4-drs: fixed a typo via 5be4bfd s4-wintest: remove files in var/ when reprovisioning via 27c3bc8 s4-test: added --rebase and --clean options via 498f3c8 s4-test: use --fail-immediately for samba_dnsupdate testing via 3f952ab s4-spnupdate: only enable NDR print at log level above 5 via 1ce2230 s4-dns: added support for --fail-immediately for RODC netlogon dns updates from ab379dd s4-ldb.python: Use $SELFTEST_PREFIX/tmp as a temporary directory for testing
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 58c43f74b9bc2d660f58ccfe912bd3fff7cf672e Author: Andrew Tridgell <tri...@samba.org> Date: Thu Nov 18 23:56:22 2010 +1100 s4-wintest: reliability and usability improvements - allow for missing VMs - improved VM names - added join of w2k3 to Samba domain - cope with w2k3 dcpromo output - wait for port 139 not 23, to avoid windows telnet server bug Autobuild-User: Andrew Tridgell <tri...@samba.org> Autobuild-Date: Thu Nov 18 23:56:11 CET 2010 on sn-devel-104 commit 5b3981acb1e0e0ef6832c1147b1ec5b3659c1aa9 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Nov 18 18:48:42 2010 +1100 s4-rodc: enable the DRS_GET_ALL_GROUP_MEMBERSHIP flag for RODC replication see the description of this flag in [MS-DRSR] commit 96e55cb1324992607f0abac4b1d63db6beb5341b Author: Andrew Tridgell <tri...@samba.org> Date: Thu Nov 18 18:48:03 2010 +1100 s4-join: initially disable the machine account enable after a password is set commit 6a41afba68f5d787b337fac825365a35c01f844a Author: Andrew Tridgell <tri...@samba.org> Date: Thu Nov 18 18:47:21 2010 +1100 s4-drs: fixed a typo commit 5be4bfdc376ec518c2c1ec10946335f7741f847d Author: Andrew Tridgell <tri...@samba.org> Date: Thu Nov 18 18:47:07 2010 +1100 s4-wintest: remove files in var/ when reprovisioning commit 27c3bc8c013a75f6b437a2e47b10ec4fb6a2920b Author: Andrew Tridgell <tri...@samba.org> Date: Thu Nov 18 15:27:45 2010 +1100 s4-test: added --rebase and --clean options commit 498f3c8e5fb64e566ee783893c9e0663add3b25f Author: Andrew Tridgell <tri...@samba.org> Date: Thu Nov 18 15:27:20 2010 +1100 s4-test: use --fail-immediately for samba_dnsupdate testing commit 3f952aba2b98ef6dd00861c079b388c8f1652beb Author: Andrew Tridgell <tri...@samba.org> Date: Thu Nov 18 15:26:48 2010 +1100 s4-spnupdate: only enable NDR print at log level above 5 commit 1ce223017df86b35003a21198b388396e45a2f4d Author: Andrew Tridgell <tri...@samba.org> Date: Thu Nov 18 14:53:20 2010 +1100 s4-dns: added support for --fail-immediately for RODC netlogon dns updates ----------------------------------------------------------------------- Summary of changes: source4/dsdb/kcc/kcc_periodic.c | 1 + source4/scripting/bin/samba_dnsupdate | 7 + source4/scripting/bin/samba_spnupdate | 5 +- source4/scripting/devel/wintest/test-howto.py | 200 +++++++++++++++---------- source4/scripting/devel/wintest/tridge.conf | 63 ++++---- source4/scripting/devel/wintest/wintest.py | 38 ++++-- source4/scripting/python/samba/drs_utils.py | 2 +- source4/scripting/python/samba/join.py | 12 ++- 8 files changed, 205 insertions(+), 123 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/dsdb/kcc/kcc_periodic.c b/source4/dsdb/kcc/kcc_periodic.c index fa2b067..e0ac2c7 100644 --- a/source4/dsdb/kcc/kcc_periodic.c +++ b/source4/dsdb/kcc/kcc_periodic.c @@ -171,6 +171,7 @@ static uint32_t kccsrv_replica_flags(struct kccsrv_service *s) DRSUAPI_DRS_PER_SYNC | DRSUAPI_DRS_ADD_REF | DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING | + DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP | DRSUAPI_DRS_NONGC_RO_REP; } return DRSUAPI_DRS_INIT_SYNC | diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate index 1b5bc3e..8f04895 100755 --- a/source4/scripting/bin/samba_dnsupdate +++ b/source4/scripting/bin/samba_dnsupdate @@ -301,12 +301,19 @@ def rodc_dns_update(d, t): dns_names.names = [ name ] site_name = sub_vars['SITE'].decode('utf-8') + global error_count + try: ret_names = w.DsrUpdateReadOnlyServerDnsRecords(site_name, default_ttl, dns_names) if ret_names.names[0].status != 0: print("Failed to set DNS entry: %s (status %u)" % (d, ret_names.names[0].status)) + error_count = error_count + 1 except RuntimeError, reason: print("Error setting DNS entry of type %u: %s: %s" % (t, d, reason)) + error_count = error_count + 1 + + if error_count != 0 and opts.fail_immediately: + sys.exit(1) def call_rodc_update(d): diff --git a/source4/scripting/bin/samba_spnupdate b/source4/scripting/bin/samba_spnupdate index 7a4de7a..0dcc9fe 100755 --- a/source4/scripting/bin/samba_spnupdate +++ b/source4/scripting/bin/samba_spnupdate @@ -195,7 +195,10 @@ def call_rodc_update(d): sys.exit(1) server = cldap_ret.pdc_dns_name try: - drs = drsuapi.drsuapi('ncacn_ip_tcp:%s[seal,print]' % server, lp, creds) + binding_options = "seal" + if lp.get("log level") >= 5: + binding_options += ",print" + drs = drsuapi.drsuapi('ncacn_ip_tcp:%s[%s]' % (server, binding_options), lp, creds) (drs_handle, supported_extensions) = drs_utils.drs_DsBind(drs) except Exception, reason: print("Unable to connect to DC '%s' for domain '%s' : %s" % (server, domain, reason)) diff --git a/source4/scripting/devel/wintest/test-howto.py b/source4/scripting/devel/wintest/test-howto.py index c53fc51..402519f 100755 --- a/source4/scripting/devel/wintest/test-howto.py +++ b/source4/scripting/devel/wintest/test-howto.py @@ -26,12 +26,16 @@ def build_s4(t): t.run_cmd('rm -rf ${PREFIX}') t.run_cmd('make -j install') -def provision_s4(t): +def provision_s4(t, func_level="2008", interfaces=None): '''provision s4 as a DC''' t.info('Provisioning s4') t.chdir('${PREFIX}') t.run_cmd("rm -rf etc private") - t.run_cmd('sbin/provision --realm=${LCREALM} --domain=${DOMAIN} --adminpass=${PASSWORD1} --server-role="domain controller" --function-level=2008 -d${DEBUGLEVEL}') + t.run_cmd("find var -type f | xargs rm -f") + options=' --function-level=%s -d${DEBUGLEVEL}' % func_level + if interfaces: + options += ' --option=interfaces=%s' % interfaces + t.run_cmd('sbin/provision --realm=${LCREALM} --domain=${DOMAIN} --adminpass=${PASSWORD1} --server-role="domain controller"' + options) t.run_cmd('bin/samba-tool newuser testallowed ${PASSWORD1}') t.run_cmd('bin/samba-tool newuser testdenied ${PASSWORD1}') t.run_cmd('bin/samba-tool group addmembers "Allowed RODC Password Replication Group" testallowed') @@ -43,7 +47,7 @@ def start_s4(t, interfaces=None): t.run_cmd(['sbin/samba', '--option', 'panic action=gnome-terminal -e "gdb --pid %PID%"', '--option', 'interfaces=%s' % interfaces]) - t.port_wait("localhost", 445) + t.port_wait("localhost", 139) def test_smbclient(t): t.info('Testing smbclient') @@ -108,9 +112,9 @@ def test_kerberos(t): def test_dyndns(t): t.chdir('${PREFIX}') - t.cmd_contains("sbin/samba_dnsupdate", []) + t.run_cmd("sbin/samba_dnsupdate --fail-immediately") t.run_cmd("${RNDC} flush") - t.cmd_contains("sbin/samba_dnsupdate --verbose", ["No DNS updates needed"]) + def run_winjoin(t, vm): t.setwinvars(vm) @@ -119,26 +123,24 @@ def run_winjoin(t, vm): t.vm_poweroff("${WIN_VM}", checkfail=False) t.vm_restore("${WIN_VM}", "${WIN_SNAPSHOT}") t.ping_wait("${WIN_HOSTNAME}") - t.port_wait("${WIN_HOSTNAME}", 23) child = t.open_telnet("${WIN_HOSTNAME}", "${WIN_USER}", "${WIN_PASS}", set_time=True) child.sendline("netdom join ${WIN_HOSTNAME} /Domain:${LCREALM} /PasswordD:${PASSWORD1} /UserD:administrator") child.expect("The command completed successfully") child.sendline("shutdown /r -t 0") - t.port_wait("${WIN_HOSTNAME}", 23, wait_for_fail=True) - t.port_wait("${WIN_HOSTNAME}", 23) + t.port_wait("${WIN_HOSTNAME}", 139, wait_for_fail=True) + t.port_wait("${WIN_HOSTNAME}", 139) def test_winjoin(t, vm): t.setwinvars(vm) t.info("Checking the windows join is OK") t.chdir('${PREFIX}') - t.port_wait("${WIN_HOSTNAME}", 445) + t.port_wait("${WIN_HOSTNAME}", 139) t.retry_cmd('bin/smbclient -L ${WIN_HOSTNAME}.${LCREALM} -uadministra...@${lcrealm}%${password1}', ["C$", "IPC$", "Sharename"]) t.cmd_contains("host -t A ${WIN_HOSTNAME}.${LCREALM}.", ['has address']) t.cmd_contains('bin/smbclient -L ${WIN_HOSTNAME}.${LCREALM} -utestallo...@${lcrealm}%${password1}', ["C$", "IPC$", "Sharename"]) t.cmd_contains('bin/smbclient -L ${WIN_HOSTNAME}.${LCREALM} -k no -utestallo...@${lcrealm}%${password1}', ["C$", "IPC$", "Sharename"]) t.cmd_contains('bin/smbclient -L ${WIN_HOSTNAME}.${LCREALM} -k yes -utestallo...@${lcrealm}%${password1}', ["C$", "IPC$", "Sharename"]) - t.port_wait("${WIN_HOSTNAME}", 23) child = t.open_telnet("${WIN_HOSTNAME}", "${DOMAIN}\\administrator", "${PASSWORD1}") child.sendline("net use t: \\\\${HOSTNAME}.${LCREALM}\\test") child.expect("The command completed successfully") @@ -153,11 +155,12 @@ def run_dcpromo(t, vm): t.vm_poweroff("${WIN_VM}", checkfail=False) t.vm_restore("${WIN_VM}", "${WIN_SNAPSHOT}") t.ping_wait("${WIN_HOSTNAME}") - t.port_wait("${WIN_HOSTNAME}", 23) child = t.open_telnet("${WIN_HOSTNAME}", "administrator", "${WIN_PASS}") child.sendline("copy /Y con answers.txt") child.sendline(''' -[DCInstall] +[DCINSTALL] +RebootOnSuccess=Yes +RebootOnCompletion=Yes ReplicaOrNewDomain=Replica ReplicaDomainDNSName=${LCREALM} SiteName=Default-First-Site-Name @@ -171,28 +174,27 @@ DatabasePath="C:\Windows\NTDS" LogPath="C:\Windows\NTDS" SYSVOLPath="C:\Windows\SYSVOL" SafeModeAdminPassword=${PASSWORD1} -RebootOnCompletion=No ''') child.expect("copied.") + child.expect("C:") + child.expect("C:") child.sendline("dcpromo /answer:answers.txt") - i = child.expect(["You must restart this computer", "failed"], timeout=120) - if i != 0: + i = child.expect(["You must restart this computer", "failed", "C:"], timeout=120) + if i == 1: raise Exception("dcpromo failed") - child.sendline("shutdown -r -t 0") - t.port_wait("${WIN_HOSTNAME}", 23, wait_for_fail=True) - t.port_wait("${WIN_HOSTNAME}", 23) + t.port_wait("${WIN_HOSTNAME}", 139, wait_for_fail=True) + t.port_wait("${WIN_HOSTNAME}", 139) def test_dcpromo(t, vm): t.setwinvars(vm) t.info("Checking the dcpromo join is OK") t.chdir('${PREFIX}') - t.port_wait("${WIN_HOSTNAME}", 445) + t.port_wait("${WIN_HOSTNAME}", 139) t.retry_cmd('bin/smbclient -L ${WIN_HOSTNAME}.${LCREALM} -uadministra...@${lcrealm}%${password1}', ["C$", "IPC$", "Sharename"]) t.cmd_contains("host -t A ${WIN_HOSTNAME}.${LCREALM}.", ['has address']) t.cmd_contains('bin/smbclient -L ${WIN_HOSTNAME}.${LCREALM} -utestallo...@${lcrealm}%${password1}', ["C$", "IPC$", "Sharename"]) - t.port_wait("${WIN_HOSTNAME}", 23) t.cmd_contains("bin/samba-tool drs kcc ${HOSTNAME} -uadministra...@${lcrealm}%${password1}", ['Consistency check', 'successful']) t.cmd_contains("bin/samba-tool drs kcc ${WIN_HOSTNAME} -uadministra...@${lcrealm}%${password1}", ['Consistency check', 'successful']) @@ -205,28 +207,38 @@ def test_dcpromo(t, vm): t.cmd_contains("bin/samba-tool drs showrepl ${HOSTNAME} -k yes", [ "INBOUND NEIGHBORS", "${BASEDN}", - "Last attempt", "was successful", - "CN=Schema,CN=Configuration,${BASEDN}", - "Last attempt", "was successful", + "Last attempt .* was successful", + "CN=Configuration,${BASEDN}", + "Last attempt .* was successful", + "CN=Configuration,${BASEDN}", # cope with either order + "Last attempt .* was successful", "OUTBOUND NEIGHBORS", "${BASEDN}", "Last success", "CN=Configuration,${BASEDN}", + "Last success", + "CN=Configuration,${BASEDN}", "Last success"], - ordered=True) + ordered=True, + regex=True) t.cmd_contains("bin/samba-tool drs showrepl ${WIN_HOSTNAME} -k yes", [ "INBOUND NEIGHBORS", "${BASEDN}", - "Last attempt", "was successful", - "CN=Schema,CN=Configuration,${BASEDN}", - "Last attempt", "was successful", + "Last attempt .* was successful", + "CN=Configuration,${BASEDN}", + "Last attempt .* was successful", + "CN=Configuration,${BASEDN}", + "Last attempt .* was successful", "OUTBOUND NEIGHBORS", "${BASEDN}", "Last success", - "CN=Schema,CN=Configuration,${BASEDN}", + "CN=Configuration,${BASEDN}", + "Last success", + "CN=Configuration,${BASEDN}", "Last success" ], - ordered=True) + ordered=True, + regex=True) child = t.open_telnet("${WIN_HOSTNAME}", "${DOMAIN}\\administrator", "${PASSWORD1}", set_time=True) child.sendline("net use t: \\\\${HOSTNAME}.${LCREALM}\\test") @@ -278,7 +290,6 @@ def run_dcpromo_rodc(t, vm): t.vm_poweroff("${WIN_VM}", checkfail=False) t.vm_restore("${WIN_VM}", "${WIN_SNAPSHOT}") t.ping_wait("${WIN_HOSTNAME}") - t.port_wait("${WIN_HOSTNAME}", 23) child = t.open_telnet("${WIN_HOSTNAME}", "administrator", "${WIN_PASS}") child.sendline("copy /Y con answers.txt") child.sendline(''' @@ -312,8 +323,8 @@ RebootOnCompletion=No if i != 0: raise Exception("dcpromo failed") child.sendline("shutdown -r -t 0") - t.port_wait("${WIN_HOSTNAME}", 23, wait_for_fail=True) - t.port_wait("${WIN_HOSTNAME}", 23) + t.port_wait("${WIN_HOSTNAME}", 139, wait_for_fail=True) + t.port_wait("${WIN_HOSTNAME}", 139) @@ -321,11 +332,10 @@ def test_dcpromo_rodc(t, vm): t.setwinvars(vm) t.info("Checking the w2k8 RODC join is OK") t.chdir('${PREFIX}') - t.port_wait("${WIN_HOSTNAME}", 445) + t.port_wait("${WIN_HOSTNAME}", 139) t.retry_cmd('bin/smbclient -L ${WIN_HOSTNAME}.${LCREALM} -uadministra...@${lcrealm}%${password1}', ["C$", "IPC$", "Sharename"]) t.cmd_contains("host -t A ${WIN_HOSTNAME}.${LCREALM}.", ['has address']) t.cmd_contains('bin/smbclient -L ${WIN_HOSTNAME}.${LCREALM} -utestallo...@${lcrealm}%${password1}', ["C$", "IPC$", "Sharename"]) - t.port_wait("${WIN_HOSTNAME}", 23) child = t.open_telnet("${WIN_HOSTNAME}", "${DOMAIN}\\administrator", "${PASSWORD1}", set_time=True) child.sendline("net use t: \\\\${HOSTNAME}.${LCREALM}\\test") child.expect("The command completed successfully") @@ -336,7 +346,7 @@ def test_dcpromo_rodc(t, vm): child.expect("was successful") child.expect("CN=Configuration,${BASEDN}") child.expect("was successful") - child.expect("CN=Schema,CN=Configuration,${BASEDN}") + child.expect("CN=Configuration,${BASEDN}") child.expect("was successful") t.info("Checking if new users are available on windows") @@ -369,7 +379,6 @@ def test_join_as_dc(t, vm): t.chdir('${PREFIX}') t.retry_cmd('bin/smbclient -L ${HOSTNAME}.${WIN_REALM} -uadministra...@${win_realm}%${win_pass}', ["C$", "IPC$", "Sharename"]) t.cmd_contains("host -t A ${HOSTNAME}.${WIN_REALM}.", ['has address']) - t.port_wait("${WIN_HOSTNAME}", 23) child = t.open_telnet("${WIN_HOSTNAME}", "${WIN_DOMAIN}\\administrator", "${WIN_PASS}", set_time=True) t.info("Forcing kcc runs, and replication") @@ -390,7 +399,7 @@ def test_join_as_dc(t, vm): child.expect("was successful") child.expect("CN=Configuration,${WIN_BASEDN}") child.expect("was successful") - child.expect("CN=Schema,CN=Configuration,${WIN_BASEDN}") + child.expect("CN=Configuration,${WIN_BASEDN}") child.expect("was successful") t.info("Checking if new users propogate to windows") @@ -401,8 +410,8 @@ def test_join_as_dc(t, vm): t.info("Checking if new users on windows propogate to samba") child.sendline("net user test3 ${PASSWORD3} /add") child.expect("The command completed successfully") - t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest2%${PASSWORD2} -k no", ['Sharename', 'IPC']) - t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest2%${PASSWORD2} -k yes", ['Sharename', 'IPC']) + t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest3%${PASSWORD3} -k no", ['Sharename', 'IPC']) + t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest3%${PASSWORD3} -k yes", ['Sharename', 'IPC']) t.info("Checking propogation of user deletion") t.run_cmd('bin/samba-tool user delete test2 -uadministra...@${win_realm}%${win_pass}') @@ -410,9 +419,9 @@ def test_join_as_dc(t, vm): child.expect("The command completed successfully") t.retry_cmd("bin/smbclient -L ${WIN_HOSTNAME} -Utest2%${PASSWORD2} -k no", ['LOGON_FAILURE']) - t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest2%${PASSWORD2} -k no", ['LOGON_FAILURE']) + t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest3%${PASSWORD3} -k no", ['LOGON_FAILURE']) t.retry_cmd("bin/smbclient -L ${WIN_HOSTNAME} -Utest2%${PASSWORD2} -k yes", ['LOGON_FAILURE']) - t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest2%${PASSWORD2} -k yes", ['LOGON_FAILURE']) + t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest3%${PASSWORD3} -k yes", ['LOGON_FAILURE']) t.vm_poweroff("${WIN_VM}") @@ -437,10 +446,10 @@ def test_join_as_rodc(t, vm): t.chdir('${PREFIX}') t.retry_cmd('bin/smbclient -L ${HOSTNAME}.${WIN_REALM} -uadministra...@${win_realm}%${win_pass}', ["C$", "IPC$", "Sharename"]) t.cmd_contains("host -t A ${HOSTNAME}.${WIN_REALM}.", ['has address']) - t.port_wait("${WIN_HOSTNAME}", 23) child = t.open_telnet("${WIN_HOSTNAME}", "${WIN_DOMAIN}\\administrator", "${WIN_PASS}", set_time=True) t.info("Forcing kcc runs, and replication") + t.run_cmd('bin/samba-tool drs kcc ${HOSTNAME} -uadministra...@${win_realm}%${win_pass}') t.run_cmd('bin/samba-tool drs kcc ${WIN_HOSTNAME} -uadministra...@${win_realm}%${win_pass}') t.kinit("administra...@${win_realm}", "${WIN_PASS}") @@ -452,33 +461,36 @@ def test_join_as_rodc(t, vm): t.info("Checking if showrepl is happy") child.sendline("repadmin /showrepl") - child.expect("${WIN_BASEDN}") - child.expect("was successful") - child.expect("CN=Configuration,${WIN_BASEDN}") - child.expect("was successful") - child.expect("CN=Schema,CN=Configuration,${WIN_BASEDN}") - child.expect("was successful") + child.expect("DSA invocationID") + + t.cmd_contains("bin/samba-tool drs showrepl ${WIN_HOSTNAME}.${WIN_REALM} -k yes", + [ "INBOUND NEIGHBORS", + "OUTBOUND NEIGHBORS", + "${WIN_BASEDN}", + "Last attempt .* was successful", + "CN=Configuration,${WIN_BASEDN}", + "Last attempt .* was successful", + "CN=Configuration,${WIN_BASEDN}", + "Last attempt .* was successful" ], + ordered=True, + regex=True) t.info("Checking if new users on windows propogate to samba") child.sendline("net user test3 ${PASSWORD3} /add") child.expect("The command completed successfully") - t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest2%${PASSWORD2} -k no", ['Sharename', 'IPC']) - t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest2%${PASSWORD2} -k yes", ['Sharename', 'IPC']) + t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest3%${PASSWORD3} -k no", ['Sharename', 'IPC']) + t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest3%${PASSWORD3} -k yes", ['Sharename', 'IPC']) + # should this work? t.info("Checking if new users propogate to windows") - t.run_cmd('bin/samba-tool newuser test2 ${PASSWORD2}') - t.retry_cmd("bin/smbclient -L ${WIN_HOSTNAME} -Utest2%${PASSWORD2} -k no", ['Sharename', 'Remote IPC']) - t.retry_cmd("bin/smbclient -L ${WIN_HOSTNAME} -Utest2%${PASSWORD2} -k yes", ['Sharename', 'Remote IPC']) + t.cmd_contains('bin/samba-tool newuser test2 ${PASSWORD2}', ['No RID Set DN']) t.info("Checking propogation of user deletion") - t.run_cmd('bin/samba-tool user delete test2 -uadministra...@${win_realm}%${win_pass}') child.sendline("net user test3 /del") child.expect("The command completed successfully") - t.retry_cmd("bin/smbclient -L ${WIN_HOSTNAME} -Utest2%${PASSWORD2} -k no", ['LOGON_FAILURE']) - t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest2%${PASSWORD2} -k no", ['LOGON_FAILURE']) - t.retry_cmd("bin/smbclient -L ${WIN_HOSTNAME} -Utest2%${PASSWORD2} -k yes", ['LOGON_FAILURE']) - t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest2%${PASSWORD2} -k yes", ['LOGON_FAILURE']) + t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest3%${PASSWORD3} -k no", ['LOGON_FAILURE']) + t.retry_cmd("bin/smbclient -L ${HOSTNAME} -Utest3%${PASSWORD3} -k yes", ['LOGON_FAILURE']) t.vm_poweroff("${WIN_VM}") @@ -487,8 +499,12 @@ def test_howto(t): check_prerequesites(t) + # we don't need fsync safety in these tests + t.putenv('TDB_NO_FSYNC', '1') + if not t.skip("build"): build_s4(t) + if not t.skip("provision"): provision_s4(t) @@ -508,49 +524,63 @@ def test_howto(t): if not t.skip("dyndns"): test_dyndns(t) - if not t.skip("windows7"): + if t.have_var('WINDOWS7_VM') and not t.skip("windows7"): run_winjoin(t, "WINDOWS7") test_winjoin(t, "WINDOWS7") - if not t.skip("winxp"): + if t.have_var('WINXP_VM') and not t.skip("winxp"): run_winjoin(t, "WINXP") test_winjoin(t, "WINXP") - if not t.skip("dcpromo_rodc"): + if t.have_var('W2K8R2C_VM') and not t.skip("dcpromo_rodc"): t.info("Testing w2k8r2 RODC dcpromo") - run_dcpromo_rodc(t, "WINDOWS_DC2") - test_dcpromo_rodc(t, "WINDOWS_DC2") + run_dcpromo_rodc(t, "W2K8R2C") + test_dcpromo_rodc(t, "W2K8R2C") - if not t.skip("dcpromo_w2k8r2"): + if t.have_var('W2K8R2B_VM') and not t.skip("dcpromo_w2k8r2"): t.info("Testing w2k8r2 dcpromo") - run_dcpromo(t, "WINDOWS_DC1") - test_dcpromo(t, "WINDOWS_DC1") + run_dcpromo(t, "W2K8R2B") + test_dcpromo(t, "W2K8R2B") - if not t.skip("dcpromo_w2k8"): + if t.have_var('W2K8B_VM') and not t.skip("dcpromo_w2k8"): t.info("Testing w2k8 dcpromo") - run_dcpromo(t, "WINDOWS_DC5") - test_dcpromo(t, "WINDOWS_DC5") + run_dcpromo(t, "W2K8B") + test_dcpromo(t, "W2K8B") + + if t.have_var('W2K3B_VM') and not t.skip("dcpromo_w2k3"): + t.info("Testing w2k3 dcpromo") + t.info("Changing to 2003 functional level") + provision_s4(t, func_level='2003', interfaces='${INTERFACES}') + create_shares(t) + start_s4(t, interfaces='${INTERFACES}') + test_smbclient(t) + restart_bind(t) + test_dns(t) + test_kerberos(t) + test_dyndns(t) + run_dcpromo(t, "W2K3B") + test_dcpromo(t, "W2K3B") - if not t.skip("join_w2k8r2"): - join_as_dc(t, "WINDOWS_DC3") + if t.have_var('W2K8R2A_VM') and not t.skip("join_w2k8r2"): + join_as_dc(t, "W2K8R2A") create_shares(t) start_s4(t, interfaces='${INTERFACES}') test_dyndns(t) - test_join_as_dc(t, "WINDOWS_DC3") + test_join_as_dc(t, "W2K8R2A") - if not t.skip("join_rodc"): - join_as_rodc(t, "WINDOWS_DC3") + if t.have_var('W2K8R2A_VM') and not t.skip("join_rodc"): + join_as_rodc(t, "W2K8R2A") create_shares(t) start_s4(t, interfaces='${INTERFACES}') test_dyndns(t) - test_join_as_rodc(t, "WINDOWS_DC3") + test_join_as_rodc(t, "W2K8R2A") - if not t.skip("join_w2k3"): - join_as_dc(t, "WINDOWS_DC4") + if t.have_var('W2K3A_VM') and not t.skip("join_w2k3"): + join_as_dc(t, "W2K3A") create_shares(t) start_s4(t, interfaces='${INTERFACES}') test_dyndns(t) - test_join_as_dc(t, "WINDOWS_DC4") + test_join_as_dc(t, "W2K3A") t.info("Howto test: All OK") @@ -560,6 +590,8 @@ if __name__ == '__main__': parser.add_option("--conf", type='string', default='', help='config file') parser.add_option("--skip", type='string', default='', help='list of steps to skip (comma separated)') parser.add_option("--list", action='store_true', default=False, help='list the available steps') + parser.add_option("--rebase", action='store_true', default=False, help='do a git pull --rebase') + parser.add_option("--clean", action='store_true', default=False, help='clean the tree') opts, args = parser.parse_args() @@ -572,5 +604,15 @@ if __name__ == '__main__': t.set_skip(opts.skip) if opts.list: t.list_steps_mode() - test_howto(t) + if opts.rebase: + t.info('rebasing') + t.chdir('${SOURCETREE}') + t.run_cmd('git pull --rebase') + + if opts.clean: + t.info('rebasing') + t.chdir('${SOURCETREE}/source4') + t.run_cmd('rm -rf bin') + + test_howto(t) diff --git a/source4/scripting/devel/wintest/tridge.conf b/source4/scripting/devel/wintest/tridge.conf index 17045f6..1288526 100644 --- a/source4/scripting/devel/wintest/tridge.conf +++ b/source4/scripting/devel/wintest/tridge.conf @@ -43,39 +43,44 @@ WINXP_SNAPSHOT : howto-test WINXP_USER : tridge -- Samba Shared Repository