r26671: rap: Convert the RAP tests to the new torture API and run them by default.
[ira/wip.git] / source / torture / rap / rap.c
index 5294e00df967d99a5360f45b75e5076fc7f71183..71689786e8265ef355a78ad61e37435a47878ee5 100644 (file)
@@ -3,6 +3,7 @@
    test suite for various RAP operations
    Copyright (C) Volker Lendecke 2004
    Copyright (C) Tim Potter 2005
    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
    
    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
@@ -183,7 +184,7 @@ static NTSTATUS rap_pull_string(TALLOC_CTX *mem_ctx, struct ndr_pull *ndr,
                return NT_STATUS_INVALID_PARAMETER;
 
        *dest = talloc_zero_array(mem_ctx, char, len+1);
                return NT_STATUS_INVALID_PARAMETER;
 
        *dest = talloc_zero_array(mem_ctx, char, len+1);
-       pull_string(lp_iconv_convenience(global_loadparm), *dest, p, len+1, len, STR_ASCII);
+       pull_string(ndr->iconv_convenience, *dest, p, len+1, len, STR_ASCII);
 
        return NT_STATUS_OK;
 }
 
        return NT_STATUS_OK;
 }
@@ -311,17 +312,17 @@ static NTSTATUS smbcli_rap_netshareenum(struct smbcli_tree *tree,
        return result;
 }
 
        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;
 {
        struct rap_NetShareEnum r;
        int i;
-       TALLOC_CTX *tmp_ctx = talloc_new(tree);
 
        r.in.level = 1;
        r.in.bufsize = 8192;
 
 
        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,
 
        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);
        }
 
                       r.out.info[i].info1.comment);
        }
 
-       talloc_free(tmp_ctx);
-
        return true;
 }
 
        return true;
 }
 
@@ -409,11 +408,11 @@ static NTSTATUS smbcli_rap_netserverenum2(struct smbcli_tree *tree,
        return result;
 }
 
        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;
 {
        struct rap_NetServerEnum2 r;
        int i;
-       TALLOC_CTX *tmp_ctx = talloc_new(tree);
 
        r.in.level = 0;
        r.in.bufsize = 8192;
 
        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;
 
        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) {
 
        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;
 }
 
        return true;
 }
 
@@ -501,74 +498,28 @@ _PUBLIC_ NTSTATUS smbcli_rap_netservergetinfo(struct smbcli_tree *tree,
        return result;
 }
 
        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;
 {
        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;
 
        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;
        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;
 }
 
 
        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;
 
        int callno;
 
-       mem_ctx = talloc_init("torture_rap_scan");
-
-       if (!torture_open_connection(&cli, torture, 0)) {
-               return false;
-       }
-       
        for (callno = 0; callno < 0xffff; callno++) {
        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);
                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);
        }
 
                printf("callno %d is RAP call\n", callno);
        }
 
-       torture_close_connection(cli);
-
        return true;
 }
 
 NTSTATUS torture_rap_init(void)
 {
        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");
 
        suite->description = talloc_strdup(suite, 
                                                "Remote Administration Protocol tests");