diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-11-12 09:37:59 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:05:45 -0500 |
commit | 0e255bb542b1f79c32e9295617199ea8d60753d4 (patch) | |
tree | 7762f159a4f72d3670c6e8ba6ce326c3ae070c4e /source4/torture/raw | |
parent | 27859603d7e42550678a2f7dbb2ccd63078a6689 (diff) | |
download | samba-0e255bb542b1f79c32e9295617199ea8d60753d4.tar.gz samba-0e255bb542b1f79c32e9295617199ea8d60753d4.tar.bz2 samba-0e255bb542b1f79c32e9295617199ea8d60753d4.zip |
r3699: - split the delayed write testing out of RAW-WRITE, as it is not yet
clear what the correct behaviour is for delayed stat info update.
- use a common torture_setup_dir() function for setting up a test
directory in torture tests.
(This used to be commit f7fb34715b7d6ea3c35ddd684cfb27459a420339)
Diffstat (limited to 'source4/torture/raw')
-rw-r--r-- | source4/torture/raw/chkpath.c | 7 | ||||
-rw-r--r-- | source4/torture/raw/context.c | 12 | ||||
-rw-r--r-- | source4/torture/raw/ioctl.c | 7 | ||||
-rw-r--r-- | source4/torture/raw/lock.c | 20 | ||||
-rw-r--r-- | source4/torture/raw/mux.c | 15 | ||||
-rw-r--r-- | source4/torture/raw/notify.c | 7 | ||||
-rw-r--r-- | source4/torture/raw/open.c | 7 | ||||
-rw-r--r-- | source4/torture/raw/read.c | 16 | ||||
-rw-r--r-- | source4/torture/raw/rename.c | 8 | ||||
-rw-r--r-- | source4/torture/raw/search.c | 16 | ||||
-rw-r--r-- | source4/torture/raw/seek.c | 4 | ||||
-rw-r--r-- | source4/torture/raw/setfileinfo.c | 5 | ||||
-rw-r--r-- | source4/torture/raw/unlink.c | 4 | ||||
-rw-r--r-- | source4/torture/raw/write.c | 255 |
14 files changed, 35 insertions, 348 deletions
diff --git a/source4/torture/raw/chkpath.c b/source4/torture/raw/chkpath.c index 20bb3f8ebd..4948949886 100644 --- a/source4/torture/raw/chkpath.c +++ b/source4/torture/raw/chkpath.c @@ -223,12 +223,7 @@ BOOL torture_raw_chkpath(void) mem_ctx = talloc_init("torture_raw_chkpath"); - if (smbcli_deltree(cli->tree, BASEDIR) == -1) { - printf("Failed to clean " BASEDIR "\n"); - return False; - } - if (NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Failed to create " BASEDIR " - %s\n", smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/context.c b/source4/torture/raw/context.c index 8f72c6d582..446ada80a6 100644 --- a/source4/torture/raw/context.c +++ b/source4/torture/raw/context.c @@ -70,9 +70,7 @@ static BOOL test_session(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) printf("TESTING SESSION HANDLING\n"); - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -213,9 +211,7 @@ static BOOL test_tree(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) printf("TESTING TREE HANDLING\n"); - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -315,9 +311,7 @@ static BOOL test_pid(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) printf("TESTING PID HANDLING\n"); - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/ioctl.c b/source4/torture/raw/ioctl.c index 50d3566fe8..f050d220eb 100644 --- a/source4/torture/raw/ioctl.c +++ b/source4/torture/raw/ioctl.c @@ -142,12 +142,7 @@ BOOL torture_raw_ioctl(void) mem_ctx = talloc_init("torture_raw_ioctl"); - if (smbcli_deltree(cli->tree, BASEDIR) == -1) { - printf("Failed to clean " BASEDIR "\n"); - return False; - } - if (NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Failed to create " BASEDIR " - %s\n", smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/lock.c b/source4/torture/raw/lock.c index 034c793260..547115c9f5 100644 --- a/source4/torture/raw/lock.c +++ b/source4/torture/raw/lock.c @@ -52,9 +52,7 @@ static BOOL test_lock(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) int fnum; const char *fname = BASEDIR "\\test.txt"; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -190,9 +188,7 @@ static BOOL test_lockx(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) int fnum; const char *fname = BASEDIR "\\test.txt"; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -372,9 +368,7 @@ static BOOL test_pidhigh(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) const char *fname = BASEDIR "\\test.txt"; char c = 1; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -456,9 +450,7 @@ static BOOL test_async(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) time_t t; struct smbcli_request *req; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -609,9 +601,7 @@ static BOOL test_changetype(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) char c = 0; const char *fname = BASEDIR "\\test.txt"; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/mux.c b/source4/torture/raw/mux.c index 79eb485d55..9afbc7c506 100644 --- a/source4/torture/raw/mux.c +++ b/source4/torture/raw/mux.c @@ -315,18 +315,8 @@ BOOL torture_raw_mux(void) mem_ctx = talloc_init("torture_raw_mux"); - /* cleanup */ - if (smbcli_deltree(cli->tree, BASEDIR) == -1) { - printf("(%s) Failed to cleanup " BASEDIR "\n", __location__); - ret = False; - goto done; - } - - - if (NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Failed to create %s\n", BASEDIR); - ret = False; - goto done; + if (!torture_setup_dir(cli, BASEDIR)) { + return False; } if (!test_mux_open(cli, mem_ctx)) { @@ -341,7 +331,6 @@ BOOL torture_raw_mux(void) ret = False; } -done: smb_raw_exit(cli->session); smbcli_deltree(cli->tree, BASEDIR); torture_close_connection(cli); diff --git a/source4/torture/raw/notify.c b/source4/torture/raw/notify.c index 3fff04fc6f..0156f5b251 100644 --- a/source4/torture/raw/notify.c +++ b/source4/torture/raw/notify.c @@ -67,11 +67,8 @@ BOOL torture_raw_notify(void) mem_ctx = talloc_init("torture_raw_notify"); - /* cleanup */ - if (smbcli_deltree(cli->tree, BASEDIR) == -1) { - printf("Failed to cleanup " BASEDIR "\n"); - ret = False; - goto done; + if (!torture_setup_dir(cli, BASEDIR)) { + return False; } /* diff --git a/source4/torture/raw/open.c b/source4/torture/raw/open.c index e299bba254..b80f6278c6 100644 --- a/source4/torture/raw/open.c +++ b/source4/torture/raw/open.c @@ -993,12 +993,7 @@ BOOL torture_raw_open(void) mem_ctx = talloc_init("torture_raw_open"); - if (smbcli_deltree(cli->tree, BASEDIR) == -1) { - printf("Failed to clean " BASEDIR "\n"); - return False; - } - if (NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Failed to create " BASEDIR " - %s\n", smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/read.c b/source4/torture/raw/read.c index 8b76a5a029..ff6d2baa2b 100644 --- a/source4/torture/raw/read.c +++ b/source4/torture/raw/read.c @@ -92,9 +92,7 @@ static BOOL test_read(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) buf = talloc_zero(mem_ctx, maxsize); - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -218,9 +216,7 @@ static BOOL test_lockread(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) buf = talloc_zero(mem_ctx, maxsize); - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -363,9 +359,7 @@ static BOOL test_readx(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) buf = talloc_zero(mem_ctx, maxsize); - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -559,9 +553,7 @@ static BOOL test_readbraw(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) buf = talloc_zero(mem_ctx, maxsize); - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/rename.c b/source4/torture/raw/rename.c index f80d6e1308..68bd2eda2d 100644 --- a/source4/torture/raw/rename.c +++ b/source4/torture/raw/rename.c @@ -51,9 +51,7 @@ static BOOL test_mv(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) printf("Testing SMBmv\n"); - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -141,9 +139,7 @@ static BOOL test_ntrename(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) printf("Testing SMBntrename\n"); - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/search.c b/source4/torture/raw/search.c index 0c3a724bf9..bca41e23f5 100644 --- a/source4/torture/raw/search.c +++ b/source4/torture/raw/search.c @@ -607,9 +607,7 @@ static BOOL test_many_files(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) {"DIRECTORY_INFO", "NAME", RAW_SEARCH_DIRECTORY_INFO, CONT_NAME} }; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Failed to create " BASEDIR " - %s\n", smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -742,9 +740,7 @@ static BOOL test_modify_search(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) union smb_search_next io2; union smb_setfileinfo sfinfo; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Failed to create " BASEDIR " - %s\n", smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -862,9 +858,7 @@ static BOOL test_sorted(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) NTSTATUS status; struct multiple_result result; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Failed to create " BASEDIR " - %s\n", smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -927,9 +921,7 @@ static BOOL test_many_dirs(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) NTSTATUS status; union smb_search_data *file, *file2, *file3; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Failed to create " BASEDIR " - %s\n", smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/seek.c b/source4/torture/raw/seek.c index 94f0ba2385..10b930b18f 100644 --- a/source4/torture/raw/seek.c +++ b/source4/torture/raw/seek.c @@ -52,9 +52,7 @@ static BOOL test_seek(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) const char *fname = BASEDIR "\\test.txt"; char c[2]; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/setfileinfo.c b/source4/torture/raw/setfileinfo.c index 2e4cff99b0..298ccf674b 100644 --- a/source4/torture/raw/setfileinfo.c +++ b/source4/torture/raw/setfileinfo.c @@ -56,8 +56,9 @@ BOOL torture_raw_sfileinfo(void) mem_ctx = talloc_init("torture_sfileinfo"); - smbcli_deltree(cli->tree, BASEDIR); - smbcli_mkdir(cli->tree, BASEDIR); + if (!torture_setup_dir(cli, BASEDIR)) { + return False; + } #define RECREATE_FILE(fname) do { \ if (fnum != -1) smbcli_close(cli->tree, fnum); \ diff --git a/source4/torture/raw/unlink.c b/source4/torture/raw/unlink.c index 40ab137fa0..d9c7ac6dfa 100644 --- a/source4/torture/raw/unlink.c +++ b/source4/torture/raw/unlink.c @@ -40,9 +40,7 @@ static BOOL test_unlink(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) BOOL ret = True; const char *fname = BASEDIR "\\test.txt"; - if (smbcli_deltree(cli->tree, BASEDIR) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, BASEDIR))) { - printf("Unable to setup %s - %s\n", BASEDIR, smbcli_errstr(cli->tree)); + if (!torture_setup_dir(cli, BASEDIR)) { return False; } diff --git a/source4/torture/raw/write.c b/source4/torture/raw/write.c index 585e231cac..7def976b46 100644 --- a/source4/torture/raw/write.c +++ b/source4/torture/raw/write.c @@ -1,6 +1,7 @@ /* Unix SMB/CIFS implementation. test suite for various write operations + Copyright (C) Andrew Tridgell 2003 This program is free software; you can redistribute it and/or modify @@ -60,18 +61,6 @@ #define BASEDIR "\\testwrite" -static BOOL setup_dir(struct smbcli_state *cli, const char *dname) -{ - smb_raw_exit(cli->session); - if (smbcli_deltree(cli->tree, dname) == -1 || - NT_STATUS_IS_ERR(smbcli_mkdir(cli->tree, dname))) { - printf("Unable to setup %s - %s\n", dname, smbcli_errstr(cli->tree)); - return False; - } - return True; -} - - /* setup a random buffer based on a seed */ @@ -117,7 +106,7 @@ static BOOL test_write(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) buf = talloc_zero(mem_ctx, maxsize); - if (!setup_dir(cli, BASEDIR)) { + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -234,7 +223,7 @@ static BOOL test_writex(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) buf = talloc_zero(mem_ctx, maxsize); - if (!setup_dir(cli, BASEDIR)) { + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -410,7 +399,7 @@ static BOOL test_writeunlock(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) buf = talloc_zero(mem_ctx, maxsize); - if (!setup_dir(cli, BASEDIR)) { + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -547,7 +536,7 @@ static BOOL test_writeclose(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) buf = talloc_zero(mem_ctx, maxsize); - if (!setup_dir(cli, BASEDIR)) { + if (!torture_setup_dir(cli, BASEDIR)) { return False; } @@ -680,238 +669,6 @@ done: return ret; } -static BOOL test_delayed_write_update(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) -{ - union smb_fileinfo finfo1, finfo2; - const char *fname = BASEDIR "\\torture_file.txt"; - NTSTATUS status; - int fnum1 = -1; - BOOL ret = True; - ssize_t written; - time_t t; - - printf("Testing delayed update of write time\n"); - - if (!setup_dir(cli, BASEDIR)) { - 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; - } - - finfo1.basic_info.level = RAW_FILEINFO_BASIC_INFO; - finfo1.basic_info.in.fnum = fnum1; - finfo2 = finfo1; - - status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo1); - - if (!NT_STATUS_IS_OK(status)) { - DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status))); - return False; - } - - printf("Initial write time %s\n", - nt_time_string(mem_ctx, finfo1.basic_info.out.write_time)); - - /* 3 second delay to ensure we get past any 2 second time - granularity (older systems may have that) */ - sleep(3); - - written = smbcli_write(cli->tree, fnum1, 0, "x", 0, 1); - - if (written != 1) { - printf("write failed - wrote %d bytes (%s)\n", written, __location__); - return False; - } - - t = time(NULL); - - while (time(NULL) < t+120) { - status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo2); - - if (!NT_STATUS_IS_OK(status)) { - DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status))); - ret = False; - break; - } - printf("write time %s\n", - nt_time_string(mem_ctx, 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", - (int)(time(NULL) - t)); - break; - } - sleep(1); - fflush(stdout); - } - - if (finfo1.basic_info.out.write_time == finfo2.basic_info.out.write_time) { - printf("Server did not update write time?!\n"); - ret = False; - } - - - if (fnum1 != -1) - smbcli_close(cli->tree, fnum1); - smbcli_unlink(cli->tree, fname); - smbcli_deltree(cli->tree, BASEDIR); - - return ret; -} - - -/* Windows does obviously not update the stat info during a write call. I - * *think* this is the problem causing a spurious Excel 2003 on XP error - * message when saving a file. Excel does a setfileinfo, writes, and then does - * a getpath(!)info. Or so... For Samba sometimes it displays an error message - * that the file might have been changed in between. What i've been able to - * trace down is that this happens if the getpathinfo after the write shows a - * different last write time than the setfileinfo showed. This is really - * nasty.... - */ - -static BOOL test_finfo_after_write(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) -{ - union smb_fileinfo finfo1, finfo2; - const char *fname = BASEDIR "\\torture_file.txt"; - NTSTATUS status; - int fnum1 = -1; - int fnum2; - BOOL ret = True; - ssize_t written; - struct smbcli_state *cli2=NULL; - - printf("Testing finfo update on close\n"); - - if (!setup_dir(cli, BASEDIR)) { - return False; - } - - fnum1 = smbcli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE); - if (fnum1 == -1) { - ret = False; - goto done; - } - - finfo1.basic_info.level = RAW_FILEINFO_BASIC_INFO; - finfo1.basic_info.in.fnum = fnum1; - - status = smb_raw_fileinfo(cli->tree, mem_ctx, &finfo1); - - if (!NT_STATUS_IS_OK(status)) { - DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status))); - ret = False; - goto done; - } - - msleep(1000); - - written = smbcli_write(cli->tree, fnum1, 0, "x", 0, 1); - - if (written != 1) { - printf("(%s) written gave %d - should have been 1\n", - __location__, 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; - 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__, written); - ret = False; - goto done; - } - - finfo2.basic_info.level = RAW_FILEINFO_BASIC_INFO; - finfo2.basic_info.in.fname = fname; - - status = smb_raw_pathinfo(cli2->tree, mem_ctx, &finfo2); - - if (!NT_STATUS_IS_OK(status)) { - DEBUG(0, ("(%s) fileinfo failed: %s\n", - __location__, 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; - goto done; - } - - if (finfo1.basic_info.out.access_time != - finfo2.basic_info.out.access_time) { - printf("(%s) access_time changed\n", __location__); - ret = False; - goto done; - } - - if (finfo1.basic_info.out.write_time != - finfo2.basic_info.out.write_time) { - printf("(%s) write_time changed\n", __location__); - 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; - goto done; - } - - /* One of the two following calls updates the qpathinfo. */ - - /* If you had skipped the smbcli_write on fnum2, it would - * *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; - - status = smb_raw_pathinfo(cli->tree, mem_ctx, &finfo2); - - if (!NT_STATUS_IS_OK(status)) { - DEBUG(0, ("fileinfo failed: %s\n", nt_errstr(status))); - ret = False; - goto done; - } - - done: - if (fnum1 != -1) - smbcli_close(cli->tree, fnum1); - smbcli_unlink(cli->tree, fname); - smbcli_deltree(cli->tree, BASEDIR); - if (cli2 != NULL) { - torture_close_connection(cli2); - } - - return ret; -} - /* basic testing of write calls */ @@ -927,8 +684,6 @@ BOOL torture_raw_write(void) mem_ctx = talloc_init("torture_raw_write"); - ret &= test_finfo_after_write(cli, mem_ctx); - ret &= test_delayed_write_update(cli, mem_ctx); ret &= test_write(cli, mem_ctx); ret &= test_writeunlock(cli, mem_ctx); ret &= test_writeclose(cli, mem_ctx); |