r23792: convert Samba4 to GPLv3
[kai/samba-autobuild/.git] / source4 / torture / rpc / atsvc.c
index bd605d7c4f9e52ca447de43ab6859f9c3392041b..4eae1f24c86f4f224ac436f28fdba84e5d6e5476 100644 (file)
@@ -6,7 +6,7 @@
    
    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
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
+#include "torture/torture.h"
+#include "librpc/gen_ndr/ndr_atsvc_c.h"
+#include "torture/rpc/rpc.h"
 
-static BOOL test_JobGetInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, uint32 job_id)
+static bool test_JobGetInfo(struct dcerpc_pipe *p, struct torture_context *tctx, uint32_t job_id)
 {
        NTSTATUS status;
        struct atsvc_JobGetInfo r;
@@ -29,18 +31,15 @@ static BOOL test_JobGetInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, uint32 j
        r.in.servername = dcerpc_server_name(p);
        r.in.job_id = job_id;
 
-       status = dcerpc_atsvc_JobGetInfo(p, mem_ctx, &r);
+       status = dcerpc_atsvc_JobGetInfo(p, tctx, &r);
 
-       if (!NT_STATUS_IS_OK(status)) {
-               printf("JobGetInfo failed - %s\n", nt_errstr(status));
-               return False;
-       }
+       torture_assert_ntstatus_ok(tctx, status, "JobGetInfo failed");
 
-       return True;
+       return true;
 }
 
-static BOOL test_JobDel(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, uint32 min_job_id,
-                       uint32 max_job_id)
+static bool test_JobDel(struct dcerpc_pipe *p, struct torture_context *tctx, uint32_t min_job_id,
+                       uint32_t max_job_id)
 {
        NTSTATUS status;
        struct atsvc_JobDel r;
@@ -49,25 +48,20 @@ static BOOL test_JobDel(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, uint32 min_j
        r.in.min_job_id = min_job_id;
        r.in.max_job_id = max_job_id;
 
-       status = dcerpc_atsvc_JobDel(p, mem_ctx, &r);
+       status = dcerpc_atsvc_JobDel(p, tctx, &r);
 
-       if (!NT_STATUS_IS_OK(status)) {
-               printf("JobDel failed - %s\n", nt_errstr(status));
-               return False;
-       }
+       torture_assert_ntstatus_ok(tctx, status, "JobDel failed");
 
-       return True;
+       return true;
 }
 
-static BOOL test_JobEnum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
+static bool test_JobEnum(struct torture_context *tctx, struct dcerpc_pipe *p)
 {
        NTSTATUS status;
        struct atsvc_JobEnum r;
        struct atsvc_enum_ctr ctr;
-       uint32 resume_handle = 0, i;
-       BOOL ret = True;
-
-       printf("\ntesting JobEnum\n");
+       uint32_t resume_handle = 0, i;
+       bool ret = true;
 
        r.in.servername = dcerpc_server_name(p);
        ctr.entries_read = 0;
@@ -76,15 +70,12 @@ static BOOL test_JobEnum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
        r.in.preferred_max_len = 0xffffffff;
        r.in.resume_handle = r.out.resume_handle = &resume_handle;
 
-       status = dcerpc_atsvc_JobEnum(p, mem_ctx, &r);
+       status = dcerpc_atsvc_JobEnum(p, tctx, &r);
 
-       if (!NT_STATUS_IS_OK(status)) {
-               printf("JobEnum failed - %s\n", nt_errstr(status));
-               return False;
-       }
+       torture_assert_ntstatus_ok(tctx, status, "JobEnum failed");
 
-       for (i = 0; r.out.ctr && i < r.out.ctr->entries_read; i++) {
-               if (!test_JobGetInfo(p, mem_ctx, r.out.ctr->first_entry[i].job_id)) {
+       for (i = 0; i < r.out.ctr->entries_read; i++) {
+               if (!test_JobGetInfo(p, tctx, r.out.ctr->first_entry[i].job_id)) {
                        ret = False;
                }
        }
@@ -92,14 +83,12 @@ static BOOL test_JobEnum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
        return ret;
 }
 
-static BOOL test_JobAdd(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
+static bool test_JobAdd(struct torture_context *tctx, struct dcerpc_pipe *p)
 {
        NTSTATUS status;
        struct atsvc_JobAdd r;
        struct atsvc_JobInfo info;
 
-       printf("\ntesting JobAdd\n");
-
        r.in.servername = dcerpc_server_name(p);
        info.job_time = 0x050ae4c0; /* 11:30pm */
        info.days_of_month = 0;     /* n/a */
@@ -108,58 +97,39 @@ static BOOL test_JobAdd(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
        info.command = "foo.exe";
        r.in.job_info = &info;
 
-       status = dcerpc_atsvc_JobAdd(p, mem_ctx, &r);
+       status = dcerpc_atsvc_JobAdd(p, tctx, &r);
 
-       if (!NT_STATUS_IS_OK(status)) {
-               printf("JobAdd failed - %s\n", nt_errstr(status));
-               return False;
-       }
+       torture_assert_ntstatus_ok(tctx, status, "JobAdd failed");
 
        /* Run EnumJobs again in case there were no jobs to begin with */
 
-       if (!test_JobEnum(p, mem_ctx)) {
-               return False;
+       if (!test_JobEnum(tctx, p)) {
+               return false;
        }
 
-       if (!test_JobGetInfo(p, mem_ctx, r.out.job_id)) {
-               return False;
+       if (!test_JobGetInfo(p, tctx, *r.out.job_id)) {
+               return false;
        }
 
-       if (!test_JobDel(p, mem_ctx, r.out.job_id, r.out.job_id)) {
-               return False;
+       if (!test_JobDel(p, tctx, *r.out.job_id, *r.out.job_id)) {
+               return false;
        }
 
-       return True;
+       return true;
 }
 
-BOOL torture_rpc_atsvc(int dummy)
+struct torture_suite *torture_rpc_atsvc(void)
 {
-        NTSTATUS status;
-        struct dcerpc_pipe *p;
-       TALLOC_CTX *mem_ctx;
-       BOOL ret = True;
-
-       mem_ctx = talloc_init("torture_rpc_atsvc");
-
-       status = torture_rpc_connection(&p, 
-                                       DCERPC_ATSVC_NAME, 
-                                       DCERPC_ATSVC_UUID, 
-                                       DCERPC_ATSVC_VERSION);
-       if (!NT_STATUS_IS_OK(status)) {
-               return False;
-       }
-
-       if (!test_JobEnum(p, mem_ctx)) {
-               return False;
-       }
-
-       if (!test_JobAdd(p, mem_ctx)) {
-               return False;
-       }
-
-       talloc_destroy(mem_ctx);
-
-        torture_rpc_close(p);
-
-       return ret;
+       struct torture_suite *suite = torture_suite_create(
+                                                                               talloc_autofree_context(),
+                                                                               "ATSVC");
+       struct torture_tcase *tcase;
+       
+       tcase = torture_suite_add_rpc_iface_tcase(suite, "atsvc", 
+                                                                                         &dcerpc_table_atsvc);
+
+       torture_rpc_tcase_add_test(tcase, "JobEnum", test_JobEnum);
+       torture_rpc_tcase_add_test(tcase, "JobAdd", test_JobAdd);
+
+       return suite;
 }