int fnum1, fnum2;
int i;
BOOL correct = True;
+ struct timeval tv, tv_start;
const char *fnames[2] = {"\\denytest1.dat", "\\denytest1.exe"};
if (!torture_open_connection(&cli1)) {
printf("testing %d entries\n", ARRAY_SIZE(denytable1));
+ GetTimeOfDay(&tv_start);
+
for (i=0; i<ARRAY_SIZE(denytable1); i++) {
enum deny_result res;
const char *fname = fnames[denytable1[i].isexe];
}
if (torture_showall || res != denytable1[i].result) {
- printf("%s %8s %10s %8s %10s %s (correct=%s)\n",
+ long long tdif;
+ GetTimeOfDay(&tv);
+ tdif = usec_time_diff(&tv, &tv_start);
+ tdif /= 1000;
+ printf("%lld: %s %8s %10s %8s %10s %s (correct=%s)\n",
+ tdif,
fname,
denystr(denytable1[i].deny1),
openstr(denytable1[i].mode1),
int i;
BOOL correct = True;
const char *fnames[2] = {"\\denytest2.dat", "\\denytest2.exe"};
+ struct timeval tv, tv_start;
if (!torture_open_connection(&cli1) || !torture_open_connection(&cli2)) {
return False;
cli_close(cli1->tree, fnum1);
}
+ GetTimeOfDay(&tv_start);
+
for (i=0; i<ARRAY_SIZE(denytable2); i++) {
enum deny_result res;
const char *fname = fnames[denytable2[i].isexe];
}
if (torture_showall || res != denytable2[i].result) {
- printf("%s %8s %10s %8s %10s %s (correct=%s)\n",
+ long long tdif;
+ GetTimeOfDay(&tv);
+ tdif = usec_time_diff(&tv, &tv_start);
+ tdif /= 1000;
+ printf("%lld: %s %8s %10s %8s %10s %s (correct=%s)\n",
+ tdif,
fname,
denystr(denytable2[i].deny1),
openstr(denytable2[i].mode1),
}
+/*
+test how many open files this server supports on the one socket
+*/
+
+static BOOL run_deferopen(struct cli_state *cli, int dummy)
+{
+ char *fname = "\\defer_open_test.dat";
+ int retries=4;
+ int i = 0;
+ BOOL correct = True;
+
+ if (retries <= 0) {
+ printf("failed to connect\n");
+ return False;
+ }
+
+ printf("Testing deferred open requests.\n");
+
+ while (i < 4) {
+ int fnum = -1;
+ do {
+ fnum = cli_nt_create_full(cli->tree, fname, 0, GENERIC_RIGHTS_FILE_ALL_ACCESS,
+ FILE_ATTRIBUTE_NORMAL, NTCREATEX_SHARE_ACCESS_NONE,
+ NTCREATEX_DISP_OPEN_IF, 0, 0);
+ if (fnum != -1) {
+ break;
+ }
+ } while (NT_STATUS_EQUAL(cli_nt_error(cli->tree),NT_STATUS_SHARING_VIOLATION));
+
+ if (fnum == -1) {
+ fprintf(stderr,"Failed to open %s, error=%s\n", fname, cli_errstr(cli->tree));
+ return False;
+ }
+
+ printf("pid %u open %d\n", getpid(), i);
+
+ sleep(10);
+ i++;
+ if (NT_STATUS_IS_ERR(cli_close(cli->tree, fnum))) {
+ fprintf(stderr,"Failed to close %s, error=%s\n", fname, cli_errstr(cli->tree));
+ return False;
+ }
+ sleep(2);
+ }
+
+ if (NT_STATUS_IS_ERR(cli_unlink(cli->tree, fname))) {
+ /* All until the last unlink will fail with sharing violation. */
+ if (!NT_STATUS_EQUAL(cli_nt_error(cli->tree),NT_STATUS_SHARING_VIOLATION)) {
+ printf("unlink of %s failed (%s)\n", fname, cli_errstr(cli->tree));
+ correct = False;
+ }
+ }
+
+ printf("deferred test finished\n");
+ if (!torture_close_connection(cli)) {
+ correct = False;
+ }
+ return correct;
+}
+
/*
test how many open files this server supports on the one socket
*/
#if 1
{"OPENATTR", run_openattrtest, 0},
#endif
+ {"DEFER_OPEN", run_deferopen, FLAG_MULTIPROC},
{"XCOPY", run_xcopy, 0},
{"RENAME", run_rename, 0},
{"DELETE", run_deletetest, 0},