summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2008-01-05 19:03:36 -0600
committerStefan Metzmacher <metze@samba.org>2008-01-05 13:06:02 -0600
commit01c79091924602bb5c3f1c0c823b2577c4708f6a (patch)
tree82d0a45fe7a68e3178b69819da8c00d227be3810
parent2da3464080e1a45f5c76231668a546ad7f10e790 (diff)
downloadsamba-01c79091924602bb5c3f1c0c823b2577c4708f6a.tar.gz
samba-01c79091924602bb5c3f1c0c823b2577c4708f6a.tar.bz2
samba-01c79091924602bb5c3f1c0c823b2577c4708f6a.zip
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)
-rw-r--r--source4/samba4-knownfail1
-rwxr-xr-xsource4/selftest/samba4_tests.sh5
-rw-r--r--source4/torture/rap/rap.c98
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; i<r.out.count; i++) {
printf("%s %d %s\n", r.out.info[i].info1.name,
@@ -329,8 +330,6 @@ static bool test_netshareenum(struct smbcli_tree *tree)
r.out.info[i].info1.comment);
}
- talloc_free(tmp_ctx);
-
return true;
}
@@ -409,11 +408,11 @@ static NTSTATUS smbcli_rap_netserverenum2(struct smbcli_tree *tree,
return result;
}
-static bool test_netserverenum(struct smbcli_tree *tree)
+static bool test_netserverenum(struct torture_context *tctx,
+ struct smbcli_state *cli)
{
struct rap_NetServerEnum2 r;
int i;
- TALLOC_CTX *tmp_ctx = talloc_new(tree);
r.in.level = 0;
r.in.bufsize = 8192;
@@ -421,8 +420,8 @@ static bool test_netserverenum(struct smbcli_tree *tree)
r.in.servertype = 0x80000000;
r.in.domain = NULL;
- if (!NT_STATUS_IS_OK(smbcli_rap_netserverenum2(tree, tmp_ctx, &r)))
- return false;
+ torture_assert_ntstatus_ok(tctx,
+ smbcli_rap_netserverenum2(cli->tree, tctx, &r), "");
for (i=0; i<r.out.count; i++) {
switch (r.in.level) {
@@ -437,8 +436,6 @@ static bool test_netserverenum(struct smbcli_tree *tree)
}
}
- talloc_free(tmp_ctx);
-
return true;
}
@@ -501,74 +498,28 @@ _PUBLIC_ NTSTATUS smbcli_rap_netservergetinfo(struct smbcli_tree *tree,
return result;
}
-static bool test_netservergetinfo(struct smbcli_tree *tree)
+static bool test_netservergetinfo(struct torture_context *tctx,
+ struct smbcli_state *cli)
{
struct rap_WserverGetInfo r;
bool res = true;
- TALLOC_CTX *mem_ctx;
-
- if (!(mem_ctx = talloc_new(tree))) {
- return false;
- }
r.in.bufsize = 0xffff;
r.in.level = 0;
- res &= NT_STATUS_IS_OK(smbcli_rap_netservergetinfo(tree, mem_ctx, &r));
+ torture_assert_ntstatus_ok(tctx, smbcli_rap_netservergetinfo(cli->tree, 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");