[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