From 01c79091924602bb5c3f1c0c823b2577c4708f6a Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 5 Jan 2008 19:03:36 -0600 Subject: r26671: rap: Convert the RAP tests to the new torture API and run them by default. We don't have a server-side implementation of netservergetinfo yet, so it is marked as known failing. (This used to be commit 33c5982ed9b9fada9355dde5dc274abb99ec0615) --- source4/samba4-knownfail | 1 + source4/selftest/samba4_tests.sh | 5 ++ source4/torture/rap/rap.c | 98 +++++++++++----------------------------- 3 files changed, 33 insertions(+), 71 deletions(-) diff --git a/source4/samba4-knownfail b/source4/samba4-knownfail index 227dad323c..b1b2140fec 100644 --- a/source4/samba4-knownfail +++ b/source4/samba4-knownfail @@ -33,3 +33,4 @@ RPC-NETLOGON.*.GetPassword RPC-NETLOGON.*.GetTrustPasswords BASE-CHARSET.*.Testing partial surrogate .*NET-API-DELSHARE.* # DelShare isn't implemented yet +RAP.*netservergetinfo diff --git a/source4/selftest/samba4_tests.sh b/source4/selftest/samba4_tests.sh index 05035ddac2..66717c03ae 100755 --- a/source4/selftest/samba4_tests.sh +++ b/source4/selftest/samba4_tests.sh @@ -190,6 +190,11 @@ for t in $base $raw $smb2; do plantest "$t" dc $VALGRIND $smb4torture $ADDARGS //\$SERVER/tmp -U"\$USERNAME"%"\$PASSWORD" $t done +rap=`$smb4torture --list | grep "^RAP-" | xargs` +for t in $rap; do + plantest "$t" dc $VALGRIND $smb4torture $ADDARGS //\$SERVER/IPC\\\$ -U"\$USERNAME"%"\$PASSWORD" $t +done + # Tests against the NTVFS CIFS backend for t in $base $raw; do plantest "ntvfs.cifs.$t" dc $VALGRIND $smb4torture //\$NETBIOSNAME/cifs -U"\$USERNAME"%"\$PASSWORD" $t diff --git a/source4/torture/rap/rap.c b/source4/torture/rap/rap.c index 9deb53086a..71689786e8 100644 --- a/source4/torture/rap/rap.c +++ b/source4/torture/rap/rap.c @@ -3,6 +3,7 @@ test suite for various RAP operations Copyright (C) Volker Lendecke 2004 Copyright (C) Tim Potter 2005 + Copyright (C) Jelmer Vernooij 2007 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 @@ -311,17 +312,17 @@ static NTSTATUS smbcli_rap_netshareenum(struct smbcli_tree *tree, return result; } -static bool test_netshareenum(struct smbcli_tree *tree) +static bool test_netshareenum(struct torture_context *tctx, + struct smbcli_state *cli) { struct rap_NetShareEnum r; int i; - TALLOC_CTX *tmp_ctx = talloc_new(tree); r.in.level = 1; r.in.bufsize = 8192; - if (!NT_STATUS_IS_OK(smbcli_rap_netshareenum(tree, tmp_ctx, &r))) - return false; + torture_assert_ntstatus_ok(tctx, + smbcli_rap_netshareenum(cli->tree, tctx, &r), ""); for (i=0; itree, tctx, &r), ""); for (i=0; itree, tctx, &r), ""); r.in.level = 1; - res &= NT_STATUS_IS_OK(smbcli_rap_netservergetinfo(tree, mem_ctx, &r)); - - talloc_free(mem_ctx); - return res; -} - -static bool test_rap(struct smbcli_tree *tree) -{ - bool res = true; - - res &= test_netserverenum(tree); - res &= test_netshareenum(tree); - res &= test_netservergetinfo(tree); + torture_assert_ntstatus_ok(tctx, smbcli_rap_netservergetinfo(cli->tree, tctx, &r), ""); return res; } -bool torture_rap_basic(struct torture_context *torture) +bool torture_rap_scan(struct torture_context *torture, struct smbcli_state *cli) { - struct smbcli_state *cli; - bool ret = true; - TALLOC_CTX *mem_ctx; - - if (!torture_open_connection(&cli, torture, 0)) { - return false; - } - - mem_ctx = talloc_init("torture_rap_basic"); - - if (!test_rap(cli->tree)) { - ret = false; - } - - torture_close_connection(cli); - talloc_free(mem_ctx); - - return ret; -} - -bool torture_rap_scan(struct torture_context *torture) -{ - TALLOC_CTX *mem_ctx; - struct smbcli_state *cli; int callno; - mem_ctx = talloc_init("torture_rap_scan"); - - if (!torture_open_connection(&cli, torture, 0)) { - return false; - } - for (callno = 0; callno < 0xffff; callno++) { - struct rap_call *call = new_rap_cli_call(mem_ctx, callno); + struct rap_call *call = new_rap_cli_call(torture, callno); NTSTATUS result; result = rap_cli_do_call(cli->tree, call); @@ -579,19 +530,24 @@ bool torture_rap_scan(struct torture_context *torture) printf("callno %d is RAP call\n", callno); } - torture_close_connection(cli); - return true; } NTSTATUS torture_rap_init(void) { - struct torture_suite *suite = torture_suite_create( - talloc_autofree_context(), - "RAP"); + struct torture_suite *suite = torture_suite_create(talloc_autofree_context(), "RAP"); + struct torture_suite *suite_basic = torture_suite_create(suite, "BASIC"); + + torture_suite_add_suite(suite, suite_basic); + + torture_suite_add_1smb_test(suite_basic, "netserverenum", + test_netserverenum); + torture_suite_add_1smb_test(suite_basic, "netshareenum", + test_netshareenum); + torture_suite_add_1smb_test(suite_basic, "netservergetinfo", + test_netservergetinfo); - torture_suite_add_simple_test(suite, "BASIC", torture_rap_basic); - torture_suite_add_simple_test(suite, "SCAN", torture_rap_scan); + torture_suite_add_1smb_test(suite, "SCAN", torture_rap_scan); suite->description = talloc_strdup(suite, "Remote Administration Protocol tests"); -- cgit