[SCM] Samba Shared Repository - branch master updated
Tim Prouty
tprouty at samba.org
Thu Dec 3 21:48:53 MST 2009
The branch, master has been updated
via 4f6d5d0... s4 torture: Convert create_complex_file to use BASIC_INFO instead of deprecated command
via 3507350... s4 torture: Fix call to smbcli_open
via a3df55b... s4 torture: Make RAW-SEARCH pass against win7
via 2dc5bd1... s4 torture: Parameterize WRITE_AND_CLOSE support
via f26a500... s4 torture: Add lockread_supported based off of CAP_LOCK_AND_READ
via 5882282... s4 torture: Allow READ to be parameterized, add more readx tests
via 60d9828... s4-torture: Allow the legacy DENY_FCB/DENY_DOS share modes to be ignored
from 5c85776... s4 selftest/quicktest: Update known failures for the sfileinfo and oplock changes
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 4f6d5d0b865a077185e2441d401709325c3e7304
Author: Zachary Loafman <zachary.loafman at isilon.com>
Date: Tue Nov 24 23:42:56 2009 +0000
s4 torture: Convert create_complex_file to use BASIC_INFO instead of deprecated command
Signed-off-by: Tim Prouty <tprouty at samba.org>
commit 3507350ad24643336b392befc52af493098638b9
Author: Zachary Loafman <zachary.loafman at isilon.com>
Date: Wed Nov 18 22:42:31 2009 +0000
s4 torture: Fix call to smbcli_open
Signed-off-by: Tim Prouty <tprouty at samba.org>
commit a3df55b26f6afaab4364cb96efb121a3f8fa2c82
Author: Zachary Loafman <zachary.loafman at isilon.com>
Date: Wed Nov 18 00:29:23 2009 +0000
s4 torture: Make RAW-SEARCH pass against win7
Signed-off-by: Tim Prouty <tprouty at samba.org>
commit 2dc5bd19d42f31e3d9f54108bd147c4371634a50
Author: Zachary Loafman <zachary.loafman at isilon.com>
Date: Wed Nov 18 00:29:21 2009 +0000
s4 torture: Parameterize WRITE_AND_CLOSE support
Signed-off-by: Tim Prouty <tprouty at samba.org>
commit f26a500d9ff854734decdcb196136dc8cc19eb4a
Author: Zachary Loafman <zachary.loafman at isilon.com>
Date: Tue Nov 17 23:25:58 2009 +0000
s4 torture: Add lockread_supported based off of CAP_LOCK_AND_READ
Signed-off-by: Tim Prouty <tprouty at samba.org>
commit 5882282deaf3ce06c18fe2102f7f8dcc6e79b409
Author: Zachary Loafman <zachary.loafman at isilon.com>
Date: Mon Nov 16 21:13:26 2009 +0000
s4 torture: Allow READ to be parameterized, add more readx tests
Signed-off-by: Tim Prouty <tprouty at samba.org>
commit 60d9828ade304dc7aa9b01f1be1dfea86b04248e
Author: Zachary Loafman <zachary.loafman at isilon.com>
Date: Mon Nov 9 18:32:06 2009 +0000
s4-torture: Allow the legacy DENY_FCB/DENY_DOS share modes to be ignored
Signed-off-by: Tim Prouty <tprouty at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source4/libcli/raw/libcliraw.h | 1 +
source4/libcli/raw/rawnegotiate.c | 3 ++
source4/torture/basic/denytest.c | 20 ++++++++++++++++
source4/torture/raw/lookuprate.c | 2 +-
source4/torture/raw/read.c | 36 +++++++++++++++++++++++++++-
source4/torture/raw/search.c | 11 +++++++-
source4/torture/raw/write.c | 10 ++++++++
source4/torture/smbtorture.c | 13 ++++++++++
source4/torture/smbtorture.h | 22 +++++++++++++++++
source4/torture/util_smb.c | 46 +++++++++++++++++++++----------------
10 files changed, 139 insertions(+), 25 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source4/libcli/raw/libcliraw.h b/source4/libcli/raw/libcliraw.h
index 37e158a..69de33c 100644
--- a/source4/libcli/raw/libcliraw.h
+++ b/source4/libcli/raw/libcliraw.h
@@ -65,6 +65,7 @@ struct smbcli_negotiate {
time_t server_time;
uint_t readbraw_supported:1;
uint_t writebraw_supported:1;
+ uint_t lockread_supported:1;
char *server_domain;
};
diff --git a/source4/libcli/raw/rawnegotiate.c b/source4/libcli/raw/rawnegotiate.c
index dedc891..67f3bfa 100644
--- a/source4/libcli/raw/rawnegotiate.c
+++ b/source4/libcli/raw/rawnegotiate.c
@@ -152,6 +152,9 @@ NTSTATUS smb_raw_negotiate_recv(struct smbcli_request *req)
transport->negotiate.readbraw_supported = true;
transport->negotiate.writebraw_supported = true;
}
+
+ if (transport->negotiate.capabilities & CAP_LOCK_AND_READ)
+ transport->negotiate.lockread_supported = true;
} else if (transport->negotiate.protocol >= PROTOCOL_LANMAN1) {
SMBCLI_CHECK_WCT(req, 13);
transport->negotiate.sec_mode = SVAL(req->in.vwv,VWV(1));
diff --git a/source4/torture/basic/denytest.c b/source4/torture/basic/denytest.c
index a2ad5e6..501647e 100644
--- a/source4/torture/basic/denytest.c
+++ b/source4/torture/basic/denytest.c
@@ -1439,6 +1439,16 @@ bool torture_denytest1(struct torture_context *tctx,
progress_bar(tctx, i, ARRAY_SIZE(denytable1));
+ if (!torture_setting_bool(tctx, "deny_fcb_support", true) &&
+ (denytable1[i].deny1 == DENY_FCB ||
+ denytable1[i].deny2 == DENY_FCB))
+ continue;
+
+ if (!torture_setting_bool(tctx, "deny_dos_support", true) &&
+ (denytable1[i].deny1 == DENY_DOS ||
+ denytable1[i].deny2 == DENY_DOS))
+ continue;
+
fnum1 = smbcli_open(cli1->tree, fname,
denytable1[i].mode1,
denytable1[i].deny1);
@@ -1526,6 +1536,16 @@ bool torture_denytest2(struct torture_context *tctx,
progress_bar(tctx, i, ARRAY_SIZE(denytable1));
+ if (!torture_setting_bool(tctx, "deny_fcb_support", true) &&
+ (denytable1[i].deny1 == DENY_FCB ||
+ denytable1[i].deny2 == DENY_FCB))
+ continue;
+
+ if (!torture_setting_bool(tctx, "deny_dos_support", true) &&
+ (denytable1[i].deny1 == DENY_DOS ||
+ denytable1[i].deny2 == DENY_DOS))
+ continue;
+
fnum1 = smbcli_open(cli1->tree, fname,
denytable2[i].mode1,
denytable2[i].deny1);
diff --git a/source4/torture/raw/lookuprate.c b/source4/torture/raw/lookuprate.c
index e26c5b0..13605f5 100644
--- a/source4/torture/raw/lookuprate.c
+++ b/source4/torture/raw/lookuprate.c
@@ -93,7 +93,7 @@ static NTSTATUS fill_directory(struct smbcli_tree *tree,
path, current);
fnum = smbcli_open(tree, fname, O_RDONLY|O_CREAT,
- OPENX_MODE_DENY_NONE);
+ DENY_NONE);
if (fnum < 0) {
talloc_free(fname);
return smbcli_nt_error(tree);
diff --git a/source4/torture/raw/read.c b/source4/torture/raw/read.c
index 3b48aac..efdd040 100644
--- a/source4/torture/raw/read.c
+++ b/source4/torture/raw/read.c
@@ -94,13 +94,18 @@ static bool test_read(struct torture_context *tctx, struct smbcli_state *cli)
buf = talloc_zero_array(tctx, uint8_t, maxsize);
+ if (!torture_setting_bool(tctx, "read_support", true)) {
+ printf("server refuses to support READ\n");
+ return true;
+ }
+
if (!torture_setup_dir(cli, BASEDIR)) {
return false;
}
printf("Testing RAW_READ_READ\n");
io.generic.level = RAW_READ_READ;
-
+
fnum = smbcli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE);
if (fnum == -1) {
printf("Failed to create %s - %s\n", fname, smbcli_errstr(cli->tree));
@@ -219,6 +224,11 @@ static bool test_lockread(struct torture_context *tctx,
const char *test_data = "TEST DATA";
uint_t seed = time(NULL);
+ if (!cli->transport->negotiate.lockread_supported) {
+ printf("Server does not support lockread - skipping\n");
+ return true;
+ }
+
buf = talloc_zero_array(tctx, uint8_t, maxsize);
if (!torture_setup_dir(cli, BASEDIR)) {
@@ -478,7 +488,29 @@ static bool test_readx(struct torture_context *tctx, struct smbcli_state *cli)
smbcli_write(cli->tree, fnum, 0, buf, 0, maxsize);
memset(buf, 0, maxsize);
- printf("Trying large read\n");
+ printf("Trying page sized read\n");
+ io.readx.in.offset = 0;
+ io.readx.in.mincnt = 0x1000;
+ io.readx.in.maxcnt = 0x1000;
+ status = smb_raw_read(cli->tree, &io);
+ CHECK_STATUS(status, NT_STATUS_OK);
+ CHECK_VALUE(io.readx.out.remaining, 0xFFFF);
+ CHECK_VALUE(io.readx.out.compaction_mode, 0);
+ CHECK_VALUE(io.readx.out.nread, io.readx.in.maxcnt);
+ CHECK_BUFFER(buf, seed, io.readx.out.nread);
+
+ printf("Trying page + 1 sized read (check alignment)\n");
+ io.readx.in.offset = 0;
+ io.readx.in.mincnt = 0x1001;
+ io.readx.in.maxcnt = 0x1001;
+ status = smb_raw_read(cli->tree, &io);
+ CHECK_STATUS(status, NT_STATUS_OK);
+ CHECK_VALUE(io.readx.out.remaining, 0xFFFF);
+ CHECK_VALUE(io.readx.out.compaction_mode, 0);
+ CHECK_VALUE(io.readx.out.nread, io.readx.in.maxcnt);
+ CHECK_BUFFER(buf, seed, io.readx.out.nread);
+
+ printf("Trying large read (UINT16_MAX)\n");
io.readx.in.offset = 0;
io.readx.in.mincnt = 0xFFFF;
io.readx.in.maxcnt = 0xFFFF;
diff --git a/source4/torture/raw/search.c b/source4/torture/raw/search.c
index 3aee7fb..74186e3 100644
--- a/source4/torture/raw/search.c
+++ b/source4/torture/raw/search.c
@@ -711,7 +711,7 @@ static bool test_many_files(struct torture_context *tctx,
if ((search_types[t].cont_type == CONT_RESUME_KEY) &&
(search_types[t].data_level != RAW_SEARCH_DATA_SEARCH) &&
- torture_setting_bool(tctx, "samba3", false)) {
+ !torture_setting_bool(tctx, "resume_key_support", true)) {
torture_comment(tctx,
"SKIP: Continue %s via %s\n",
search_types[t].name, search_types[t].cont_name);
@@ -1122,7 +1122,8 @@ static bool test_many_dirs(struct torture_context *tctx,
goto done;
}
- if (strcmp(file3[i].search.name, file2[i].search.name) != 0) {
+ if (torture_setting_bool(tctx, "rewind_support", true) &&
+ strcmp(file3[i].search.name, file2[i].search.name) != 0) {
printf("(%s) server did not rewind - got '%s' expected '%s'\n",
__location__, file3[i].search.name, file2[i].search.name);
ret = false;
@@ -1273,6 +1274,12 @@ static bool test_ea_list(struct torture_context *tctx,
printf("Testing RAW_SEARCH_EA_LIST level\n");
+ if (!torture_setting_bool(tctx, "search_ea_support", true) ||
+ !torture_setting_bool(tctx, "ea_support", true)) {
+ printf("..skipped per target configuration.\n");
+ return true;
+ }
+
fnum = smbcli_open(cli->tree, BASEDIR "\\file1.txt", O_CREAT|O_RDWR, DENY_NONE);
smbcli_close(cli->tree, fnum);
diff --git a/source4/torture/raw/write.c b/source4/torture/raw/write.c
index cd1b078..ff82dc1 100644
--- a/source4/torture/raw/write.c
+++ b/source4/torture/raw/write.c
@@ -425,6 +425,11 @@ static bool test_writeunlock(struct torture_context *tctx,
buf = talloc_zero_array(tctx, uint8_t, maxsize);
+ if (!cli->transport->negotiate.lockread_supported) {
+ printf("Server does not support writeunlock - skipping\n");
+ return true;
+ }
+
if (!torture_setup_dir(cli, BASEDIR)) {
return false;
}
@@ -568,6 +573,11 @@ static bool test_writeclose(struct torture_context *tctx,
buf = talloc_zero_array(tctx, uint8_t, maxsize);
+ if (!torture_setting_bool(tctx, "writeclose_support", true)) {
+ printf("Server does not support writeclose - skipping\n");
+ return true;
+ }
+
if (!torture_setup_dir(cli, BASEDIR)) {
return false;
}
diff --git a/source4/torture/smbtorture.c b/source4/torture/smbtorture.c
index 8742a8c..cb080df 100644
--- a/source4/torture/smbtorture.c
+++ b/source4/torture/smbtorture.c
@@ -523,6 +523,7 @@ int main(int argc,char *argv[])
if (strcmp(target, "samba3") == 0) {
lp_set_cmdline(cmdline_lp_ctx, "torture:samba3", "true");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:resume_key_support", "false");
} else if (strcmp(target, "samba4") == 0) {
lp_set_cmdline(cmdline_lp_ctx, "torture:samba4", "true");
} else if (strcmp(target, "winxp") == 0) {
@@ -537,15 +538,27 @@ int main(int argc,char *argv[])
lp_set_cmdline(cmdline_lp_ctx, "torture:win7", "true");
lp_set_cmdline(cmdline_lp_ctx, "torture:cn_max_buffer_size",
"0x00010000");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:resume_key_support", "false");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:rewind_support", "false");
+
+ /* RAW-SEARCH for fails for inexplicable reasons against win7 */
+ lp_set_cmdline(cmdline_lp_ctx, "torture:search_ea_support", "false");
} else if (strcmp(target, "onefs") == 0) {
lp_set_cmdline(cmdline_lp_ctx, "torture:onefs", "true");
lp_set_cmdline(cmdline_lp_ctx, "torture:openx_deny_dos_support",
"false");
lp_set_cmdline(cmdline_lp_ctx, "torture:sacl_support", "false");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:ea_support", "false");
lp_set_cmdline(cmdline_lp_ctx, "torture:smblock_pdu_support",
"false");
lp_set_cmdline(cmdline_lp_ctx, "torture:2_step_break_to_none",
"true");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:deny_dos_support", "false");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:deny_fcb_support", "false");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:read_support", "false");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:writeclose_support", "false");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:resume_key_support", "false");
+ lp_set_cmdline(cmdline_lp_ctx, "torture:rewind_support", "false");
}
if (max_runtime) {
diff --git a/source4/torture/smbtorture.h b/source4/torture/smbtorture.h
index c7bbcf2..a4f2595 100644
--- a/source4/torture/smbtorture.h
+++ b/source4/torture/smbtorture.h
@@ -91,4 +91,26 @@ bool torture_register_suite(struct torture_suite *suite);
* steps rather than 1.
*/
+/* torture:resume_key_support
+ *
+ * Server supports resuming search via key.
+ */
+
+/* torture:rewind_support
+ *
+ * Server supports rewinding during search.
+ */
+
+/* torture:ea_support
+ *
+ * Server supports OS/2 style EAs.
+ */
+
+/* torture:search_ea_support
+ *
+ * Server supports RAW_SEARCH_DATA_EA_LIST - Torture currently
+ * does not interact correctly with win7, this flag disables
+ * the appropriate test.
+ */
+
#endif /* __SMBTORTURE_H__ */
diff --git a/source4/torture/util_smb.c b/source4/torture/util_smb.c
index 967faae..180f8f0 100644
--- a/source4/torture/util_smb.c
+++ b/source4/torture/util_smb.c
@@ -129,14 +129,17 @@ _PUBLIC_ int create_complex_file(struct smbcli_state *cli, TALLOC_CTX *mem_ctx,
}
}
- /* make sure all the timestamps aren't the same, and are also
- in different DST zones*/
- setfile.generic.level = RAW_SFILEINFO_SETATTRE;
+ /* make sure all the timestamps aren't the same */
+ ZERO_STRUCT(setfile);
+ setfile.generic.level = RAW_SFILEINFO_BASIC_INFO;
setfile.generic.in.file.fnum = fnum;
- setfile.setattre.in.create_time = t + 9*30*24*60*60;
- setfile.setattre.in.access_time = t + 6*30*24*60*60;
- setfile.setattre.in.write_time = t + 3*30*24*60*60;
+ unix_to_nt_time(&setfile.basic_info.in.create_time,
+ t + 9*30*24*60*60);
+ unix_to_nt_time(&setfile.basic_info.in.access_time,
+ t + 6*30*24*60*60);
+ unix_to_nt_time(&setfile.basic_info.in.write_time,
+ t + 3*30*24*60*60);
status = smb_raw_setfileinfo(cli->tree, &setfile);
if (!NT_STATUS_IS_OK(status)) {
@@ -144,7 +147,7 @@ _PUBLIC_ int create_complex_file(struct smbcli_state *cli, TALLOC_CTX *mem_ctx,
}
/* make sure all the timestamps aren't the same */
- fileinfo.generic.level = RAW_FILEINFO_GETATTRE;
+ fileinfo.generic.level = RAW_FILEINFO_BASIC_INFO;
fileinfo.generic.in.file.fnum = fnum;
status = smb_raw_fileinfo(cli->tree, mem_ctx, &fileinfo);
@@ -152,13 +155,13 @@ _PUBLIC_ int create_complex_file(struct smbcli_state *cli, TALLOC_CTX *mem_ctx,
printf("Failed to query file times - %s\n", nt_errstr(status));
}
- if (setfile.setattre.in.create_time != fileinfo.getattre.out.create_time) {
+ if (setfile.basic_info.in.create_time != fileinfo.basic_info.out.create_time) {
printf("create_time not setup correctly\n");
}
- if (setfile.setattre.in.access_time != fileinfo.getattre.out.access_time) {
+ if (setfile.basic_info.in.access_time != fileinfo.basic_info.out.access_time) {
printf("access_time not setup correctly\n");
}
- if (setfile.setattre.in.write_time != fileinfo.getattre.out.write_time) {
+ if (setfile.basic_info.in.write_time != fileinfo.basic_info.out.write_time) {
printf("write_time not setup correctly\n");
}
@@ -206,14 +209,17 @@ int create_complex_dir(struct smbcli_state *cli, TALLOC_CTX *mem_ctx, const char
}
}
- /* make sure all the timestamps aren't the same, and are also
- in different DST zones*/
- setfile.generic.level = RAW_SFILEINFO_SETATTRE;
+ /* make sure all the timestamps aren't the same */
+ ZERO_STRUCT(setfile);
+ setfile.generic.level = RAW_SFILEINFO_BASIC_INFO;
setfile.generic.in.file.fnum = fnum;
- setfile.setattre.in.create_time = t + 9*30*24*60*60;
- setfile.setattre.in.access_time = t + 6*30*24*60*60;
- setfile.setattre.in.write_time = t + 3*30*24*60*60;
+ unix_to_nt_time(&setfile.basic_info.in.create_time,
+ t + 9*30*24*60*60);
+ unix_to_nt_time(&setfile.basic_info.in.access_time,
+ t + 6*30*24*60*60);
+ unix_to_nt_time(&setfile.basic_info.in.write_time,
+ t + 3*30*24*60*60);
status = smb_raw_setfileinfo(cli->tree, &setfile);
if (!NT_STATUS_IS_OK(status)) {
@@ -221,7 +227,7 @@ int create_complex_dir(struct smbcli_state *cli, TALLOC_CTX *mem_ctx, const char
}
/* make sure all the timestamps aren't the same */
- fileinfo.generic.level = RAW_FILEINFO_GETATTRE;
+ fileinfo.generic.level = RAW_FILEINFO_BASIC_INFO;
fileinfo.generic.in.file.fnum = fnum;
status = smb_raw_fileinfo(cli->tree, mem_ctx, &fileinfo);
@@ -229,13 +235,13 @@ int create_complex_dir(struct smbcli_state *cli, TALLOC_CTX *mem_ctx, const char
printf("Failed to query file times - %s\n", nt_errstr(status));
}
- if (setfile.setattre.in.create_time != fileinfo.getattre.out.create_time) {
+ if (setfile.basic_info.in.create_time != fileinfo.basic_info.out.create_time) {
printf("create_time not setup correctly\n");
}
- if (setfile.setattre.in.access_time != fileinfo.getattre.out.access_time) {
+ if (setfile.basic_info.in.access_time != fileinfo.basic_info.out.access_time) {
printf("access_time not setup correctly\n");
}
- if (setfile.setattre.in.write_time != fileinfo.getattre.out.write_time) {
+ if (setfile.basic_info.in.write_time != fileinfo.basic_info.out.write_time) {
printf("write_time not setup correctly\n");
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list