r25554: Convert last instances of BOOL, True and False to the standard types.
[amitay/samba.git] / source4 / torture / basic / delaywrite.c
index 2c26f21ddc97af30ae9fcd3bf451e80056f6fa68..8928754e1a224d8d0303dab17547613298838856 100644 (file)
@@ -9,7 +9,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
@@ -18,8 +18,7 @@
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
 #include "system/time.h"
 #include "system/filesys.h"
 #include "libcli/libcli.h"
+#include "torture/util.h"
 
 #define BASEDIR "\\delaywrite"
 
-static BOOL test_delayed_write_update(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
+static bool test_delayed_write_update(struct torture_context *tctx, struct smbcli_state *cli)
 {
        union smb_fileinfo finfo1, finfo2;
        const char *fname = BASEDIR "\\torture_file.txt";
        NTSTATUS status;
        int fnum1 = -1;
-       BOOL ret = True;
+       bool ret = true;
        ssize_t written;
        time_t t;
 
-       printf("Testing delayed update of write time\n");
-
        if (!torture_setup_dir(cli, BASEDIR)) {
-               return False;
+               return false;
        }
 
        fnum1 = smbcli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE);
        if (fnum1 == -1) {
-               printf("Failed to open %s\n", fname);
-               return False;
+               torture_comment(tctx, "Failed to open %s\n", fname);
+               return false;
        }
 
        finfo1.basic_info.level = RAW_FILEINFO_BASIC_INFO;
-       finfo1.basic_info.in.fnum = fnum1;
+       finfo1.basic_info.in.file.fnum = fnum1;
        finfo2 = finfo1;
 
-       status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo1);
+       status = smb_raw_fileinfo(cli->tree, tctx, &finfo1);
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-               return False;
+               return false;
        }
        
-       printf("Initial write time %s\n", 
-              nt_time_string(mem_ctx, finfo1.basic_info.out.write_time));
+       torture_comment(tctx, "Initial write time %s\n", 
+              nt_time_string(tctx, finfo1.basic_info.out.write_time));
 
        /* 3 second delay to ensure we get past any 2 second time
           granularity (older systems may have that) */
@@ -74,25 +72,25 @@ static BOOL test_delayed_write_update(struct smbcli_state *cli, TALLOC_CTX *mem_
        written =  smbcli_write(cli->tree, fnum1, 0, "x", 0, 1);
 
        if (written != 1) {
-               printf("write failed - wrote %d bytes (%s)\n", 
+               torture_comment(tctx, "write failed - wrote %d bytes (%s)\n", 
                       (int)written, __location__);
-               return False;
+               return false;
        }
 
        t = time(NULL);
 
        while (time(NULL) < t+120) {
-               status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo2);
+               status = smb_raw_fileinfo(cli->tree, tctx, &finfo2);
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-                       ret = False;
+                       ret = false;
                        break;
                }
-               printf("write time %s\n", 
-                      nt_time_string(mem_ctx, finfo2.basic_info.out.write_time));
+               torture_comment(tctx, "write time %s\n", 
+                      nt_time_string(tctx, finfo2.basic_info.out.write_time));
                if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
-                       printf("Server updated write_time after %d seconds\n",
+                       torture_comment(tctx, "Server updated write_time after %d seconds\n",
                               (int)(time(NULL) - t));
                        break;
                }
@@ -101,8 +99,8 @@ static BOOL test_delayed_write_update(struct smbcli_state *cli, TALLOC_CTX *mem_
        }
        
        if (finfo1.basic_info.out.write_time == finfo2.basic_info.out.write_time) {
-               printf("Server did not update write time?!\n");
-               ret = False;
+               torture_comment(tctx, "Server did not update write time?!\n");
+               ret = false;
        }
 
 
@@ -118,48 +116,42 @@ static BOOL test_delayed_write_update(struct smbcli_state *cli, TALLOC_CTX *mem_
  * Do as above, but using 2 connections.
  */
 
-static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
+static bool test_delayed_write_update2(struct torture_context *tctx, struct smbcli_state *cli, 
+                                                                          struct smbcli_state *cli2)
 {
-       struct smbcli_state *cli2=NULL;
        union smb_fileinfo finfo1, finfo2;
        const char *fname = BASEDIR "\\torture_file.txt";
        NTSTATUS status;
        int fnum1 = -1;
        int fnum2 = -1;
-       BOOL ret = True;
+       bool ret = true;
        ssize_t written;
        time_t t;
-       struct smb_flush flsh;
-
-       printf("Testing delayed update of write time using 2 connections\n");
-
-       if (!torture_open_connection(&cli2)) {
-               return False;
-       }
+       union smb_flush flsh;
 
        if (!torture_setup_dir(cli, BASEDIR)) {
-               return False;
+               return false;
        }
 
        fnum1 = smbcli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE);
        if (fnum1 == -1) {
-               printf("Failed to open %s\n", fname);
-               return False;
+               torture_comment(tctx, "Failed to open %s\n", fname);
+               return false;
        }
 
        finfo1.basic_info.level = RAW_FILEINFO_BASIC_INFO;
-       finfo1.basic_info.in.fnum = fnum1;
+       finfo1.basic_info.in.file.fnum = fnum1;
        finfo2 = finfo1;
 
-       status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo1);
+       status = smb_raw_fileinfo(cli->tree, tctx, &finfo1);
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-               return False;
+               return false;
        }
        
