1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-04 16:58:42 +03:00

s4-smbtorture: rework the spoolss notify test a bit.

Guenther
This commit is contained in:
Günther Deschner 2011-06-21 15:06:27 +02:00
parent 834dcdb35d
commit 0b5e5db218

View File

@ -247,20 +247,13 @@ static NTSTATUS spoolss__op_init_server(struct dcesrv_context *dce_ctx, const st
static bool test_OpenPrinter(struct torture_context *tctx,
struct dcerpc_pipe *p,
struct policy_handle *handle,
const char *name)
const char *printername)
{
struct spoolss_OpenPrinter r;
const char *printername;
struct dcerpc_binding_handle *b = p->binding_handle;
ZERO_STRUCT(r);
if (name) {
printername = talloc_asprintf(tctx, "\\\\%s\\%s", dcerpc_server_name(p), name);
} else {
printername = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p));
}
r.in.printername = printername;
r.in.datatype = NULL;
r.in.devmode_ctr.devmode= NULL;
@ -352,17 +345,17 @@ static bool test_RemoteFindFirstPrinterChangeNotifyEx(struct torture_context *tc
static bool test_RouterRefreshPrinterChangeNotify(struct torture_context *tctx,
struct dcerpc_binding_handle *b,
struct policy_handle *handle,
struct spoolss_NotifyOption *options)
struct spoolss_NotifyOption *options,
struct spoolss_NotifyInfo **info)
{
struct spoolss_RouterRefreshPrinterChangeNotify r;
struct spoolss_NotifyInfo *info;
torture_comment(tctx, "Testing RouterRefreshPrinterChangeNotify\n");
r.in.handle = handle;
r.in.change_low = 0;
r.in.options = options;
r.out.info = &info;
r.out.info = info;
torture_assert_ntstatus_ok(tctx, dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r(b, tctx, &r),
"RouterRefreshPrinterChangeNotify failed");
@ -503,31 +496,37 @@ static bool test_RFFPCNEx(struct torture_context *tctx,
struct spoolss_NotifyOption *printer_option = setup_printer_NotifyOption(tctx);
#endif
struct dcerpc_binding_handle *b = p->binding_handle;
const char *printername = NULL;
struct spoolss_NotifyInfo *info = NULL;
received_packets = NULL;
/* Start DCE/RPC server */
torture_assert(tctx, test_start_dcerpc_server(tctx, p->conn->event_ctx, &dce_ctx, &address), "");
torture_assert(tctx, test_OpenPrinter(tctx, p, &handle, NULL), "");
printername = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p));
torture_assert(tctx, test_OpenPrinter(tctx, p, &handle, printername), "");
torture_assert(tctx, test_RemoteFindFirstPrinterChangeNotifyEx(tctx, b, &handle, address, server_option), "");
torture_assert(tctx, received_packets, "no packets received");
torture_assert_int_equal(tctx, received_packets->opnum, NDR_SPOOLSS_REPLYOPENPRINTER,
"no ReplyOpenPrinter packet after RemoteFindFirstPrinterChangeNotifyEx");
torture_assert(tctx, test_RouterRefreshPrinterChangeNotify(tctx, b, &handle, NULL), "");
torture_assert(tctx, test_RouterRefreshPrinterChangeNotify(tctx, b, &handle, server_option), "");
torture_assert(tctx, test_RouterRefreshPrinterChangeNotify(tctx, b, &handle, NULL, &info), "");
torture_assert(tctx, test_RouterRefreshPrinterChangeNotify(tctx, b, &handle, server_option, &info), "");
torture_assert(tctx, test_ClosePrinter(tctx, b, &handle), "");
tmp = last_packet(received_packets);
torture_assert_int_equal(tctx, tmp->opnum, NDR_SPOOLSS_REPLYCLOSEPRINTER,
"no ReplyClosePrinter packet after ClosePrinter");
#if 0
printername = talloc_asprintf(tctx, "\\\\%s\\%s", dcerpc_server_name(p), name);
torture_assert(tctx, test_OpenPrinter(tctx, p, &handle, "Epson AL-2600"), "");
torture_assert(tctx, test_RemoteFindFirstPrinterChangeNotifyEx(tctx, p, &handle, address, printer_option), "");
tmp = last_packet(received_packets);
torture_assert_int_equal(tctx, tmp->opnum, NDR_SPOOLSS_REPLYOPENPRINTER,
"no ReplyOpenPrinter packet after RemoteFindFirstPrinterChangeNotifyEx");
torture_assert(tctx, test_RouterRefreshPrinterChangeNotify(tctx, p, &handle, NULL), "");
torture_assert(tctx, test_RouterRefreshPrinterChangeNotify(tctx, p, &handle, printer_option), "");
torture_assert(tctx, test_RouterRefreshPrinterChangeNotify(tctx, p, &handle, NULL, &info), "");
torture_assert(tctx, test_RouterRefreshPrinterChangeNotify(tctx, p, &handle, printer_option, &info), "");
torture_assert(tctx, test_SetPrinter(tctx, p, &handle), "");
tmp = last_packet(received_packets);
torture_assert_int_equal(tctx, tmp->opnum, NDR_SPOOLSS_ROUTERREPLYPRINTEREX,