svn commit: samba r13271 - in
branches/SAMBA_4_0/source/torture/basic: .
jra at samba.org
jra at samba.org
Wed Feb 1 03:36:05 GMT 2006
Author: jra
Date: 2006-02-01 03:36:04 +0000 (Wed, 01 Feb 2006)
New Revision: 13271
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=13271
Log:
Do the same tests with directories.
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-01 02:30:57 UTC (rev 13270)
+++ branches/SAMBA_4_0/source/torture/basic/delete.c 2006-02-01 03:36:04 UTC (rev 13271)
@@ -949,8 +949,6 @@
smbcli_close(cli1->tree, dnum1);
- /* Now it should be gone... */
-
printf("fifteenth delete on close test succeeded.\n");
/* Test 16: delete on close under rename */
@@ -1219,6 +1217,165 @@
printf("eighteenth delete on close test succeeded.\n");
+ /* Test 19. With directories. */
+
+ /* Ensure the file doesn't already exist. */
+ smbcli_close(cli1->tree, fnum1);
+ smbcli_close(cli1->tree, fnum2);
+
+ smbcli_deltree(cli1->tree, dirname);
+
+ /* Firstly create with all access, but delete on close. */
+ fnum1 = smbcli_nt_create_full(cli1->tree, dirname, 0,
+ SEC_FILE_READ_DATA|
+ SEC_FILE_WRITE_DATA|
+ SEC_STD_DELETE,
+ FILE_ATTRIBUTE_DIRECTORY,
+ NTCREATEX_SHARE_ACCESS_READ|
+ NTCREATEX_SHARE_ACCESS_WRITE|
+ NTCREATEX_SHARE_ACCESS_DELETE,
+ NTCREATEX_DISP_CREATE,
+ NTCREATEX_OPTIONS_DIRECTORY|NTCREATEX_OPTIONS_DELETE_ON_CLOSE, 0);
+
+ if (fnum1 == -1) {
+ printf("(%s) open - 1 of %s failed (%s)\n",
+ __location__, dirname, smbcli_errstr(cli1->tree));
+ correct = False;
+ goto fail;
+ }
+
+ /* The delete on close bit is *not* reported as being set. */
+ check_delete_on_close(cli1, fnum1, dirname, False);
+
+ /* Now try opening again for read-only. */
+ fnum2 = smbcli_nt_create_full(cli1->tree, dirname, 0,
+ SEC_RIGHTS_FILE_READ,
+ FILE_ATTRIBUTE_DIRECTORY,
+ NTCREATEX_SHARE_ACCESS_READ|
+ NTCREATEX_SHARE_ACCESS_WRITE|
+ NTCREATEX_SHARE_ACCESS_DELETE,
+ NTCREATEX_DISP_OPEN,
+ NTCREATEX_OPTIONS_DIRECTORY, 0);
+
+
+ /* Should work. */
+ if (fnum2 == -1) {
+ printf("(%s) open - 1 of %s failed (%s)\n",
+ __location__, dirname, smbcli_errstr(cli1->tree));
+ correct = False;
+ goto fail;
+ }
+
+ /* Now close both.... */
+ smbcli_close(cli1->tree, fnum1);
+ smbcli_close(cli1->tree, fnum2);
+
+ /* And the directory should be deleted ! */
+ fnum1 = smbcli_nt_create_full(cli1->tree, dirname, 0,
+ SEC_RIGHTS_FILE_READ,
+ FILE_ATTRIBUTE_DIRECTORY,
+ NTCREATEX_SHARE_ACCESS_READ|
+ NTCREATEX_SHARE_ACCESS_WRITE|
+ NTCREATEX_SHARE_ACCESS_DELETE,
+ NTCREATEX_DISP_OPEN,
+ NTCREATEX_OPTIONS_DIRECTORY, 0);
+ if (fnum1 != -1) {
+ printf("(%s) open of %s succeeded (should fail)\n",
+ __location__, dirname);
+ correct = False;
+ goto fail;
+ }
+
+ printf("nineteenth delete on close test succeeded.\n");
+
+ /* Test 20. */
+
+ smbcli_deltree(cli1->tree, dirname);
+
+ /* Firstly open and create with all access */
+ fnum1 = smbcli_nt_create_full(cli1->tree, dirname, 0,
+ SEC_FILE_READ_DATA|
+ SEC_FILE_WRITE_DATA|
+ SEC_STD_DELETE,
+ FILE_ATTRIBUTE_DIRECTORY,
+ NTCREATEX_SHARE_ACCESS_READ|
+ NTCREATEX_SHARE_ACCESS_WRITE|
+ NTCREATEX_SHARE_ACCESS_DELETE,
+ NTCREATEX_DISP_CREATE,
+ NTCREATEX_OPTIONS_DIRECTORY, 0);
+
+ if (fnum1 == -1) {
+ printf("(%s) open - 1 of %s failed (%s)\n",
+ __location__, dirname, smbcli_errstr(cli1->tree));
+ correct = False;
+ goto fail;
+ }
+
+ /* And close - just to create the directory. */
+ smbcli_close(cli1->tree, fnum1);
+
+ /* Next open with all access, but add delete on close. */
+ fnum1 = smbcli_nt_create_full(cli1->tree, dirname, 0,
+ SEC_FILE_READ_DATA|
+ SEC_FILE_WRITE_DATA|
+ SEC_STD_DELETE,
+ FILE_ATTRIBUTE_DIRECTORY,
+ NTCREATEX_SHARE_ACCESS_READ|
+ NTCREATEX_SHARE_ACCESS_WRITE|
+ NTCREATEX_SHARE_ACCESS_DELETE,
+ NTCREATEX_DISP_OPEN,
+ NTCREATEX_OPTIONS_DIRECTORY|NTCREATEX_OPTIONS_DELETE_ON_CLOSE, 0);
+
+ if (fnum1 == -1) {
+ printf("(%s) open - 1 of %s failed (%s)\n",
+ __location__, fname, smbcli_errstr(cli1->tree));
+ correct = False;
+ goto fail;
+ }
+
+ /* The delete on close bit is *not* reported as being set. */
+ check_delete_on_close(cli1, fnum1, dirname, False);
+
+ /* Now try opening again for read-only. */
+ fnum1 = smbcli_nt_create_full(cli1->tree, dirname, 0,
+ SEC_RIGHTS_FILE_READ,
+ FILE_ATTRIBUTE_DIRECTORY,
+ NTCREATEX_SHARE_ACCESS_READ|
+ NTCREATEX_SHARE_ACCESS_WRITE|
+ NTCREATEX_SHARE_ACCESS_DELETE,
+ NTCREATEX_DISP_OPEN,
+ NTCREATEX_OPTIONS_DIRECTORY, 0);
+
+ /* Should work. */
+ if (fnum2 == -1) {
+ printf("(%s) open - 1 of %s failed (%s)\n",
+ __location__, dirname, smbcli_errstr(cli1->tree));
+ correct = False;
+ goto fail;
+ }
+
+ /* Now close both.... */
+ smbcli_close(cli1->tree, fnum1);
+ smbcli_close(cli1->tree, fnum2);
+
+ /* See if the file is deleted - shouldn't be.... */
+ fnum1 = smbcli_nt_create_full(cli1->tree, dirname, 0,
+ SEC_RIGHTS_FILE_READ,
+ FILE_ATTRIBUTE_DIRECTORY,
+ NTCREATEX_SHARE_ACCESS_READ|
+ NTCREATEX_SHARE_ACCESS_WRITE|
+ NTCREATEX_SHARE_ACCESS_DELETE,
+ NTCREATEX_DISP_OPEN,
+ NTCREATEX_OPTIONS_DIRECTORY, 0);
+ if (fnum1 == -1) {
+ printf("(%s) open of %s failed (should succeed)\n",
+ __location__, dirname);
+ correct = False;
+ goto fail;
+ }
+
+ printf("twentieth delete on close test succeeded.\n");
+
printf("finished delete test\n");
fail:
@@ -1231,6 +1388,8 @@
smbcli_setatr(cli1->tree, fname, 0, 0);
smbcli_unlink(cli1->tree, fname);
+ smbcli_deltree(cli1->tree, dirname);
+
if (!torture_close_connection(cli1)) {
correct = False;
}
More information about the samba-cvs
mailing list