-       printf("Initial write time %s\n", 
-              nt_time_string(mem_ctx, finfo1.basic_info.out.write_time));
+       torture_comment(tctx, "Initial write time %s\n", 
+              nt_time_string(tctx, finfo1.basic_info.out.write_time));
 
        /* 3 second delay to ensure we get past any 2 second time
           granularity (older systems may have that) */
@@ -170,7 +162,7 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
                union smb_setfileinfo sfinfo;
                time_t t_set = time(NULL);
                sfinfo.basic_info.level = RAW_SFILEINFO_BASIC_INFO;
-               sfinfo.basic_info.file.fnum = fnum1;
+               sfinfo.basic_info.in.file.fnum = fnum1;
                sfinfo.basic_info.in.create_time = finfo1.basic_info.out.create_time;
                sfinfo.basic_info.in.access_time = finfo1.basic_info.out.access_time;
 
@@ -188,26 +180,26 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0, ("sfileinfo failed: %s\n", nt_errstr(status)));
-                       return False;
+                       return false;
                }
        }
 
        t = time(NULL);
 
        while (time(NULL) < t+120) {
-               finfo2.basic_info.in.fname = fname;
+               finfo2.basic_info.in.file.path = fname;
        
-               status = smb_raw_pathinfo(cli2->tree, mem_ctx, &finfo2);
+               status = smb_raw_pathinfo(cli2->tree, tctx, &finfo2);
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-                       ret = False;
+                       ret = false;
                        break;
                }
-               printf("write time %s\n", 
-                      nt_time_string(mem_ctx, finfo2.basic_info.out.write_time));
+               torture_comment(tctx, "write time %s\n", 
+                      nt_time_string(tctx, finfo2.basic_info.out.write_time));
                if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
-                       printf("Server updated write_time after %d seconds\n",
+                       torture_comment(tctx, "Server updated write_time after %d seconds\n",
                               (int)(time(NULL) - t));
                        break;
                }
@@ -216,47 +208,48 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
        }
        
        if (finfo1.basic_info.out.write_time == finfo2.basic_info.out.write_time) {
-               printf("Server did not update write time?!\n");
-               ret = False;
+               torture_comment(tctx, "Server did not update write time?!\n");
+               ret = false;
        }
 
        /* Now try a write to see if the write time gets reset. */
 
        finfo1.basic_info.level = RAW_FILEINFO_BASIC_INFO;
-       finfo1.basic_info.in.fnum = fnum1;
+       finfo1.basic_info.in.file.fnum = fnum1;
        finfo2 = finfo1;
 
-       status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo1);
+       status = smb_raw_fileinfo(cli->tree, tctx, &finfo1);
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-               return False;
+               return false;
        }
        
-       printf("Modified write time %s\n", 
-              nt_time_string(mem_ctx, finfo1.basic_info.out.write_time));
+       torture_comment(tctx, "Modified write time %s\n", 
+              nt_time_string(tctx, finfo1.basic_info.out.write_time));
 
 
-       printf("Doing a 10 byte write to extend the file and see if this changes the last write time.\n");
+       torture_comment(tctx, "Doing a 10 byte write to extend the file and see if this changes the last write time.\n");
 
        written =  smbcli_write(cli->tree, fnum1, 0, "0123456789", 1, 10);
 
        if (written != 10) {
-               printf("write failed - wrote %d bytes (%s)\n", 
+               torture_comment(tctx, "write failed - wrote %d bytes (%s)\n", 
                       (int)written, __location__);
-               return False;
+               return false;
        }
 
        /* Just to prove to tridge that the an smbflush has no effect on
           the write time :-). The setfileinfo IS STICKY. JRA. */
 
-       printf("Doing flush after write\n");
+       torture_comment(tctx, "Doing flush after write\n");
 
-       flsh.in.fnum = fnum1;
+       flsh.flush.level        = RAW_FLUSH_FLUSH;
+       flsh.flush.in.file.fnum = fnum1;
        status = smb_raw_flush(cli->tree, &flsh);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("smbflush failed: %s\n", nt_errstr(status)));
