r26671: rap: Convert the RAP tests to the new torture API and run them by default.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 6 Jan 2008 01:03:36 +0000 (19:03 -0600)
committerStefan Metzmacher <metze@samba.org>
Sat, 5 Jan 2008 19:06:02 +0000 (13:06 -0600)
We don't have a server-side implementation of netservergetinfo yet, so it is
marked as known failing.

source/samba4-knownfail
source/selftest/samba4_tests.sh
source/torture/rap/rap.c

index 227dad323c306f48b6700b162a5c250ffb449428..b1b2140fec18c44526919806131c14afaa80be5f 100644 (file)
@@ -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
index 05035ddac2536f586a483fcf77308637547dbcb4..66717c03aef264bf705d27a0dd357786827c03f1 100755 (executable)
@@ -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
index 9deb53086a39429143c8c6462bbb0423508a098a..71689786e8265ef355a78ad61e37435a47878ee5 100644 (file)
@@ -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");