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

vlendec at samba.org vlendec at samba.org
Mon Aug 20 05:24:20 GMT 2007


Author: vlendec
Date: 2007-08-20 05:24:19 +0000 (Mon, 20 Aug 2007)
New Revision: 24569

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

Log:
Add two tests

A subtest for rename to check if case-changing renames work

A test that exposes the case insensitivity unix_convert bug

Modified:
   branches/SAMBA_4_0/source/torture/raw/raw.c
   branches/SAMBA_4_0/source/torture/raw/rename.c
   branches/SAMBA_4_0/source/torture/raw/samba3misc.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/raw/raw.c
===================================================================
--- branches/SAMBA_4_0/source/torture/raw/raw.c	2007-08-20 01:03:51 UTC (rev 24568)
+++ branches/SAMBA_4_0/source/torture/raw/raw.c	2007-08-20 05:24:19 UTC (rev 24569)
@@ -62,6 +62,8 @@
 	torture_suite_add_simple_test(suite, "SAMBA3CLOSEERR", torture_samba3_closeerr);
 	torture_suite_add_simple_test(suite, "SAMBA3CHECKFSP", torture_samba3_checkfsp);
 	torture_suite_add_simple_test(suite, "SAMBA3BADPATH", torture_samba3_badpath);
+	torture_suite_add_simple_test(suite, "SAMBA3CASEINSENSITIVE",
+				      torture_samba3_caseinsensitive);
 	torture_suite_add_simple_test(suite, "SCAN-EAMAX", torture_max_eas);
 
 	suite->description = talloc_strdup(suite, 

Modified: branches/SAMBA_4_0/source/torture/raw/rename.c
===================================================================
--- branches/SAMBA_4_0/source/torture/raw/rename.c	2007-08-20 01:03:51 UTC (rev 24568)
+++ branches/SAMBA_4_0/source/torture/raw/rename.c	2007-08-20 05:24:19 UTC (rev 24569)
@@ -51,6 +51,8 @@
 	int fnum = -1;
 	const char *fname1 = BASEDIR "\\test1.txt";
 	const char *fname2 = BASEDIR "\\test2.txt";
+	const char *Fname1 = BASEDIR "\\Test1.txt";
+	union smb_fileinfo finfo;
 	union smb_open op;
 
 	printf("Testing SMBmv\n");
@@ -109,7 +111,25 @@
 	status = smb_raw_rename(cli->tree, &io);
 	CHECK_STATUS(status, NT_STATUS_OK);
 
+	printf("Trying case-changing rename\n");
 	io.rename.in.pattern1 = fname1;
+	io.rename.in.pattern2 = Fname1;
+	status = smb_raw_rename(cli->tree, &io);
+	CHECK_STATUS(status, NT_STATUS_OK);
+
+	finfo.generic.level = RAW_FILEINFO_ALL_INFO;
+	finfo.all_info.in.file.path = fname1;
+	status = smb_raw_pathinfo(cli->tree, mem_ctx, &finfo);
+	CHECK_STATUS(status, NT_STATUS_OK);
+	if (strcmp(finfo.all_info.out.fname.s, Fname1) != 0) {
+		printf("(%s) Incorrect filename [%s] after case-changing "
+		       "rename, should be [%s]\n", __location__,
+		       finfo.all_info.out.fname.s, Fname1);
+		ret = False;
+		goto done;
+	}
+
+	io.rename.in.pattern1 = fname1;
 	io.rename.in.pattern2 = fname2;
 
 	printf("trying rename while not open\n");

Modified: branches/SAMBA_4_0/source/torture/raw/samba3misc.c
===================================================================
--- branches/SAMBA_4_0/source/torture/raw/samba3misc.c	2007-08-20 01:03:51 UTC (rev 24568)
+++ branches/SAMBA_4_0/source/torture/raw/samba3misc.c	2007-08-20 05:24:19 UTC (rev 24569)
@@ -598,3 +598,70 @@
 
 	return ret;
 }
+
+static void count_fn(struct clilist_file_info *info, const char *name,
+		     void *private_data)
+{
+	int *counter = (int *)private_data;
+	*counter += 1;
+}
+
+BOOL torture_samba3_caseinsensitive(struct torture_context *torture)
+{
+	struct smbcli_state *cli;
+	TALLOC_CTX *mem_ctx;
+	NTSTATUS status;
+	const char *dirname = "insensitive";
+	const char *ucase_dirname = "InSeNsItIvE";
+	const char *fname = "foo";
+	char *fpath;
+	int fnum;
+	int counter = 0;
+	BOOL ret = True;
+
+	if (!(mem_ctx = talloc_init("torture_samba3_caseinsensitive"))) {
+		d_printf("talloc_init failed\n");
+		return False;
+	}
+
+	if (!torture_open_connection(&cli, 0)) {
+		goto done;
+	}
+
+	smbcli_deltree(cli->tree, dirname);
+
+	status = smbcli_mkdir(cli->tree, dirname);
+	if (!NT_STATUS_IS_OK(status)) {
+		d_printf("smbcli_mkdir failed: %s\n", nt_errstr(status));
+		goto done;
+	}
+
+	if (!(fpath = talloc_asprintf(mem_ctx, "%s\\%s", dirname, fname))) {
+		goto done;
+	}
+	fnum = smbcli_open(cli->tree, fpath, O_RDWR | O_CREAT, DENY_NONE);
+	if (fnum == -1) {
+		d_printf("Could not create file %s: %s\n", fpath,
+			 smbcli_errstr(cli->tree));
+		goto done;
+	}
+	smbcli_close(cli->tree, fnum);
+
+	smbcli_list(cli->tree, talloc_asprintf(
+			    mem_ctx, "%s\\*", ucase_dirname),
+		    FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN
+		    |FILE_ATTRIBUTE_SYSTEM,
+		    count_fn, (void *)&counter);
+
+	if (counter == 3) {
+		ret = True;
+	}
+	else {
+		d_fprintf(stderr, "expected 3 entries, got %d\n", counter);
+		ret = False;
+	}
+
+ done:
+	talloc_free(mem_ctx);
+	return ret;
+}



More information about the samba-cvs mailing list