-               return False;
+               return false;
        }
 
        t = time(NULL);
@@ -265,17 +258,17 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
           don't have any effect. But make sure. */
 
        while (time(NULL) < t+15) {
-               status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo2);
+               status = smb_raw_fileinfo(cli->tree, tctx, &finfo2);
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-                       ret = False;
+                       ret = false;
                        break;
                }
-               printf("write time %s\n", 
-                      nt_time_string(mem_ctx, finfo2.basic_info.out.write_time));
+               torture_comment(tctx, "write time %s\n", 
+                      nt_time_string(tctx, finfo2.basic_info.out.write_time));
                if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
-                       printf("Server updated write_time after %d seconds\n",
+                       torture_comment(tctx, "Server updated write_time after %d seconds\n",
                               (int)(time(NULL) - t));
                        break;
                }
@@ -284,64 +277,64 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
        }
        
        if (finfo1.basic_info.out.write_time == finfo2.basic_info.out.write_time) {
-               printf("Server did not update write time\n");
+               torture_comment(tctx, "Server did not update write time\n");
        }
 
        fnum2 = smbcli_open(cli->tree, fname, O_RDWR, DENY_NONE);
        if (fnum2 == -1) {
-               printf("Failed to open %s\n", fname);
-               return False;
+               torture_comment(tctx, "Failed to open %s\n", fname);
+               return false;
        }
        
-       printf("Doing a 10 byte write to extend the file via second fd and see if this changes the last write time.\n");
+       torture_comment(tctx, "Doing a 10 byte write to extend the file via second fd and see if this changes the last write time.\n");
 
        written =  smbcli_write(cli->tree, fnum2, 0, "0123456789", 11, 10);
 
        if (written != 10) {
-               printf("write failed - wrote %d bytes (%s)\n", 
+               torture_comment(tctx, "write failed - wrote %d bytes (%s)\n", 
                       (int)written, __location__);
-               return False;
+               return false;
        }
 
-       status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo2);
+       status = smb_raw_fileinfo(cli->tree, tctx, &finfo2);
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-               return False;
+               return false;
        }
-       printf("write time %s\n", 
-              nt_time_string(mem_ctx, finfo2.basic_info.out.write_time));
+       torture_comment(tctx, "write time %s\n", 
+              nt_time_string(tctx, finfo2.basic_info.out.write_time));
        if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
-               printf("Server updated write_time\n");
+               torture_comment(tctx, "Server updated write_time\n");
        }
 
-       printf("Closing the first fd to see if write time updated.\n");
+       torture_comment(tctx, "Closing the first fd to see if write time updated.\n");
        smbcli_close(cli->tree, fnum1);
        fnum1 = -1;
 
-       printf("Doing a 10 byte write to extend the file via second fd and see if this changes the last write time.\n");
+       torture_comment(tctx, "Doing a 10 byte write to extend the file via second fd and see if this changes the last write time.\n");
 
        written =  smbcli_write(cli->tree, fnum2, 0, "0123456789", 21, 10);
 
        if (written != 10) {
-               printf("write failed - wrote %d bytes (%s)\n", 
+               torture_comment(tctx, "write failed - wrote %d bytes (%s)\n", 
                       (int)written, __location__);
-               return False;
+               return false;
        }
 
        finfo1.basic_info.level = RAW_FILEINFO_BASIC_INFO;
-       finfo1.basic_info.in.fnum = fnum2;
+       finfo1.basic_info.in.file.fnum = fnum2;
        finfo2 = finfo1;
-       status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo2);
+       status = smb_raw_fileinfo(cli->tree, tctx, &finfo2);
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-               return False;
+               return false;
        }
-       printf("write time %s\n", 
-              nt_time_string(mem_ctx, finfo2.basic_info.out.write_time));
+       torture_comment(tctx, "write time %s\n", 
+              nt_time_string(tctx, finfo2.basic_info.out.write_time));
        if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
