s4:torture: the spoolss notify test should listen on the ncacn_np endpoint
authorStefan Metzmacher <metze@samba.org>
Fri, 1 May 2009 16:19:34 +0000 (18:19 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 15 May 2009 13:27:17 +0000 (15:27 +0200)
metze

source4/torture/rpc/spoolss_notify.c

index 0bfd3be812af165222edd49b2262403d5e392e71..60f1175f27480c31492192dda65fc41d1fd9b489 100644 (file)
 */
 
 #include "includes.h"
+#include "system/filesys.h"
 #include "torture/torture.h"
 #include "torture/rpc/rpc.h"
 #include "librpc/gen_ndr/ndr_spoolss_c.h"
 #include "rpc_server/dcerpc_server.h"
+#include "rpc_server/service_rpc.h"
 #include "lib/events/events.h"
 #include "smbd/process_model.h"
 #include "smb_server/smb_server.h"
@@ -191,6 +193,7 @@ static bool test_RFFPCNEx(struct torture_context *tctx,
        NTSTATUS status;
        struct dcesrv_context *dce_ctx;
        const char *endpoints[] = { "spoolss", NULL };
+       struct dcesrv_endpoint *e;
        struct spoolss_NotifyOption t1;
        struct spoolss_ClosePrinter cp;
 
@@ -244,6 +247,23 @@ static bool test_RFFPCNEx(struct torture_context *tctx,
        torture_assert_ntstatus_ok(tctx, status, 
                                   "unable to initialize DCE/RPC server");
 
+       /* Make sure the directory for NCALRPC exists */
+       if (!directory_exist(lp_ncalrpc_dir(tctx->lp_ctx))) {
+               int ret;
+               ret = mkdir(lp_ncalrpc_dir(tctx->lp_ctx), 0755);
+               torture_assert(tctx, (ret == 0), talloc_asprintf(tctx,
+                              "failed to mkdir(%s) ret[%d] errno[%d - %s]",
+                              lp_ncalrpc_dir(tctx->lp_ctx), ret,
+                              errno, strerror(errno)));
+       }
+
+       for (e=dce_ctx->endpoint_list;e;e=e->next) {
+               status = dcesrv_add_ep(dce_ctx, tctx->lp_ctx,
+                                      e, tctx->ev, &single_ops);
+               torture_assert_ntstatus_ok(tctx, status,
+                               "unable listen on dcerpc endpoint server");
+       }
+
        r.in.flags = 0;
        r.in.local_machine = talloc_asprintf(tctx, "\\\\%s", address);
        r.in.options = 0;