svn commit: samba r18371 - in
branches/SAMBA_4_0/source/torture/raw: .
tridge at samba.org
tridge at samba.org
Mon Sep 11 07:58:10 GMT 2006
Author: tridge
Date: 2006-09-11 07:58:08 +0000 (Mon, 11 Sep 2006)
New Revision: 18371
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=18371
Log:
made the directory depth notify test independent of timing
Modified:
branches/SAMBA_4_0/source/torture/raw/notify.c
Changeset:
Modified: branches/SAMBA_4_0/source/torture/raw/notify.c
===================================================================
--- branches/SAMBA_4_0/source/torture/raw/notify.c 2006-09-11 07:56:23 UTC (rev 18370)
+++ branches/SAMBA_4_0/source/torture/raw/notify.c 2006-09-11 07:58:08 UTC (rev 18371)
@@ -979,12 +979,14 @@
union smb_notify notify;
union smb_open io;
struct smbcli_request *req;
+ struct timeval tv;
struct {
const char *path;
BOOL recursive;
uint32_t filter;
int expected;
int fnum;
+ int counted;
} dirs[] = {
{BASEDIR "\\abc", True, FILE_NOTIFY_CHANGE_NAME, 30 },
{BASEDIR "\\zqy", True, FILE_NOTIFY_CHANGE_NAME, 8 },
@@ -1009,6 +1011,7 @@
};
int i;
NTSTATUS status;
+ BOOL all_done = False;
printf("TESTING CHANGE NOTIFY FOR DIFFERENT DEPTHS\n");
@@ -1053,20 +1056,35 @@
talloc_free(path);
}
- /* give a bit of time for all the events to propogate */
- sleep(4);
+ /* give a bit of time for the events to propogate */
+ tv = timeval_current();
- /* count events that have happened in each dir */
+ do {
+ /* count events that have happened in each dir */
+ for (i=0;i<ARRAY_SIZE(dirs);i++) {
+ notify.nttrans.in.file.fnum = dirs[i].fnum;
+ req = smb_raw_changenotify_send(cli->tree, ¬ify);
+ smb_raw_ntcancel(req);
+ notify.nttrans.out.num_changes = 0;
+ status = smb_raw_changenotify_recv(req, mem_ctx, ¬ify);
+ dirs[i].counted += notify.nttrans.out.num_changes;
+ }
+
+ all_done = True;
+
+ for (i=0;i<ARRAY_SIZE(dirs);i++) {
+ if (dirs[i].counted != dirs[i].expected) {
+ all_done = False;
+ }
+ }
+ } while (!all_done && timeval_elapsed(&tv) < 20);
+
+ printf("took %.4f seconds to propogate all events\n", timeval_elapsed(&tv));
+
for (i=0;i<ARRAY_SIZE(dirs);i++) {
- notify.nttrans.in.file.fnum = dirs[i].fnum;
- req = smb_raw_changenotify_send(cli->tree, ¬ify);
- smb_raw_ntcancel(req);
- notify.nttrans.out.num_changes = 0;
- status = smb_raw_changenotify_recv(req, mem_ctx, ¬ify);
- if (notify.nttrans.out.num_changes != dirs[i].expected) {
+ if (dirs[i].counted != dirs[i].expected) {
printf("ERROR: i=%d expected %d got %d for '%s'\n",
- i, dirs[i].expected, notify.nttrans.out.num_changes,
- dirs[i].path);
+ i, dirs[i].expected, dirs[i].counted, dirs[i].path);
ret = False;
}
}
More information about the samba-cvs
mailing list