-               printf("Server updated write_time\n");
+               torture_comment(tctx, "Server updated write_time\n");
        }
 
        t = time(NULL);
@@ -350,17 +343,17 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
           don't have any effect. But make sure. */
 
        while (time(NULL) < t+15) {
-               status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo2);
+               status = smb_raw_fileinfo(cli->tree, tctx, &finfo2);
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-                       ret = False;
+                       ret = false;
                        break;
                }
-               printf("write time %s\n", 
-                      nt_time_string(mem_ctx, finfo2.basic_info.out.write_time));
+               torture_comment(tctx, "write time %s\n", 
+                      nt_time_string(tctx, finfo2.basic_info.out.write_time));
                if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
-                       printf("Server updated write_time after %d seconds\n",
+                       torture_comment(tctx, "Server updated write_time after %d seconds\n",
                               (int)(time(NULL) - t));
                        break;
                }
@@ -369,58 +362,58 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
        }
        
        if (finfo1.basic_info.out.write_time == finfo2.basic_info.out.write_time) {
-               printf("Server did not update write time\n");
+               torture_comment(tctx, "Server did not update write time\n");
        }
 
-       printf("Closing both fd's to see if write time updated.\n");
+       torture_comment(tctx, "Closing both fd's to see if write time updated.\n");
 
        smbcli_close(cli->tree, fnum2);
        fnum2 = -1;
 
        fnum1 = smbcli_open(cli->tree, fname, O_RDWR, DENY_NONE);
        if (fnum1 == -1) {
-               printf("Failed to open %s\n", fname);
-               return False;
+               torture_comment(tctx, "Failed to open %s\n", fname);
+               return false;
        }
 
        finfo1.basic_info.level = RAW_FILEINFO_BASIC_INFO;
-       finfo1.basic_info.in.fnum = fnum1;
+       finfo1.basic_info.in.file.fnum = fnum1;
        finfo2 = finfo1;
 
-       status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo1);
+       status = smb_raw_fileinfo(cli->tree, tctx, &finfo1);
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-               return False;
+               return false;
        }
        
-       printf("Second open initial write time %s\n", 
-              nt_time_string(mem_ctx, finfo1.basic_info.out.write_time));
+       torture_comment(tctx, "Second open initial write time %s\n", 
+              nt_time_string(tctx, finfo1.basic_info.out.write_time));
 
        sleep(10);
-       printf("Doing a 10 byte write to extend the file to see if this changes the last write time.\n");
+       torture_comment(tctx, "Doing a 10 byte write to extend the file to see if this changes the last write time.\n");
 
        written =  smbcli_write(cli->tree, fnum1, 0, "0123456789", 31, 10);
 
        if (written != 10) {
-               printf("write failed - wrote %d bytes (%s)\n", 
+               torture_comment(tctx, "write failed - wrote %d bytes (%s)\n", 
                       (int)written, __location__);
-               return False;
+               return false;
        }
 
        finfo1.basic_info.level = RAW_FILEINFO_BASIC_INFO;
-       finfo1.basic_info.in.fnum = fnum1;
+       finfo1.basic_info.in.file.fnum = fnum1;
        finfo2 = finfo1;
-       status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo2);
+       status = smb_raw_fileinfo(cli->tree, tctx, &finfo2);
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-               return False;
+               return false;
        }
-       printf("write time %s\n", 
-              nt_time_string(mem_ctx, finfo2.basic_info.out.write_time));
+       torture_comment(tctx, "write time %s\n", 
+              nt_time_string(tctx, finfo2.basic_info.out.write_time));
        if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
-               printf("Server updated write_time\n");
+               torture_comment(tctx, "Server updated write_time\n");
        }
 
        t = time(NULL);
@@ -429,17 +422,17 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
           don't have any effect. But make sure. */
 
        while (time(NULL) < t+15) {
-               status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo2);
+               status = smb_raw_fileinfo(cli->tree, tctx, &finfo2);
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-                       ret = False;
+                       ret = false;
                        break;
                }
-               printf("write time %s\n", 
-                      nt_time_string(mem_ctx, finfo2.basic_info.out.write_time));
+               torture_comment(tctx, "write time %s\n", 
+                      nt_time_string(tctx, finfo2.basic_info.out.write_time));
                if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
-                       printf("Server updated write_time after %d seconds\n",
+                       torture_comment(tctx, "Server updated write_time after %d seconds\n",
                               (int)(time(NULL) - t));
                        break;
                }
