svn commit: samba r13370 - in branches/SAMBA_4_0/source/torture/basic: .

jra at samba.org jra at samba.org
Mon Feb 6 19:43:25 GMT 2006


Author: jra
Date: 2006-02-06 19:43:24 +0000 (Mon, 06 Feb 2006)
New Revision: 13370

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

Log:
Added deltest21 - pull the rug out from a connection by socket
close after setting delete on close flag.
Jeremy.

Modified:
   branches/SAMBA_4_0/source/torture/basic/delete.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/basic/delete.c
===================================================================
--- branches/SAMBA_4_0/source/torture/basic/delete.c	2006-02-06 18:29:57 UTC (rev 13369)
+++ branches/SAMBA_4_0/source/torture/basic/delete.c	2006-02-06 19:43:24 UTC (rev 13370)
@@ -1208,7 +1208,8 @@
 
 	/* Now try opening again for read-only. */
 	fnum2 = smbcli_nt_create_full(cli1->tree, fname, 0, 
-				      SEC_RIGHTS_FILE_READ,
+				      SEC_RIGHTS_FILE_READ|
+				      SEC_STD_DELETE,
 				      FILE_ATTRIBUTE_NORMAL,
 				      NTCREATEX_SHARE_ACCESS_READ|
 				      NTCREATEX_SHARE_ACCESS_WRITE|
@@ -1532,6 +1533,68 @@
 	return correct;
 }
 
+/* Test 21 ... */
+static BOOL deltest21(struct smbcli_state **ppcli1, struct smbcli_state **ppcli2)
+{
+	int fnum1 = -1;
+	struct smbcli_state *cli1 = *ppcli1;
+	struct smbcli_state *cli2 = *ppcli2;
+	BOOL correct = True;
+
+	del_clean_area(cli1, cli2);
+
+	/* Test 21 -- Test removal of file after socket close. */
+
+	fnum1 = smbcli_nt_create_full(cli1->tree, fname, 0, 
+				      SEC_RIGHTS_FILE_ALL,
+				      FILE_ATTRIBUTE_NORMAL, NTCREATEX_SHARE_ACCESS_NONE, 
+				      NTCREATEX_DISP_OVERWRITE_IF, 0, 0);
+	
+	if (fnum1 == -1) {
+		printf("(%s) open of %s failed (%s)\n", 
+		       __location__, fname, smbcli_errstr(cli1->tree));
+		return False;
+	}
+	
+	if (NT_STATUS_IS_ERR(smbcli_nt_delete_on_close(cli1->tree, fnum1, True))) {
+		printf("(%s) setting delete_on_close failed (%s)\n", 
+		       __location__, smbcli_errstr(cli1->tree));
+		return False;
+	}
+	
+	/* Ensure delete on close is set. */
+	check_delete_on_close(cli1, fnum1, fname, True);
+
+	/* Now yank the rug from under cli1. */
+	smbcli_transport_dead(cli1->transport);
+
+	fnum1 = -1;
+
+	if (!torture_open_connection(ppcli1)) {
+		return False;
+	}
+
+	cli1 = *ppcli1;
+
+	/* File should not be there. */
+	fnum1 = smbcli_nt_create_full(cli1->tree, fname, 0, 
+				      SEC_RIGHTS_FILE_READ,
+				      FILE_ATTRIBUTE_NORMAL,
+				      NTCREATEX_SHARE_ACCESS_READ|
+				      NTCREATEX_SHARE_ACCESS_WRITE|
+				      NTCREATEX_SHARE_ACCESS_DELETE,
+				      NTCREATEX_DISP_OPEN,
+				      0, 0);
+	
+	CHECK_STATUS(cli1, NT_STATUS_OBJECT_NAME_NOT_FOUND);
+
+	printf("twenty-first delete on close test succeeded.\n");
+
+  fail:
+
+	return correct;
+}
+	
 /*
   Test delete on close semantics.
  */
@@ -1554,87 +1617,33 @@
 		goto fail;
 	}
 
-	if (!deltest1(cli1, cli2)) {
-		correct = False;
-		goto fail;
+	correct &= deltest1(cli1, cli2);
+	correct &= deltest2(cli1, cli2);
+	correct &= deltest3(cli1, cli2);
+	correct &= deltest4(cli1, cli2);
+	correct &= deltest5(cli1, cli2);
+	correct &= deltest6(cli1, cli2);
+	correct &= deltest7(cli1, cli2);
+	correct &= deltest8(cli1, cli2);
+	correct &= deltest9(cli1, cli2);
+	correct &= deltest10(cli1, cli2);
+	correct &= deltest11(cli1, cli2);
+	correct &= deltest12(cli1, cli2);
+	correct &= deltest13(cli1, cli2);
+	correct &= deltest14(cli1, cli2);
+	correct &= deltest15(cli1, cli2);
+	correct &= deltest16(cli1, cli2);
+	correct &= deltest17(cli1, cli2);
+	correct &= deltest18(cli1, cli2);
+	correct &= deltest19(cli1, cli2);
+	correct &= deltest20(cli1, cli2);
+	correct &= deltest21(&cli1, &cli2);
+
+	if (!correct) {
+		printf("Failed delete test\n");
+	} else {
+		printf("delete test ok !\n");
 	}
-	if (!deltest2(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest3(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest4(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest5(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest6(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest7(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest8(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest9(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest10(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest11(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest12(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest13(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest14(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest15(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest16(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest17(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest18(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest19(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	if (!deltest20(cli1, cli2)) {
-		correct = False;
-		goto fail;
-	}
-	printf("finished delete test\n");
 
   fail:
 	del_clean_area(cli1, cli2);



More information about the samba-cvs mailing list