svn commit: samba r20497 - in branches/SAMBA_4_0/source/torture/raw: .

vlendec at samba.org vlendec at samba.org
Wed Jan 3 06:29:22 GMT 2007


Author: vlendec
Date: 2007-01-03 06:29:22 +0000 (Wed, 03 Jan 2007)
New Revision: 20497

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20497

Log:
Two changes to RAW-OPEN that Samba does not fulfil:

Samba3 returns the SPARSE flag for files with size > allocation, and on many
configs Samba3 does not support EAs. Cope with both.

Tridge, please check this is acceptable for this test.

Volker
Modified:
   branches/SAMBA_4_0/source/torture/raw/open.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/raw/open.c
===================================================================
--- branches/SAMBA_4_0/source/torture/raw/open.c	2007-01-03 06:19:11 UTC (rev 20496)
+++ branches/SAMBA_4_0/source/torture/raw/open.c	2007-01-03 06:29:22 UTC (rev 20497)
@@ -396,8 +396,15 @@
 	io.openx.in.file_attrs = FILE_ATTRIBUTE_SYSTEM;
 	status = smb_raw_open(cli->tree, mem_ctx, &io);
 	CHECK_STATUS(status, NT_STATUS_OK);
-	CHECK_ALL_INFO(FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_ARCHIVE, 
-		       attrib & ~FILE_ATTRIBUTE_NONINDEXED);
+	if (lp_parm_bool(-1, "torture", "samba3", False)) {
+		CHECK_ALL_INFO(FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_ARCHIVE, 
+			       attrib & ~(FILE_ATTRIBUTE_NONINDEXED|
+					  FILE_ATTRIBUTE_SPARSE));
+	}
+	else {
+		CHECK_ALL_INFO(FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_ARCHIVE, 
+			       attrib & ~(FILE_ATTRIBUTE_NONINDEXED));
+	}
 	smbcli_close(cli->tree, io.openx.out.file.fnum);
 	smbcli_unlink(cli->tree, fname);
 
@@ -550,6 +557,7 @@
 
 	/* check all combinations of open_func */
 	for (i=0; i<ARRAY_SIZE(open_funcs); i++) {
+	again:
 		if (open_funcs[i].with_file) {
 			io.t2open.in.fname = fname1;
 		} else {
@@ -557,6 +565,15 @@
 		}
 		io.t2open.in.open_func = open_funcs[i].open_func;
 		status = smb_raw_open(cli->tree, mem_ctx, &io);
+		if ((io.t2open.in.num_eas != 0)
+		    && NT_STATUS_EQUAL(status, NT_STATUS_EAS_NOT_SUPPORTED)
+		    && lp_parm_bool(-1, "torture", "samba3", False)) {
+			printf("(%s) EAs not supported, not treating as fatal "
+			       "in Samba3 test\n", __location__);
+			io.t2open.in.num_eas = 0;
+			goto again;
+		}
+
 		if (!NT_STATUS_EQUAL(status, open_funcs[i].correct_status)) {
 			printf("(%s) incorrect status %s should be %s (i=%d with_file=%d open_func=0x%x)\n", 
 			       __location__, nt_errstr(status), nt_errstr(open_funcs[i].correct_status),
@@ -592,11 +609,14 @@
 	smbcli_close(cli->tree, fnum);
 
 	status = torture_check_ea(cli, fname, ".CLASSINFO", "first value");
-	CHECK_STATUS(status, NT_STATUS_OK);
+	CHECK_STATUS(status, io.t2open.in.num_eas
+		     ? NT_STATUS_OK : NT_STATUS_EAS_NOT_SUPPORTED);
 	status = torture_check_ea(cli, fname, "EA TWO", "foo");
-	CHECK_STATUS(status, NT_STATUS_OK);
+	CHECK_STATUS(status, io.t2open.in.num_eas
+		     ? NT_STATUS_OK : NT_STATUS_EAS_NOT_SUPPORTED);
 	status = torture_check_ea(cli, fname, "X THIRD", "xy");
-	CHECK_STATUS(status, NT_STATUS_OK);
+	CHECK_STATUS(status, io.t2open.in.num_eas
+		     ? NT_STATUS_OK : NT_STATUS_EAS_NOT_SUPPORTED);
 
 	/* now check the search attrib for hidden files - win2003 ignores this? */
 	SET_ATTRIB(FILE_ATTRIBUTE_HIDDEN);



More information about the samba-cvs mailing list