@@ -448,7 +441,7 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
        }
        
        if (finfo1.basic_info.out.write_time == finfo2.basic_info.out.write_time) {
-               printf("Server did not update write time\n");
+               torture_comment(tctx, "Server did not update write time\n");
        }
 
 
@@ -456,9 +449,6 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
           second connection to ensure it's the same. This is very easy for a Windows
           server but a bastard to get right on a POSIX server. JRA. */
 
-       if (cli2 != NULL) {
-               torture_close_connection(cli2);
-       }
        if (fnum1 != -1)
                smbcli_close(cli->tree, fnum1);
        smbcli_unlink(cli->tree, fname);
@@ -478,37 +468,36 @@ static BOOL test_delayed_write_update2(struct smbcli_state *cli, TALLOC_CTX *mem
  * nasty....
  */
 
-static BOOL test_finfo_after_write(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
+static bool test_finfo_after_write(struct torture_context *tctx, struct smbcli_state *cli, 
+                                                                  struct smbcli_state *cli2)
 {
        union smb_fileinfo finfo1, finfo2;
        const char *fname = BASEDIR "\\torture_file.txt";
        NTSTATUS status;
        int fnum1 = -1;
        int fnum2;
-       BOOL ret = True;
+       bool ret = true;
        ssize_t written;
-       struct smbcli_state *cli2=NULL;
-
-       printf("Testing finfo update on close\n");
 
        if (!torture_setup_dir(cli, BASEDIR)) {
-               return False;
+               return false;
        }
 
        fnum1 = smbcli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE);
        if (fnum1 == -1) {
-               ret = False;
+               ret = false;
+               torture_result(tctx, TORTURE_FAIL, __location__": unable to open %s", fname);
                goto done;
        }
 
        finfo1.basic_info.level = RAW_FILEINFO_BASIC_INFO;
-       finfo1.basic_info.in.fnum = fnum1;
+       finfo1.basic_info.in.file.fnum = fnum1;
 
-       status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo1);
+       status = smb_raw_fileinfo(cli->tree, tctx, &finfo1);
 
        if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-               ret = False;
+               ret = false;
+               torture_result(tctx, TORTURE_FAIL, __location__": fileinfo failed: %s", nt_errstr(status));
                goto done;
        }
 
@@ -517,73 +506,68 @@ static BOOL test_finfo_after_write(struct smbcli_state *cli, TALLOC_CTX *mem_ctx
        written =  smbcli_write(cli->tree, fnum1, 0, "x", 0, 1);
 
        if (written != 1) {
-               printf("(%s) written gave %d - should have been 1\n", 
-                      __location__, (int)written);
-               ret = False;
+               torture_result(tctx, TORTURE_FAIL, __location__": written gave %d - should have been 1", (int)written);
+               ret = false;
                goto done;
        }
 
-       if (!torture_open_connection(&cli2)) {
-               return False;
-       }
-
        fnum2 = smbcli_open(cli2->tree, fname, O_RDWR, DENY_NONE);
        if (fnum2 == -1) {
-               printf("(%s) failed to open 2nd time - %s\n", 
-                      __location__, smbcli_errstr(cli2->tree));
-               ret = False;
+               torture_result(tctx, TORTURE_FAIL, __location__": failed to open 2nd time - %s", 
+                      smbcli_errstr(cli2->tree));
+               ret = false;
                goto done;
        }
        
        written =  smbcli_write(cli2->tree, fnum2, 0, "x", 0, 1);
        
        if (written != 1) {
-               printf("(%s) written gave %d - should have been 1\n", 
-                      __location__, (int)written);
-               ret = False;
+               torture_result(tctx, TORTURE_FAIL, __location__": written gave %d - should have been 1", 
+                      (int)written);
+               ret = false;
                goto done;
        }
        
        finfo2.basic_info.level = RAW_FILEINFO_BASIC_INFO;
-       finfo2.basic_info.in.fname = fname;
+       finfo2.basic_info.in.file.path = fname;
        
-       status = smb_raw_pathinfo(cli2->tree, mem_ctx, &finfo2);
+       status = smb_raw_pathinfo(cli2->tree, tctx, &finfo2);
        
        if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(0, ("(%s) fileinfo failed: %s\n", 
-                         __location__, nt_errstr(status)));
-               ret = False;
+               torture_result(tctx, TORTURE_FAIL, __location__": fileinfo failed: %s", 
+                         nt_errstr(status));
+               ret = false;
                goto done;
        }
        
        if (finfo1.basic_info.out.create_time !=
            finfo2.basic_info.out.create_time) {
-               printf("(%s) create_time changed\n", __location__);
-               ret = False;
+               torture_result(tctx, TORTURE_FAIL, __location__": create_time changed");
+               ret = false;
                goto done;
        }
        
        if (finfo1.basic_info.out.access_time !=
            finfo2.basic_info.out.access_time) {
-               printf("(%s) access_time changed\n", __location__);
-               ret = False;
+               torture_result(tctx, TORTURE_FAIL, __location__": access_time changed");
+               ret = false;
                goto done;
        }
        
        if (finfo1.basic_info.out.write_time !=
            finfo2.basic_info.out.write_time) {
-               printf("(%s) write_time changed\n", __location__);
-               printf("write time conn 1 = %s, conn 2 = %s\n", 
-                      nt_time_string(mem_ctx, finfo1.basic_info.out.write_time),
-                      nt_time_string(mem_ctx, finfo2.basic_info.out.write_time));
-               ret = False;
+               torture_result(tctx, TORTURE_FAIL, __location__": write_time changed:\n"
+                                          "write time conn 1 = %s, conn 2 = %s", 
+                      nt_time_string(tctx, finfo1.basic_info.out.write_time),
+                      nt_time_string(tctx, finfo2.basic_info.out.write_time));
+               ret = false;
                goto done;
        }
        
        if (finfo1.basic_info.out.change_time !=
            finfo2.basic_info.out.change_time) {
-               printf("(%s) change_time changed\n", __location__);
-               ret = False;
+               torture_result(tctx, TORTURE_FAIL, __location__": change_time changed");
+               ret = false;
                goto done;
        }
        
