summaryrefslogtreecommitdiff
path: root/source4/torture/raw
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-11-12 09:37:59 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:05:45 -0500
commit0e255bb542b1f79c32e9295617199ea8d60753d4 (patch)
tree7762f159a4f72d3670c6e8ba6ce326c3ae070c4e /source4/torture/raw
parent27859603d7e42550678a2f7dbb2ccd63078a6689 (diff)
downloadsamba-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.c7
-rw-r--r--source4/torture/raw/context.c12
-rw-r--r--source4/torture/raw/ioctl.c7
-rw-r--r--source4/torture/raw/lock.c20
-rw-r--r--source4/torture/raw/mux.c15
-rw-r--r--source4/torture/raw/notify.c7
-rw-r--r--source4/torture/raw/open.c7
-rw-r--r--source4/torture/raw/read.c16
-rw-r--r--source4/torture/raw/rename.c8
-rw-r--r--source4/torture/raw/search.c16
-rw-r--r--source4/torture/raw/seek.c4
-rw-r--r--source4/torture/raw/setfileinfo.c5
-rw-r--r--source4/torture/raw/unlink.c4
-rw-r--r--source4/torture/raw/write.c255
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);