Revert "TODO s4:torture/raw: test_notify_tcp_dis trigger idle event every 0.25s"
[metze/samba/wip.git] / source4 / torture / raw / notify.c
index 8f6675ddffeba1389343457dbbb437e2cf347bfa..fdb5771bf3d9f97af78142ec9941da30f7969b06 100644 (file)
@@ -38,7 +38,7 @@ do { \
 /* 
    basic testing of change notify on directories
 */
-static bool test_notify_dir(struct torture_context *mem_ctx,
+static bool test_notify_dir(struct torture_context *tctx,
                            struct smbcli_state *cli,
                            struct smbcli_state *cli2)
 {
@@ -51,11 +51,10 @@ static bool test_notify_dir(struct torture_context *mem_ctx,
        struct smbcli_request *req, *req2;
        extern int torture_numops;
 
-       printf("TESTING CHANGE NOTIFY ON DIRECTORIES\n");
-               
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_comment(tctx, "TESTING CHANGE NOTIFY ON DIRECTORIES\n");
+
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        /*
          get a handle on the directory
@@ -73,13 +72,13 @@ static bool test_notify_dir(struct torture_context *mem_ctx,
        io.ntcreatex.in.security_flags = 0;
        io.ntcreatex.in.fname = BASEDIR;
 
-       status = smb_raw_open(cli->tree, mem_ctx, &io);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
        fnum = io.ntcreatex.out.file.fnum;
 
-       status = smb_raw_open(cli->tree, mem_ctx, &io);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
        fnum2 = io.ntcreatex.out.file.fnum;
 
@@ -91,51 +90,51 @@ static bool test_notify_dir(struct torture_context *mem_ctx,
        notify.nttrans.in.file.fnum = fnum;
        notify.nttrans.in.recursive = true;
 
-       printf("Testing notify cancel\n");
+       torture_comment(tctx, "Testing notify cancel\n");
 
        req = smb_raw_changenotify_send(cli->tree, &notify);
        smb_raw_ntcancel(req);
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_equal_goto(mem_ctx, status, NT_STATUS_CANCELLED,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_equal_goto(tctx, status, NT_STATUS_CANCELLED,
                                           ret, done,
                                           "smb_raw_changenotify_recv");
 
-       printf("Testing notify mkdir\n");
+       torture_comment(tctx, "Testing notify mkdir\n");
 
        req = smb_raw_changenotify_send(cli->tree, &notify);
        smbcli_mkdir(cli2->tree, BASEDIR "\\subdir-name");
 
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "more than one change");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_ADDED, ret, done,
                                      "wrong action (exp: ADDED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
 
-       printf("Testing notify rmdir\n");
+       torture_comment(tctx, "Testing notify rmdir\n");
 
        req = smb_raw_changenotify_send(cli->tree, &notify);
        smbcli_rmdir(cli2->tree, BASEDIR "\\subdir-name");
 
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "more than one change");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
 
-       printf("Testing notify mkdir - rmdir - mkdir - rmdir\n");
+       torture_comment(tctx, "Testing notify mkdir - rmdir - mkdir - rmdir\n");
 
        smbcli_mkdir(cli2->tree, BASEDIR "\\subdir-name");
        smbcli_rmdir(cli2->tree, BASEDIR "\\subdir-name");
@@ -143,47 +142,44 @@ static bool test_notify_dir(struct torture_context *mem_ctx,
        smbcli_rmdir(cli2->tree, BASEDIR "\\subdir-name");
        smb_msleep(200);
        req = smb_raw_changenotify_send(cli->tree, &notify);
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      4, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_ADDED, ret, done,
                                      "wrong action (exp: ADDED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[1].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[1].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[1].name, "subdir-name",
                   STR_UNICODE);
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[2].action,
                                      NOTIFY_ACTION_ADDED, ret, done,
                                      "wrong action (exp: ADDED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[2].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[2].name, "subdir-name",
                   STR_UNICODE);
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[3].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[3].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[3].name, "subdir-name",
                   STR_UNICODE);
 
        count = torture_numops;
-       printf("Testing buffered notify on create of %d files\n", count);
+       torture_comment(tctx, "Testing buffered notify on create of %d files\n", count);
        for (i=0;i<count;i++) {
                char *fname = talloc_asprintf(cli, BASEDIR "\\test%d.txt", i);
                int fnum3 = smbcli_open(cli->tree, fname, O_CREAT|O_RDWR, DENY_NONE);
-               if (fnum3 == -1) {
-                       printf("Failed to create %s - %s\n", 
-                              fname, smbcli_errstr(cli->tree));
-                       ret = false;
-                       goto done;
-               }
+               torture_assert_int_not_equal_goto(tctx, fnum3, -1, ret, done,
+                       talloc_asprintf(tctx, "Failed to create %s - %s",
+                                       fname, smbcli_errstr(cli->tree)));
                talloc_free(fname);
                smbcli_close(cli->tree, fnum3);
        }
@@ -199,7 +195,7 @@ static bool test_notify_dir(struct torture_context *mem_ctx,
        req = smb_raw_changenotify_send(cli->tree, &notify);
 
        status = smbcli_unlink(cli->tree, BASEDIR "\\nonexistent.txt");
-       torture_assert_ntstatus_equal_goto(mem_ctx, status,
+       torture_assert_ntstatus_equal_goto(tctx, status,
                                           NT_STATUS_OBJECT_NAME_NOT_FOUND,
                                           ret, done,
                                           "smbcli_unlink");
@@ -207,101 +203,101 @@ static bool test_notify_dir(struct torture_context *mem_ctx,
        /* (1st unlink) as the 2nd notify directly returns,
           this unlink is only seen by the 1st notify and 
           the 3rd notify (later) */
-       printf("Testing notify on unlink for the first file\n");
+       torture_comment(tctx, "Testing notify on unlink for the first file\n");
        status = smbcli_unlink(cli2->tree, BASEDIR "\\test0.txt");
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smbcli_unlink");
 
        /* receive the reply from the 2nd notify */
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      count, ret, done,
                                      "wrong number of changes");
        for (i=1;i<count;i++) {
-               torture_assert_int_equal_goto(mem_ctx,
+               torture_assert_int_equal_goto(tctx,
                                        notify.nttrans.out.changes[i].action,
                                        NOTIFY_ACTION_ADDED, ret, done,
                                        "wrong action (exp: ADDED)");
        }
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "test0.txt",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "test0.txt",
                   STR_UNICODE);
 
-       printf("and now from the 1st notify\n");
-       status = smb_raw_changenotify_recv(req2, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       torture_comment(tctx, "and now from the 1st notify\n");
+       status = smb_raw_changenotify_recv(req2, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "test0.txt",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "test0.txt",
                   STR_UNICODE);
 
-       printf("(3rd notify) this notify will only see the 1st unlink\n");
+       torture_comment(tctx, "(3rd notify) this notify will only see the 1st unlink\n");
        req = smb_raw_changenotify_send(cli->tree, &notify);
 
        status = smbcli_unlink(cli->tree, BASEDIR "\\nonexistent.txt");
-       torture_assert_ntstatus_equal_goto(mem_ctx, status,
+       torture_assert_ntstatus_equal_goto(tctx, status,
                                           NT_STATUS_OBJECT_NAME_NOT_FOUND,
                                           ret, done,
                                           "smbcli_unlink");
 
-       printf("Testing notify on wildcard unlink for %d files\n", count-1);
+       torture_comment(tctx, "Testing notify on wildcard unlink for %d files\n", count-1);
        /* (2nd unlink) do a wildcard unlink */
        status = smbcli_unlink(cli2->tree, BASEDIR "\\test*.txt");
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
        /* receive the 3rd notify */
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "test0.txt",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "test0.txt",
                   STR_UNICODE);
 
        /* and we now see the rest of the unlink calls on both directory handles */
        notify.nttrans.in.file.fnum = fnum;
        sleep(3);
        req = smb_raw_changenotify_send(cli->tree, &notify);
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      count - 1, ret, done,
                                      "wrong number of changes");
        for (i=0;i<notify.nttrans.out.num_changes;i++) {
-               torture_assert_int_equal_goto(mem_ctx,
+               torture_assert_int_equal_goto(tctx,
                                        notify.nttrans.out.changes[i].action,
                                        NOTIFY_ACTION_REMOVED, ret, done,
                                        "wrong action (exp: REMOVED)");
        }
        notify.nttrans.in.file.fnum = fnum2;
        req = smb_raw_changenotify_send(cli->tree, &notify);
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      count - 1, ret, done,
                                      "wrong number of changes");
        for (i=0;i<notify.nttrans.out.num_changes;i++) {
-               torture_assert_int_equal_goto(mem_ctx,
+               torture_assert_int_equal_goto(tctx,
                                        notify.nttrans.out.changes[i].action,
                                        NOTIFY_ACTION_REMOVED, ret, done,
                                        "wrong action (exp: REMOVED)");
        }
 
-       printf("Testing if a close() on the dir handle triggers the notify reply\n");
+       torture_comment(tctx, "Testing if a close() on the dir handle triggers the notify reply\n");
 
        notify.nttrans.in.file.fnum = fnum;
        req = smb_raw_changenotify_send(cli->tree, &notify);
@@ -310,13 +306,13 @@ static bool test_notify_dir(struct torture_context *mem_ctx,
        cl.close.in.file.fnum = fnum;
        cl.close.in.write_time = 0;
        status = smb_raw_close(cli->tree, &cl);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_close");
 
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      0, ret, done, "no changes expected");
 
 done:
@@ -356,7 +352,7 @@ static bool check_rename_reply(struct torture_context *tctx,
 /* 
    testing of recursive change notify
 */
-static bool test_notify_recursive(struct torture_context *mem_ctx,
+static bool test_notify_recursive(struct torture_context *tctx,
                                  struct smbcli_state *cli,
                                  struct smbcli_state *cli2)
 {
@@ -367,11 +363,10 @@ static bool test_notify_recursive(struct torture_context *mem_ctx,
        int fnum;
        struct smbcli_request *req1, *req2;
 
-       printf("TESTING CHANGE NOTIFY WITH RECURSION\n");
-               
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_comment(tctx, "TESTING CHANGE NOTIFY WITH RECURSION\n");
+
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        /*
          get a handle on the directory
@@ -389,8 +384,8 @@ static bool test_notify_recursive(struct torture_context *mem_ctx,
        io.ntcreatex.in.security_flags = 0;
        io.ntcreatex.in.fname = BASEDIR;
 
-       status = smb_raw_open(cli->tree, mem_ctx, &io);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
        fnum = io.ntcreatex.out.file.fnum;
 
@@ -409,15 +404,15 @@ static bool test_notify_recursive(struct torture_context *mem_ctx,
 
        /* cancel initial requests so the buffer is setup */
        smb_raw_ntcancel(req1);
-       status = smb_raw_changenotify_recv(req1, mem_ctx, &notify);
-       torture_assert_ntstatus_equal_goto(mem_ctx, status,
+       status = smb_raw_changenotify_recv(req1, tctx, &notify);
+       torture_assert_ntstatus_equal_goto(tctx, status,
                                           NT_STATUS_CANCELLED,
                                           ret, done,
                                           "smb_raw_changenotify_recv");
 
        smb_raw_ntcancel(req2);
-       status = smb_raw_changenotify_recv(req2, mem_ctx, &notify);
-       torture_assert_ntstatus_equal_goto(mem_ctx, status,
+       status = smb_raw_changenotify_recv(req2, tctx, &notify);
+       torture_assert_ntstatus_equal_goto(tctx, status,
                                           NT_STATUS_CANCELLED,
                                           ret, done,
                                           "smb_raw_changenotify_recv");
@@ -445,63 +440,64 @@ static bool test_notify_recursive(struct torture_context *mem_ctx,
        smbcli_rmdir(cli2->tree, BASEDIR "\\subdir-name");
        smbcli_unlink(cli->tree, BASEDIR "\\subname3-r");
 
+       smb_msleep(200);
        notify.nttrans.in.recursive = false;
        req2 = smb_raw_changenotify_send(cli->tree, &notify);
 
-       status = smb_raw_changenotify_recv(req1, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req1, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      11, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_ADDED, ret, done,
                                      "wrong action (exp: ADDED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[1].action,
                                      NOTIFY_ACTION_ADDED, ret, done,
                                      "wrong action (exp: ADDED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[1].name,
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[1].name,
                   "subdir-name\\subname1", STR_UNICODE);
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[2].action,
                                      NOTIFY_ACTION_ADDED, ret, done,
                                      "wrong action (exp: ADDED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[2].name,
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[2].name,
                   "subdir-name\\subname2", STR_UNICODE);
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[3].action,
                                      NOTIFY_ACTION_OLD_NAME, ret, done,
                                      "wrong action (exp: OLD_NAME)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[3].name,
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[3].name,
                   "subdir-name\\subname1", STR_UNICODE);
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[4].action,
                                      NOTIFY_ACTION_NEW_NAME, ret, done,
                                      "wrong action (exp: NEW_NAME)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[4].name,
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[4].name,
                   "subdir-name\\subname1-r", STR_UNICODE);
 
-       ret &= check_rename_reply(mem_ctx,
+       ret &= check_rename_reply(tctx,
                cli, __LINE__, &notify.nttrans.out.changes[5],
                NOTIFY_ACTION_ADDED, "subname2-r");
-       ret &= check_rename_reply(mem_ctx,
+       ret &= check_rename_reply(tctx,
                cli, __LINE__, &notify.nttrans.out.changes[5],
                NOTIFY_ACTION_REMOVED, "subdir-name\\subname2");
-       ret &= check_rename_reply(mem_ctx,
+       ret &= check_rename_reply(tctx,
                cli, __LINE__, &notify.nttrans.out.changes[5],
                NOTIFY_ACTION_MODIFIED, "subname2-r");
                
-       ret &= check_rename_reply(mem_ctx,
+       ret &= check_rename_reply(tctx,
                cli, __LINE__, &notify.nttrans.out.changes[8],
                NOTIFY_ACTION_OLD_NAME, "subname2-r");
-       ret &= check_rename_reply(mem_ctx,
+       ret &= check_rename_reply(tctx,
                cli, __LINE__, &notify.nttrans.out.changes[8],
                NOTIFY_ACTION_NEW_NAME, "subname3-r");
-       ret &= check_rename_reply(mem_ctx,
+       ret &= check_rename_reply(tctx,
                cli, __LINE__, &notify.nttrans.out.changes[8],
                NOTIFY_ACTION_MODIFIED, "subname3-r");
 
@@ -509,29 +505,29 @@ static bool test_notify_recursive(struct torture_context *mem_ctx,
                goto done;
        }
 
-       status = smb_raw_changenotify_recv(req2, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req2, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      3, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name,
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name,
                   "subdir-name\\subname1-r", STR_UNICODE);
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[1].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[1].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[1].name, "subdir-name",
                   STR_UNICODE);
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[2].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[2].name, "subname3-r",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[2].name, "subname3-r",
                   STR_UNICODE);
 
 done:
@@ -543,7 +539,7 @@ done:
 /* 
    testing of change notify mask change
 */
-static bool test_notify_mask_change(struct torture_context *mem_ctx,
+static bool test_notify_mask_change(struct torture_context *tctx,
                                    struct smbcli_state *cli)
 {
        bool ret = true;
@@ -553,11 +549,10 @@ static bool test_notify_mask_change(struct torture_context *mem_ctx,
        int fnum;
        struct smbcli_request *req1, *req2;
 
-       printf("TESTING CHANGE NOTIFY WITH MASK CHANGE\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY WITH MASK CHANGE\n");
 
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        /*
          get a handle on the directory
@@ -575,8 +570,8 @@ static bool test_notify_mask_change(struct torture_context *mem_ctx,
        io.ntcreatex.in.security_flags = 0;
        io.ntcreatex.in.fname = BASEDIR;
 
-       status = smb_raw_open(cli->tree, mem_ctx, &io);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
        fnum = io.ntcreatex.out.file.fnum;
 
@@ -595,15 +590,15 @@ static bool test_notify_mask_change(struct torture_context *mem_ctx,
 
        /* cancel initial requests so the buffer is setup */
        smb_raw_ntcancel(req1);
-       status = smb_raw_changenotify_recv(req1, mem_ctx, &notify);
-       torture_assert_ntstatus_equal_goto(mem_ctx, status,
+       status = smb_raw_changenotify_recv(req1, tctx, &notify);
+       torture_assert_ntstatus_equal_goto(tctx, status,
                                           NT_STATUS_CANCELLED,
                                           ret, done,
                                           "smb_raw_changenotify_recv");
 
        smb_raw_ntcancel(req2);
-       status = smb_raw_changenotify_recv(req2, mem_ctx, &notify);
-       torture_assert_ntstatus_equal_goto(mem_ctx, status,
+       status = smb_raw_changenotify_recv(req2, tctx, &notify);
+       torture_assert_ntstatus_equal_goto(tctx, status,
                                           NT_STATUS_CANCELLED,
                                           ret, done,
                                           "smb_raw_changenotify_recv");
@@ -616,17 +611,17 @@ static bool test_notify_mask_change(struct torture_context *mem_ctx,
        smbcli_setatr(cli->tree, BASEDIR "\\tname1", FILE_ATTRIBUTE_HIDDEN, 0);
        smbcli_unlink(cli->tree, BASEDIR "\\tname1");
 
-       status = smb_raw_changenotify_recv(req1, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req1, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_MODIFIED, ret, done,
                                      "wrong action (exp: MODIFIED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "tname1",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "tname1",
                   STR_UNICODE);
 
        /* Now try and change the mask to include other events.
@@ -652,36 +647,32 @@ static bool test_notify_mask_change(struct torture_context *mem_ctx,
        smbcli_rmdir(cli->tree, BASEDIR "\\subdir-name");
        smbcli_unlink(cli->tree, BASEDIR "\\subname3-r");
 
-       status = smb_raw_changenotify_recv(req1, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req1, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_MODIFIED, ret, done,
                                      "wrong action (exp: MODIFIED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "subname2-r",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subname2-r",
                   STR_UNICODE);
 
-       status = smb_raw_changenotify_recv(req2, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req2, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_MODIFIED, ret, done,
                                      "wrong action (exp: MODIFIED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "subname3-r",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subname3-r",
                   STR_UNICODE);
 
-       if (!ret) {
-               goto done;
-       }
-
 done:
        smb_raw_exit(cli->session);
        smbcli_deltree(cli->tree, BASEDIR);
@@ -708,11 +699,10 @@ static bool test_notify_mask(struct torture_context *tctx,
        struct timeval tv;
        NTTIME t;
 
-       printf("TESTING CHANGE NOTIFY COMPLETION FILTERS\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY COMPLETION FILTERS\n");
 
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        tv = timeval_current_ofs(1000, 0);
        t = timeval_to_nttime(&tv);
@@ -742,7 +732,7 @@ static bool test_notify_mask(struct torture_context *tctx,
 #define NOTIFY_MASK_TEST(test_name, setup, op, cleanup, Action, expected, nchanges) \
        do { \
        smbcli_getatr(cli->tree, test_name, NULL, NULL, NULL); \
-       do { for (mask=i=0;i<32;i++) { \
+       for (mask=i=0;i<32;i++) { \
                struct smbcli_request *req; \
                status = smb_raw_open(cli->tree, tctx, &io); \
                torture_assert_ntstatus_ok_goto(tctx, status, ret, done, \
@@ -766,59 +756,64 @@ static bool test_notify_mask(struct torture_context *tctx,
                    notify.nttrans.out.changes[0].action == NOTIFY_ACTION_MODIFIED && \
                    ((expected) & FILE_NOTIFY_CHANGE_ATTRIBUTES) && \
                    Action == NOTIFY_ACTION_OLD_NAME) { \
-                       printf("(rename file special handling OK)\n"); \
-               } else if (nchanges != notify.nttrans.out.num_changes) { \
-                       printf("ERROR: nchanges=%d expected=%d action=%d filter=0x%08x\n", \
-                              notify.nttrans.out.num_changes, \
-                              nchanges, \
-                              notify.nttrans.out.changes[0].action, \
-                              notify.nttrans.in.completion_filter); \
-                       ret = false; \
-               } else if (notify.nttrans.out.changes[0].action != Action) { \
-                       printf("ERROR: nchanges=%d action=%d expectedAction=%d filter=0x%08x\n", \
-                              notify.nttrans.out.num_changes, \
-                              notify.nttrans.out.changes[0].action, \
-                              Action, \
-                              notify.nttrans.in.completion_filter); \
-                       ret = false; \
-               } else if (strcmp(notify.nttrans.out.changes[0].name.s, "tname1") != 0) { \
-                       printf("ERROR: nchanges=%d action=%d filter=0x%08x name=%s\n", \
-                              notify.nttrans.out.num_changes, \
-                              notify.nttrans.out.changes[0].action, \
-                              notify.nttrans.in.completion_filter, \
-                              notify.nttrans.out.changes[0].name.s);   \
-                       ret = false; \
+                       torture_comment(tctx, "(rename file special handling OK)\n"); \
+               } else { \
+                       torture_assert_int_equal_goto(tctx, \
+                               notify.nttrans.out.num_changes,\
+                               nchanges, ret, done, \
+                               talloc_asprintf(tctx, \
+                                       "nchanges=%d expected=%d action=%d " \
+                                       "filter=0x%08x\n", \
+                                       notify.nttrans.out.num_changes, \
+                                       nchanges, \
+                                       notify.nttrans.out.changes[0].action, \
+                                       notify.nttrans.in.completion_filter)); \
+                       torture_assert_int_equal_goto(tctx, \
+                               notify.nttrans.out.changes[0].action, \
+                               Action, ret, done, \
+                               talloc_asprintf(tctx, \
+                                       "nchanges=%d action=%d " \
+                                       "expectedAction=%d filter=0x%08x\n", \
+                                       notify.nttrans.out.num_changes, \
+                                       notify.nttrans.out.changes[0].action, \
+                                       Action, \
+                                       notify.nttrans.in.completion_filter)); \
+                       torture_assert_str_equal_goto(tctx, \
+                               notify.nttrans.out.changes[0].name.s, \
+                               "tname1", ret, done, \
+                               talloc_asprintf(tctx, \
+                                       "nchanges=%d action=%d filter=0x%08x " \
+                                       "name=%s expected_name=tname1\n", \
+                                       notify.nttrans.out.num_changes, \
+                                       notify.nttrans.out.changes[0].action, \
+                                       notify.nttrans.in.completion_filter, \
+                                       notify.nttrans.out.changes[0].name.s));\
                } \
                mask |= (1<<i); \
        } \
        if ((expected) != mask) { \
-               if (((expected) & ~mask) != 0) { \
-                       printf("ERROR: trigger on too few bits. mask=0x%08x expected=0x%08x\n", \
-                              mask, expected); \
-                       ret = false; \
-               } else { \
-                       printf("WARNING: trigger on too many bits. mask=0x%08x expected=0x%08x\n", \
-                              mask, expected); \
-               } \
+               torture_assert_int_not_equal_goto(tctx, ((expected) & ~mask), \
+                               0, ret, done, "Too few bits"); \
+               torture_comment(tctx, "WARNING: trigger on too many bits. mask=0x%08x expected=0x%08x\n", \
+                      mask, expected); \
        } \
-       } while (0); \
        } while (0);
 
-       printf("Testing mkdir\n");
+       torture_comment(tctx, "Testing mkdir\n");
        NOTIFY_MASK_TEST("Testing mkdir",;,
                         smbcli_mkdir(cli->tree, BASEDIR "\\tname1");,
                         smbcli_rmdir(cli2->tree, BASEDIR "\\tname1");,
                         NOTIFY_ACTION_ADDED,
                         FILE_NOTIFY_CHANGE_DIR_NAME, 1);
 
-       printf("Testing create file\n");
+       torture_comment(tctx, "Testing create file\n");
        NOTIFY_MASK_TEST("Testing create file",;,
                         smbcli_close(cli->tree, smbcli_open(cli->tree, BASEDIR "\\tname1", O_CREAT, 0));,
                         smbcli_unlink(cli2->tree, BASEDIR "\\tname1");,
                         NOTIFY_ACTION_ADDED,
                         FILE_NOTIFY_CHANGE_FILE_NAME, 1);
 
-       printf("Testing unlink\n");
+       torture_comment(tctx, "Testing unlink\n");
        NOTIFY_MASK_TEST("Testing unlink",
                         smbcli_close(cli->tree, smbcli_open(cli->tree, BASEDIR "\\tname1", O_CREAT, 0));,
                         smbcli_unlink(cli2->tree, BASEDIR "\\tname1");,
@@ -826,7 +821,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                         NOTIFY_ACTION_REMOVED,
                         FILE_NOTIFY_CHANGE_FILE_NAME, 1);
 
-       printf("Testing rmdir\n");
+       torture_comment(tctx, "Testing rmdir\n");
        NOTIFY_MASK_TEST("Testing rmdir",
                         smbcli_mkdir(cli->tree, BASEDIR "\\tname1");,
                         smbcli_rmdir(cli2->tree, BASEDIR "\\tname1");,
@@ -834,7 +829,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                         NOTIFY_ACTION_REMOVED,
                         FILE_NOTIFY_CHANGE_DIR_NAME, 1);
 
-       printf("Testing rename file\n");
+       torture_comment(tctx, "Testing rename file\n");
        NOTIFY_MASK_TEST("Testing rename file",
                         smbcli_close(cli->tree, smbcli_open(cli->tree, BASEDIR "\\tname1", O_CREAT, 0));,
                         smbcli_rename(cli2->tree, BASEDIR "\\tname1", BASEDIR "\\tname2");,
@@ -842,7 +837,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                         NOTIFY_ACTION_OLD_NAME,
                         FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_ATTRIBUTES|FILE_NOTIFY_CHANGE_CREATION, 2);
 
-       printf("Testing rename dir\n");
+       torture_comment(tctx, "Testing rename dir\n");
        NOTIFY_MASK_TEST("Testing rename dir",
                smbcli_mkdir(cli->tree, BASEDIR "\\tname1");,
                smbcli_rename(cli2->tree, BASEDIR "\\tname1", BASEDIR "\\tname2");,
@@ -850,7 +845,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                NOTIFY_ACTION_OLD_NAME,
                FILE_NOTIFY_CHANGE_DIR_NAME, 2);
 
-       printf("Testing set path attribute\n");
+       torture_comment(tctx, "Testing set path attribute\n");
        NOTIFY_MASK_TEST("Testing set path attribute",
                smbcli_close(cli->tree, smbcli_open(cli->tree, BASEDIR "\\tname1", O_CREAT, 0));,
                smbcli_setatr(cli2->tree, BASEDIR "\\tname1", FILE_ATTRIBUTE_HIDDEN, 0);,
@@ -858,7 +853,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                NOTIFY_ACTION_MODIFIED,
                FILE_NOTIFY_CHANGE_ATTRIBUTES, 1);
 
-       printf("Testing set path write time\n");
+       torture_comment(tctx, "Testing set path write time\n");
        NOTIFY_MASK_TEST("Testing set path write time",
                smbcli_close(cli->tree, smbcli_open(cli->tree, BASEDIR "\\tname1", O_CREAT, 0));,
                smbcli_setatr(cli2->tree, BASEDIR "\\tname1", FILE_ATTRIBUTE_NORMAL, 1000);,
@@ -866,7 +861,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                NOTIFY_ACTION_MODIFIED,
                FILE_NOTIFY_CHANGE_LAST_WRITE, 1);
 
-       printf("Testing set file attribute\n");
+       torture_comment(tctx, "Testing set file attribute\n");
        NOTIFY_MASK_TEST("Testing set file attribute",
                fnum2 = create_complex_file(cli2, tctx, BASEDIR "\\tname1");,
                smbcli_fsetatr(cli2->tree, fnum2, FILE_ATTRIBUTE_HIDDEN, 0, 0, 0, 0);,
@@ -875,11 +870,11 @@ static bool test_notify_mask(struct torture_context *tctx,
                FILE_NOTIFY_CHANGE_ATTRIBUTES, 1);
 
        if (torture_setting_bool(tctx, "samba3", false)) {
-               printf("Samba3 does not yet support create times "
+               torture_comment(tctx, "Samba3 does not yet support create times "
                       "everywhere\n");
        }
        else {
-               printf("Testing set file create time\n");
+               torture_comment(tctx, "Testing set file create time\n");
                NOTIFY_MASK_TEST("Testing set file create time",
                        fnum2 = create_complex_file(cli, tctx,
                                                    BASEDIR "\\tname1");,
@@ -890,7 +885,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                        FILE_NOTIFY_CHANGE_CREATION, 1);
        }
 
-       printf("Testing set file access time\n");
+       torture_comment(tctx, "Testing set file access time\n");
        NOTIFY_MASK_TEST("Testing set file access time",
                fnum2 = create_complex_file(cli, tctx, BASEDIR "\\tname1");,
                smbcli_fsetatr(cli->tree, fnum2, 0, 0, t, 0, 0);,
@@ -898,7 +893,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                NOTIFY_ACTION_MODIFIED,
                FILE_NOTIFY_CHANGE_LAST_ACCESS, 1);
 
-       printf("Testing set file write time\n");
+       torture_comment(tctx, "Testing set file write time\n");
        NOTIFY_MASK_TEST("Testing set file write time",
                fnum2 = create_complex_file(cli, tctx, BASEDIR "\\tname1");,
                smbcli_fsetatr(cli->tree, fnum2, 0, 0, 0, t, 0);,
@@ -906,7 +901,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                NOTIFY_ACTION_MODIFIED,
                FILE_NOTIFY_CHANGE_LAST_WRITE, 1);
 
-       printf("Testing set file change time\n");
+       torture_comment(tctx, "Testing set file change time\n");
        NOTIFY_MASK_TEST("Testing set file change time",
                fnum2 = create_complex_file(cli, tctx, BASEDIR "\\tname1");,
                smbcli_fsetatr(cli->tree, fnum2, 0, 0, 0, 0, t);,
@@ -915,7 +910,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                0, 1);
 
 
-       printf("Testing write\n");
+       torture_comment(tctx, "Testing write\n");
        NOTIFY_MASK_TEST("Testing write",
                fnum2 = create_complex_file(cli2, tctx, BASEDIR "\\tname1");,
                smbcli_write(cli2->tree, fnum2, 1, &c, 10000, 1);,
@@ -923,7 +918,7 @@ static bool test_notify_mask(struct torture_context *tctx,
                NOTIFY_ACTION_MODIFIED,
                0, 1);
 
-       printf("Testing truncate\n");
+       torture_comment(tctx, "Testing truncate\n");
        NOTIFY_MASK_TEST("Testing truncate",
                fnum2 = create_complex_file(cli2, tctx, BASEDIR "\\tname1");,
                smbcli_ftruncate(cli2->tree, fnum2, 10000);,
@@ -940,7 +935,7 @@ done:
 /*
   basic testing of change notify on files
 */
-static bool test_notify_file(struct torture_context *mem_ctx,
+static bool test_notify_file(struct torture_context *tctx,
                             struct smbcli_state *cli)
 {
        NTSTATUS status;
@@ -952,11 +947,10 @@ static bool test_notify_file(struct torture_context *mem_ctx,
        int fnum;
        const char *fname = BASEDIR "\\file.txt";
 
-       printf("TESTING CHANGE NOTIFY ON FILES\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY ON FILES\n");
 
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        io.generic.level = RAW_OPEN_NTCREATEX;
        io.ntcreatex.in.root_fid.fnum = 0;
@@ -970,8 +964,8 @@ static bool test_notify_file(struct torture_context *mem_ctx,
        io.ntcreatex.in.impersonation = NTCREATEX_IMPERSONATION_ANONYMOUS;
        io.ntcreatex.in.security_flags = 0;
        io.ntcreatex.in.fname = fname;
-       status = smb_raw_open(cli->tree, mem_ctx, &io);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
        fnum = io.ntcreatex.out.file.fnum;
 
@@ -983,11 +977,11 @@ static bool test_notify_file(struct torture_context *mem_ctx,
        notify.nttrans.in.completion_filter = FILE_NOTIFY_CHANGE_STREAM_NAME;
        notify.nttrans.in.recursive = false;
 
-       printf("Testing if notifies on file handles are invalid (should be)\n");
+       torture_comment(tctx, "Testing if notifies on file handles are invalid (should be)\n");
 
        req = smb_raw_changenotify_send(cli->tree, &notify);
-       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-       torture_assert_ntstatus_equal_goto(mem_ctx, status,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_equal_goto(tctx, status,
                                           NT_STATUS_INVALID_PARAMETER,
                                           ret, done,
                                           "smb_raw_changenotify_recv");
@@ -996,11 +990,11 @@ static bool test_notify_file(struct torture_context *mem_ctx,
        cl.close.in.file.fnum = fnum;
        cl.close.in.write_time = 0;
        status = smb_raw_close(cli->tree, &cl);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_close");
 
        status = smbcli_unlink(cli->tree, fname);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smbcli_unlink");
 
 done:
@@ -1023,15 +1017,13 @@ static bool test_notify_tdis(struct torture_context *tctx,
        struct smbcli_request *req;
        struct smbcli_state *cli = NULL;
 
-       printf("TESTING CHANGE NOTIFY FOLLOWED BY TDIS\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY FOLLOWED BY TDIS\n");
 
-       if (!torture_setup_dir(cli1, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli1, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
-       if (!torture_open_connection(&cli, tctx, 0)) {
-               return false;
-       }
+       torture_assert(tctx, torture_open_connection(&cli, tctx, 0),
+                      "Failed to open connection.");
 
        /*
          get a handle on the directory
@@ -1095,15 +1087,13 @@ static bool test_notify_exit(struct torture_context *tctx,
        struct smbcli_request *req;
        struct smbcli_state *cli = NULL;
 
-       printf("TESTING CHANGE NOTIFY FOLLOWED BY EXIT\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY FOLLOWED BY EXIT\n");
 
-       if (!torture_setup_dir(cli1, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli1, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
-       if (!torture_open_connection(&cli, tctx, 0)) {
-               return false;
-       }
+       torture_assert(tctx, torture_open_connection(&cli, tctx, 0),
+                      "Failed to open connection.");
 
        /*
          get a handle on the directory
@@ -1166,15 +1156,13 @@ static bool test_notify_ulogoff(struct torture_context *tctx,
        struct smbcli_request *req;
        struct smbcli_state *cli = NULL;
 
-       printf("TESTING CHANGE NOTIFY FOLLOWED BY ULOGOFF\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY FOLLOWED BY ULOGOFF\n");
 
-       if (!torture_setup_dir(cli1, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli1, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
-       if (!torture_open_connection(&cli, tctx, 0)) {
-               return false;
-       }
+       torture_assert(tctx, torture_open_connection(&cli, tctx, 0),
+                      "Failed to open connection.");
 
        /*
          get a handle on the directory
@@ -1244,15 +1232,13 @@ static bool test_notify_tcp_dis(struct torture_context *tctx,
        struct smbcli_request *req;
        struct smbcli_state *cli = NULL;
 
-       printf("TESTING CHANGE NOTIFY FOLLOWED BY TCP DISCONNECT\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY FOLLOWED BY TCP DISCONNECT\n");
 
-       if (!torture_setup_dir(cli1, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli1, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
-       if (!torture_open_connection(&cli, tctx, 0)) {
-               return false;
-       }
+       torture_assert(tctx, torture_open_connection(&cli, tctx, 0),
+                      "Failed to open connection.");
 
        /*
          get a handle on the directory
@@ -1302,7 +1288,7 @@ done:
 /* 
    test setting up two change notify requests on one handle
 */
-static bool test_notify_double(struct torture_context *mem_ctx,
+static bool test_notify_double(struct torture_context *tctx,
                               struct smbcli_state *cli)
 {
        bool ret = true;
@@ -1312,11 +1298,11 @@ static bool test_notify_double(struct torture_context *mem_ctx,
        int fnum;
        struct smbcli_request *req1, *req2;
 
-       printf("TESTING CHANGE NOTIFY TWICE ON ONE DIRECTORY\n");
-               
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_comment(tctx, "TESTING CHANGE NOTIFY TWICE ON ONE DIRECTORY\n");
+
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
+
        /*
          get a handle on the directory
        */
@@ -1333,8 +1319,8 @@ static bool test_notify_double(struct torture_context *mem_ctx,
        io.ntcreatex.in.security_flags = 0;
        io.ntcreatex.in.fname = BASEDIR;
 
-       status = smb_raw_open(cli->tree, mem_ctx, &io);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
        fnum = io.ntcreatex.out.file.fnum;
 
@@ -1351,22 +1337,22 @@ static bool test_notify_double(struct torture_context *mem_ctx,
 
        smbcli_mkdir(cli->tree, BASEDIR "\\subdir-name");
 
-       status = smb_raw_changenotify_recv(req1, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req1, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
 
        smbcli_mkdir(cli->tree, BASEDIR "\\subdir-name2");
 
-       status = smb_raw_changenotify_recv(req2, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req2, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "subdir-name2",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name2",
                   STR_UNICODE);
 
 done:
@@ -1379,7 +1365,7 @@ done:
 /* 
    test multiple change notifies at different depths and with/without recursion
 */
-static bool test_notify_tree(struct torture_context *mem_ctx,
+static bool test_notify_tree(struct torture_context *tctx,
                             struct smbcli_state *cli,
                             struct smbcli_state *cli2)
 {
@@ -1421,11 +1407,10 @@ static bool test_notify_tree(struct torture_context *mem_ctx,
        NTSTATUS status;
        bool all_done = false;
 
-       printf("TESTING CHANGE NOTIFY FOR DIFFERENT DEPTHS\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY FOR DIFFERENT DEPTHS\n");
 
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        io.generic.level = RAW_OPEN_NTCREATEX;
        io.ntcreatex.in.root_fid.fnum = 0;
@@ -1447,8 +1432,8 @@ static bool test_notify_tree(struct torture_context *mem_ctx,
        */
        for (i=0;i<ARRAY_SIZE(dirs);i++) {
                io.ntcreatex.in.fname = dirs[i].path;
-               status = smb_raw_open(cli->tree, mem_ctx, &io);
-               torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+               status = smb_raw_open(cli->tree, tctx, &io);
+               torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                                "smb_raw_open");
                dirs[i].fnum = io.ntcreatex.out.file.fnum;
 
@@ -1457,8 +1442,8 @@ static bool test_notify_tree(struct torture_context *mem_ctx,
                notify.nttrans.in.recursive = dirs[i].recursive;
                req = smb_raw_changenotify_send(cli->tree, &notify);
                smb_raw_ntcancel(req);
-               status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
-               torture_assert_ntstatus_equal_goto(mem_ctx, status,
+               status = smb_raw_changenotify_recv(req, tctx, &notify);
+               torture_assert_ntstatus_equal_goto(tctx, status,
                                                   NT_STATUS_CANCELLED,
                                                   ret, done,
                                                   "smb_raw_changenotify_recv");
@@ -1466,7 +1451,7 @@ static bool test_notify_tree(struct torture_context *mem_ctx,
 
        /* trigger 2 events in each dir */
        for (i=0;i<ARRAY_SIZE(dirs);i++) {
-               char *path = talloc_asprintf(mem_ctx, "%s\\test.dir", dirs[i].path);
+               char *path = talloc_asprintf(tctx, "%s\\test.dir", dirs[i].path);
                /*
                 * Make notifies a bit more interesting in a cluster
                 * by doing the changes against different nodes with
@@ -1487,7 +1472,7 @@ static bool test_notify_tree(struct torture_context *mem_ctx,
                        req = smb_raw_changenotify_send(cli->tree, &notify);
                        smb_raw_ntcancel(req);
                        notify.nttrans.out.num_changes = 0;
-                       status = smb_raw_changenotify_recv(req, mem_ctx, &notify);
+                       status = smb_raw_changenotify_recv(req, tctx, &notify);
                        dirs[i].counted += notify.nttrans.out.num_changes;
                }
                
@@ -1500,14 +1485,14 @@ static bool test_notify_tree(struct torture_context *mem_ctx,
                }
        } while (!all_done && timeval_elapsed(&tv) < 20);
 
-       printf("took %.4f seconds to propogate all events\n", timeval_elapsed(&tv));
+       torture_comment(tctx, "took %.4f seconds to propogate all events\n", timeval_elapsed(&tv));
 
        for (i=0;i<ARRAY_SIZE(dirs);i++) {
-               if (dirs[i].counted != dirs[i].expected) {
-                       printf("ERROR: i=%d expected %d got %d for '%s'\n",
-                              i, dirs[i].expected, dirs[i].counted, dirs[i].path);
-                       ret = false;
-               }
+               torture_assert_int_equal_goto(tctx,
+                       dirs[i].counted, dirs[i].expected, ret, done,
+                       talloc_asprintf(tctx,
+                                       "unexpected number of events for '%s'",
+                                       dirs[i].path));
        }
 
        /*
@@ -1528,7 +1513,7 @@ done:
    Test response when cached server events exceed single NT NOTFIY response
    packet size.
 */
-static bool test_notify_overflow(struct torture_context *mem_ctx,
+static bool test_notify_overflow(struct torture_context *tctx,
                                 struct smbcli_state *cli)
 {
        bool ret = true;
@@ -1540,11 +1525,10 @@ static bool test_notify_overflow(struct torture_context *mem_ctx,
        struct smbcli_request *req1;
        int i;
 
-       printf("TESTING CHANGE NOTIFY EVENT OVERFLOW\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY EVENT OVERFLOW\n");
 
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        /* get a handle on the directory */
        io.generic.level = RAW_OPEN_NTCREATEX;
@@ -1561,8 +1545,8 @@ static bool test_notify_overflow(struct torture_context *mem_ctx,
        io.ntcreatex.in.security_flags = 0;
        io.ntcreatex.in.fname = BASEDIR;
 
-       status = smb_raw_open(cli->tree, mem_ctx, &io);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
        fnum = io.ntcreatex.out.file.fnum;
 
@@ -1577,35 +1561,32 @@ static bool test_notify_overflow(struct torture_context *mem_ctx,
 
        /* cancel initial requests so the buffer is setup */
        smb_raw_ntcancel(req1);
-       status = smb_raw_changenotify_recv(req1, mem_ctx, &notify);
-       torture_assert_ntstatus_equal_goto(mem_ctx, status,
+       status = smb_raw_changenotify_recv(req1, tctx, &notify);
+       torture_assert_ntstatus_equal_goto(tctx, status,
                                           NT_STATUS_CANCELLED,
                                           ret, done,
                                           "smb_raw_changenotify_recv");
 
        /* open a lot of files, filling up the server side notify buffer */
-       printf("Testing overflowed buffer notify on create of %d files\n",
+       torture_comment(tctx, "Testing overflowed buffer notify on create of %d files\n",
               count);
        for (i=0;i<count;i++) {
                char *fname = talloc_asprintf(cli, BASEDIR "\\test%d.txt", i);
                int fnum2 = smbcli_open(cli->tree, fname, O_CREAT|O_RDWR,
                                        DENY_NONE);
-               if (fnum2 == -1) {
-                       printf("Failed to create %s - %s\n",
-                              fname, smbcli_errstr(cli->tree));
-                       ret = false;
-                       goto done;
-               }
+               torture_assert_int_not_equal_goto(tctx, fnum2, -1, ret, done,
+                       talloc_asprintf(tctx, "Failed to create %s - %s",
+                                       fname, smbcli_errstr(cli->tree)));
                talloc_free(fname);
                smbcli_close(cli->tree, fnum2);
        }
 
        /* expect that 0 events will be returned with NT_STATUS_OK */
        req1 = smb_raw_changenotify_send(cli->tree, &notify);
-       status = smb_raw_changenotify_recv(req1, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req1, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      0, ret, done, "no changes expected");
 
 done:
@@ -1618,7 +1599,7 @@ done:
    Test if notifications are returned for changes to the base directory.
    They shouldn't be.
 */
-static bool test_notify_basedir(struct torture_context *mem_ctx,
+static bool test_notify_basedir(struct torture_context *tctx,
                                struct smbcli_state *cli)
 {
        bool ret = true;
@@ -1628,11 +1609,10 @@ static bool test_notify_basedir(struct torture_context *mem_ctx,
        int fnum;
        struct smbcli_request *req1;
 
-       printf("TESTING CHANGE NOTIFY BASEDIR EVENTS\n");
+       torture_comment(tctx, "TESTING CHANGE NOTIFY BASEDIR EVENTS\n");
 
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        /* get a handle on the directory */
        io.generic.level = RAW_OPEN_NTCREATEX;
@@ -1649,8 +1629,8 @@ static bool test_notify_basedir(struct torture_context *mem_ctx,
        io.ntcreatex.in.security_flags = 0;
        io.ntcreatex.in.fname = BASEDIR;
 
-       status = smb_raw_open(cli->tree, mem_ctx, &io);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
        fnum = io.ntcreatex.out.file.fnum;
 
@@ -1675,16 +1655,16 @@ static bool test_notify_basedir(struct torture_context *mem_ctx,
        smb_msleep(200);
 
        /* check how many responses were given, expect only 1 for the file */
-       status = smb_raw_changenotify_recv(req1, mem_ctx, &notify);
-       torture_assert_ntstatus_ok_goto(mem_ctx, status, ret, done,
+       status = smb_raw_changenotify_recv(req1, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(mem_ctx, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of  changes");
-       torture_assert_int_equal_goto(mem_ctx,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_MODIFIED, ret, done,
                                      "wrong action (exp: MODIFIED)");
-       CHECK_WSTR(mem_ctx, notify.nttrans.out.changes[0].name, "tname1",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "tname1",
                   STR_UNICODE);
 
 done:
@@ -1709,7 +1689,7 @@ static struct smbcli_tree *secondary_tcon(struct smbcli_state *cli,
        share = torture_setting_string(tctx, "share", NULL);
        host  = torture_setting_string(tctx, "host", NULL);
        
-       printf("create a second tree context on the same session\n");
+       torture_comment(tctx, "create a second tree context on the same session\n");
        tree = smbcli_tree_init(cli->session, tctx, false);
 
        tcon.generic.level = RAW_TCON_TCONX;
@@ -1720,12 +1700,12 @@ static struct smbcli_tree *secondary_tcon(struct smbcli_state *cli,
        status = smb_raw_tcon(tree, tctx, &tcon);
        if (!NT_STATUS_IS_OK(status)) {
                talloc_free(tree);
-               printf("Failed to create secondary tree\n");
+               torture_comment(tctx, "Failed to create secondary tree\n");
                return NULL;
        }
 
        tree->tid = tcon.tconx.out.tid;
-       printf("tid1=%d tid2=%d\n", cli->tree->tid, tree->tid);
+       torture_comment(tctx, "tid1=%d tid2=%d\n", cli->tree->tid, tree->tid);
 
        return tree;
 }
@@ -1734,7 +1714,7 @@ static struct smbcli_tree *secondary_tcon(struct smbcli_state *cli,
 /* 
    very simple change notify test
 */
-static bool test_notify_tcon(struct torture_context *torture,
+static bool test_notify_tcon(struct torture_context *tctx,
                             struct smbcli_state *cli)
 {
        bool ret = true;
@@ -1746,11 +1726,10 @@ static bool test_notify_tcon(struct torture_context *torture,
        extern int torture_numops;
        struct smbcli_tree *tree = NULL;
                
-       printf("TESTING SIMPLE CHANGE NOTIFY\n");
-               
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_comment(tctx, "TESTING SIMPLE CHANGE NOTIFY\n");
+
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        /*
          get a handle on the directory
@@ -1768,13 +1747,13 @@ static bool test_notify_tcon(struct torture_context *torture,
        io.ntcreatex.in.security_flags = 0;
        io.ntcreatex.in.fname = BASEDIR;
 
-       status = smb_raw_open(cli->tree, torture, &io);
-       torture_assert_ntstatus_ok_goto(torture, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
        fnum = io.ntcreatex.out.file.fnum;
 
-       status = smb_raw_open(cli->tree, torture, &io);
-       torture_assert_ntstatus_ok_goto(torture, status, ret, done,
+       status = smb_raw_open(cli->tree, tctx, &io);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_open");
 
        /* ask for a change notify,
@@ -1785,119 +1764,121 @@ static bool test_notify_tcon(struct torture_context *torture,
        notify.nttrans.in.file.fnum = fnum;
        notify.nttrans.in.recursive = true;
 
-       printf("Testing notify mkdir\n");
+       torture_comment(tctx, "Testing notify mkdir\n");
        req = smb_raw_changenotify_send(cli->tree, &notify);
        smbcli_mkdir(cli->tree, BASEDIR "\\subdir-name");
 
-       status = smb_raw_changenotify_recv(req, torture, &notify);
-       torture_assert_ntstatus_ok_goto(torture, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(torture, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(torture,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_ADDED, ret, done,
                                      "wrong action (exp: ADDED)");
-       CHECK_WSTR(torture, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
 
-       printf("Testing notify rmdir\n");
+       torture_comment(tctx, "Testing notify rmdir\n");
        req = smb_raw_changenotify_send(cli->tree, &notify);
        smbcli_rmdir(cli->tree, BASEDIR "\\subdir-name");
 
-       status = smb_raw_changenotify_recv(req, torture, &notify);
-       torture_assert_ntstatus_ok_goto(torture, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(torture, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(torture,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(torture, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
 
-       printf("SIMPLE CHANGE NOTIFY OK\n");
+       torture_comment(tctx, "SIMPLE CHANGE NOTIFY OK\n");
 
-       printf("TESTING WITH SECONDARY TCON\n");
-       tree = secondary_tcon(cli, torture);
+       torture_comment(tctx, "TESTING WITH SECONDARY TCON\n");
+       tree = secondary_tcon(cli, tctx);
+       torture_assert_not_null_goto(tctx, tree, ret, done,
+                                    "failed to create secondary tcon");
 
-       printf("Testing notify mkdir\n");
+       torture_comment(tctx, "Testing notify mkdir\n");
        req = smb_raw_changenotify_send(cli->tree, &notify);
        smbcli_mkdir(cli->tree, BASEDIR "\\subdir-name");
 
-       status = smb_raw_changenotify_recv(req, torture, &notify);
-       torture_assert_ntstatus_ok_goto(torture, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(torture, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(torture,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_ADDED, ret, done,
                                      "wrong action (exp: ADDED)");
-       CHECK_WSTR(torture, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
 
-       printf("Testing notify rmdir\n");
+       torture_comment(tctx, "Testing notify rmdir\n");
        req = smb_raw_changenotify_send(cli->tree, &notify);
        smbcli_rmdir(cli->tree, BASEDIR "\\subdir-name");
 
-       status = smb_raw_changenotify_recv(req, torture, &notify);
-       torture_assert_ntstatus_ok_goto(torture, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(torture, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(torture,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(torture, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
 
-       printf("CHANGE NOTIFY WITH TCON OK\n");
+       torture_comment(tctx, "CHANGE NOTIFY WITH TCON OK\n");
 
-       printf("Disconnecting secondary tree\n");
+       torture_comment(tctx, "Disconnecting secondary tree\n");
        status = smb_tree_disconnect(tree);
-       torture_assert_ntstatus_ok_goto(torture, status, ret, done,
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_tree_disconnect");
        talloc_free(tree);
 
-       printf("Testing notify mkdir\n");
+       torture_comment(tctx, "Testing notify mkdir\n");
        req = smb_raw_changenotify_send(cli->tree, &notify);
        smbcli_mkdir(cli->tree, BASEDIR "\\subdir-name");
 
-       status = smb_raw_changenotify_recv(req, torture, &notify);
-       torture_assert_ntstatus_ok_goto(torture, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
 
-       torture_assert_int_equal_goto(torture, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(torture,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_ADDED, ret, done,
                                      "wrong action (exp: ADDED)");
-       CHECK_WSTR(torture, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
 
-       printf("Testing notify rmdir\n");
+       torture_comment(tctx, "Testing notify rmdir\n");
        req = smb_raw_changenotify_send(cli->tree, &notify);
        smbcli_rmdir(cli->tree, BASEDIR "\\subdir-name");
 
-       status = smb_raw_changenotify_recv(req, torture, &notify);
-       torture_assert_ntstatus_ok_goto(torture, status, ret, done,
+       status = smb_raw_changenotify_recv(req, tctx, &notify);
+       torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
                                        "smb_raw_changenotify_recv");
-       torture_assert_int_equal_goto(torture, notify.nttrans.out.num_changes,
+       torture_assert_int_equal_goto(tctx, notify.nttrans.out.num_changes,
                                      1, ret, done, "wrong number of changes");
-       torture_assert_int_equal_goto(torture,
+       torture_assert_int_equal_goto(tctx,
                                      notify.nttrans.out.changes[0].action,
                                      NOTIFY_ACTION_REMOVED, ret, done,
                                      "wrong action (exp: REMOVED)");
-       CHECK_WSTR(torture, notify.nttrans.out.changes[0].name, "subdir-name",
+       CHECK_WSTR(tctx, notify.nttrans.out.changes[0].name, "subdir-name",
                   STR_UNICODE);
 
-       printf("CHANGE NOTIFY WITH TDIS OK\n");
+       torture_comment(tctx, "CHANGE NOTIFY WITH TDIS OK\n");
 done:
        smb_raw_exit(cli->session);
        smbcli_deltree(cli->tree, BASEDIR);
@@ -1926,9 +1907,8 @@ static bool test_notify_alignment(struct torture_context *tctx,
 
        torture_comment(tctx, "TESTING CHANGE NOTIFY REPLY ALIGNMENT\n");
 
-       if (!torture_setup_dir(cli, BASEDIR)) {
-               return false;
-       }
+       torture_assert(tctx, torture_setup_dir(cli, BASEDIR),
+                      "Failed to setup up test directory: " BASEDIR);
 
        /* get a handle on the directory */
        io.generic.level = RAW_OPEN_NTCREATEX;
@@ -1946,7 +1926,7 @@ static bool test_notify_alignment(struct torture_context *tctx,
        io.ntcreatex.in.fname = BASEDIR;
 
        status = smb_raw_open(cli->tree, tctx, &io);
-       torture_assert_ntstatus_ok(tctx, status, "");
+       torture_assert_ntstatus_ok(tctx, status, "smb_raw_open");
        fnum = io.ntcreatex.out.file.fnum;
 
        /* ask for a change notify, on file creation */
@@ -1964,7 +1944,7 @@ static bool test_notify_alignment(struct torture_context *tctx,
        smbcli_close(cli->tree, fnum2);
 
        status = smb_raw_changenotify_recv(req, tctx, &notify);
-       torture_assert_ntstatus_ok(tctx, status, "");
+       torture_assert_ntstatus_ok(tctx, status, "smb_raw_changenotify_recv");
 
        /* create 4 files that will cause CHANGE_NOTIFY_INFO structures
         * to be returned in the same packet with all possible 4-byte padding
@@ -1984,7 +1964,7 @@ static bool test_notify_alignment(struct torture_context *tctx,
         * the alignment checking for us. */
        req = smb_raw_changenotify_send(cli->tree, &notify);
        status = smb_raw_changenotify_recv(req, tctx, &notify);
-       torture_assert_ntstatus_ok(tctx, status, "");
+       torture_assert_ntstatus_ok(tctx, status, "smb_raw_changenotify_recv");
 
        /* Do basic checking for correctness. */
        torture_assert(tctx, notify.nttrans.out.num_changes == num_names, "");