root/source4/torture/rpc/initshutdown.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. init_lsa_StringLarge
  2. test_Abort
  3. test_Init
  4. test_InitEx
  5. torture_rpc_initshutdown

   1 /* 
   2    Unix SMB/CIFS implementation.
   3    test suite for initshutdown operations
   4 
   5    Copyright (C) Tim Potter 2003
   6    Copyright (C) Jelmer Vernooij 2004-2005
   7    
   8    This program is free software; you can redistribute it and/or modify
   9    it under the terms of the GNU General Public License as published by
  10    the Free Software Foundation; either version 3 of the License, or
  11    (at your option) any later version.
  12    
  13    This program is distributed in the hope that it will be useful,
  14    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16    GNU General Public License for more details.
  17    
  18    You should have received a copy of the GNU General Public License
  19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  20 */
  21 
  22 #include "includes.h"
  23 #include "torture/torture.h"
  24 #include "librpc/gen_ndr/ndr_initshutdown_c.h"
  25 #include "torture/rpc/rpc.h"
  26 
  27 static void init_lsa_StringLarge(struct lsa_StringLarge *name, const char *s)
     /* [<][>][^][v][top][bottom][index][help] */
  28 {
  29         name->string = s;
  30 }
  31 
  32 
  33 static bool test_Abort(struct torture_context *tctx, 
     /* [<][>][^][v][top][bottom][index][help] */
  34                                            struct dcerpc_pipe *p)
  35 {
  36         struct initshutdown_Abort r;
  37         NTSTATUS status;
  38         uint16_t server = 0x0;
  39 
  40         r.in.server = &server;
  41         
  42         status = dcerpc_initshutdown_Abort(p, tctx, &r);
  43 
  44         torture_assert_ntstatus_ok(tctx, status, 
  45                                                            "initshutdown_Abort failed");
  46 
  47         torture_assert_werr_ok(tctx, r.out.result, "initshutdown_Abort failed");
  48 
  49         return true;
  50 }
  51 
  52 static bool test_Init(struct torture_context *tctx, 
     /* [<][>][^][v][top][bottom][index][help] */
  53                       struct dcerpc_pipe *p)
  54 {
  55         struct initshutdown_Init r;
  56         NTSTATUS status;
  57         uint16_t hostname = 0x0;
  58 
  59         r.in.hostname = &hostname;
  60         r.in.message = talloc(tctx, struct lsa_StringLarge);
  61         init_lsa_StringLarge(r.in.message, "spottyfood");
  62         r.in.force_apps = 1;
  63         r.in.timeout = 30;
  64         r.in.do_reboot = 1;
  65 
  66         status = dcerpc_initshutdown_Init(p, tctx, &r);
  67 
  68         torture_assert_ntstatus_ok(tctx, status, "initshutdown_Init failed");
  69         torture_assert_werr_ok(tctx, r.out.result, "initshutdown_Init failed");
  70 
  71         return test_Abort(tctx, p);
  72 }
  73 
  74 static bool test_InitEx(struct torture_context *tctx, 
     /* [<][>][^][v][top][bottom][index][help] */
  75                                                 struct dcerpc_pipe *p)
  76 {
  77         struct initshutdown_InitEx r;
  78         NTSTATUS status;
  79         uint16_t hostname = 0x0;
  80 
  81         r.in.hostname = &hostname;
  82         r.in.message = talloc(tctx, struct lsa_StringLarge);
  83         init_lsa_StringLarge(r.in.message, "spottyfood");
  84         r.in.force_apps = 1;
  85         r.in.timeout = 30;
  86         r.in.do_reboot = 1;
  87         r.in.reason = 0;
  88 
  89         status = dcerpc_initshutdown_InitEx(p, tctx, &r);
  90 
  91         torture_assert_ntstatus_ok(tctx, status, "initshutdown_InitEx failed");
  92 
  93         torture_assert_werr_ok(tctx, r.out.result, "initshutdown_InitEx failed");
  94 
  95         return test_Abort(tctx, p);
  96 }
  97 
  98 
  99 struct torture_suite *torture_rpc_initshutdown(TALLOC_CTX *mem_ctx)
     /* [<][>][^][v][top][bottom][index][help] */
 100 {
 101         struct torture_suite *suite = torture_suite_create(mem_ctx, "INITSHUTDOWN");
 102         struct torture_rpc_tcase *tcase;
 103         struct torture_test *test;
 104 
 105         tcase = torture_suite_add_rpc_iface_tcase(suite, "initshutdown", 
 106                                                   &ndr_table_initshutdown);
 107 
 108         test = torture_rpc_tcase_add_test(tcase, "Init", test_Init);
 109         test->dangerous = true;
 110         test = torture_rpc_tcase_add_test(tcase, "InitEx", test_InitEx);
 111         test->dangerous = true;
 112 
 113         return suite;
 114 }

/* [<][>][^][v][top][bottom][index][help] */