@@ -593,18 +577,17 @@ static BOOL test_finfo_after_write(struct smbcli_state *cli, TALLOC_CTX *mem_ctx
         * *not* have updated the stat on disk */
        
        smbcli_close(cli2->tree, fnum2);
-       torture_close_connection(cli2);
        cli2 = NULL;
 
        /* This call is only for the people looking at ethereal :-) */
        finfo2.basic_info.level = RAW_FILEINFO_BASIC_INFO;
-       finfo2.basic_info.in.fname = fname;
+       finfo2.basic_info.in.file.path = fname;
 
-       status = smb_raw_pathinfo(cli->tree, mem_ctx, &finfo2);
+       status = smb_raw_pathinfo(cli->tree, tctx, &finfo2);
 
        if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status)));
-               ret = False;
+               torture_result(tctx, TORTURE_FAIL, __location__": fileinfo failed: %s", nt_errstr(status));
+               ret = false;
                goto done;
        }
 
@@ -613,9 +596,6 @@ static BOOL test_finfo_after_write(struct smbcli_state *cli, TALLOC_CTX *mem_ctx
                smbcli_close(cli->tree, fnum1);
        smbcli_unlink(cli->tree, fname);
        smbcli_deltree(cli->tree, BASEDIR);
-       if (cli2 != NULL) {
-               torture_close_connection(cli2);
-       }
 
        return ret;
 }
@@ -624,23 +604,13 @@ static BOOL test_finfo_after_write(struct smbcli_state *cli, TALLOC_CTX *mem_ctx
 /* 
    testing of delayed update of write_time
 */
-BOOL torture_delay_write(void)
+struct torture_suite *torture_delay_write(void)
 {
-       struct smbcli_state *cli;
-       BOOL ret = True;
-       TALLOC_CTX *mem_ctx;
+       struct torture_suite *suite = torture_suite_create(talloc_autofree_context(), "DELAYWRITE");
 
-       if (!torture_open_connection(&cli)) {
-               return False;
-       }
+       torture_suite_add_2smb_test(suite, "finfo update on close", test_finfo_after_write);
+       torture_suite_add_1smb_test(suite, "delayed update of write time", test_delayed_write_update);
+       torture_suite_add_2smb_test(suite, "delayed update of write time using 2 connections", test_delayed_write_update2);
 
-       mem_ctx = talloc_init("torture_delay_write");
-
-       ret &= test_finfo_after_write(cli, mem_ctx);
-       ret &= test_delayed_write_update(cli, mem_ctx);
-       ret &= test_delayed_write_update2(cli, mem_ctx);
-
-       torture_close_connection(cli);
-       talloc_free(mem_ctx);
-       return ret;
+       return suite;
 }