--- /dev/null
+#!/bin/sh
+
+# tests that should pass against a w2k3 DC, as administrator
+
+# add tests to this list as they start passing, so we test
+# that they stay passing
+ncacn_np_tests="RPC-DSSETUP RPC-EPMAPPER RPC-SAMR RPC-WKSSVC RPC-SRVSVC RPC-EVENTLOG RPC-NETLOGON"
+ncacn_ip_tcp_tests="RPC-EPMAPPER RPC-SAMR RPC-NETLOGON"
+
+if [ $# -lt 4 ]; then
+cat <<EOF
+Usage: test_w2k3.sh SERVER USERNAME PASSWORD DOMAIN
+EOF
+exit 1;
+fi
+
+server="$1"
+username="$2"
+password="$3"
+domain="$4"
+shift 4
+
+testit() {
+ trap "rm -f test.$$" EXIT
+ cmdline="$*"
+ if ! $cmdline > test.$$ 2>&1; then
+ cat test.$$;
+ rm -f test.$$;
+ echo "TEST FAILED - $cmdline";
+ exit 1;
+ fi
+ rm -f test.$$;
+}
+
+for transport in ncacn_ip_tcp ncacn_np; do
+ for bindoptions in connect sign seal validate bigendian; do
+ case $transport in
+ ncacn_np) tests=$ncacn_np_tests ;;
+ ncacn_ip_tcp) tests=$ncacn_ip_tcp_tests ;;
+ esac
+ for t in $tests; do
+ echo Testing $t on $transport with $bindoptions
+ testit bin/smbtorture $transport:"$server[$bindoptions]" -U"$username"%"$password" -W $domain $t "$*"
+ done
+ done
+done
+
+echo Testing RPC-DRSUAPI on ncacn_ip_tcp with seal
+testit bin/smbtorture ncacn_ip_tcp:"$server[seal]" -U"$username"%"$password" -W $domain RPC-DRSUAPI "$*"
+echo Testing RPC-DRSUAPI on ncacn_ip_tcp with seal,bigendian
+testit bin/smbtorture ncacn_ip_tcp:"$server[seal,bigendian]" -U"$username"%"$password" -W $domain RPC-DRSUAPI "$*"
+
+echo "ALL OK";
struct creds_CredentialState creds_async[ASYNC_COUNT];
struct rpc_request *req[ASYNC_COUNT];
int i;
- int async_counter = 0;
+ int *async_counter = talloc_p(mem_ctx, int);
+
+ if (!lp_parm_bool(-1, "torture", "dangerous", False)) {
+ printf("test_GetDomainInfo_async disabled - enable dangerous tests to use\n");
+ return True;
+ }
if (!test_SetupCredentials3(p, mem_ctx, NETLOGON_NEG_AUTH2_ADS_FLAGS,
TEST_MACHINE_NAME, machine_password, &creds)) {
printf("Testing netr_LogonGetDomainInfo - async count %d\n", ASYNC_COUNT);
+ *async_counter = 0;
+
for (i=0;i<ASYNC_COUNT;i++) {
creds_client_authenticator(&creds, &a);
req[i] = dcerpc_netr_LogonGetDomainInfo_send(p, mem_ctx, &r);
req[i]->async.callback = async_callback;
- req[i]->async.private = &async_counter;
+ req[i]->async.private = async_counter;
/* even with this flush per request a w2k3 server seems to
clag with multiple outstanding requests. bleergh. */
}
}
- printf("Testing netr_LogonGetDomainInfo - async count %d OK\n", async_counter);
+ printf("Testing netr_LogonGetDomainInfo - async count %d OK\n", *async_counter);
- return async_counter == ASYNC_COUNT;
+ return (*async_counter) == ASYNC_COUNT;
}
return False;
}
- if (!test_LogonUasLogon(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_LogonUasLogoff(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_SamLogon(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_SetPassword(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_GetDomainInfo(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_DatabaseSync(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_DatabaseDeltas(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_AccountDeltas(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_AccountSync(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_GetDcName(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_LogonControl(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_GetAnyDCName(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_LogonControl2(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_DatabaseSync2(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_LogonControl2Ex(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_DsrEnumerateDomainTrusts(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_GetDomainInfo_async(p, mem_ctx)) {
- ret = False;
- }
-
- if (!test_netr_DrsGetDCNameEx2(p, mem_ctx)) {
- ret = False;
- }
+ ret &= test_LogonUasLogon(p, mem_ctx);
+ ret &= test_LogonUasLogoff(p, mem_ctx);
+ ret &= test_SamLogon(p, mem_ctx);
+ ret &= test_SetPassword(p, mem_ctx);
+ ret &= test_GetDomainInfo(p, mem_ctx);
+ ret &= test_DatabaseSync(p, mem_ctx);
+ ret &= test_DatabaseDeltas(p, mem_ctx);
+ ret &= test_AccountDeltas(p, mem_ctx);
+ ret &= test_AccountSync(p, mem_ctx);
+ ret &= test_GetDcName(p, mem_ctx);
+ ret &= test_LogonControl(p, mem_ctx);
+ ret &= test_GetAnyDCName(p, mem_ctx);
+ ret &= test_LogonControl2(p, mem_ctx);
+ ret &= test_DatabaseSync2(p, mem_ctx);
+ ret &= test_LogonControl2Ex(p, mem_ctx);
+ ret &= test_DsrEnumerateDomainTrusts(p, mem_ctx);
+ ret &= test_GetDomainInfo_async(p, mem_ctx);
+ ret &= test_netr_DrsGetDCNameEx2(p, mem_ctx);
talloc_destroy(mem_ctx);