1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

r9738: Adapt tdb_torture to the new CLEAR_IF_FIRST semantics. We need one parent

process holding the active if two cluster nodes access the same tdb.

Volker
(This used to be commit cbc66cc3ca)
This commit is contained in:
Volker Lendecke 2005-08-29 13:45:13 +00:00 committed by Gerald (Jerry) Carter
parent a34c21f378
commit 77670a2ec3

View File

@ -183,45 +183,45 @@ int main(int argc, char *argv[])
int loops = NLOOPS;
pid_t pids[NPROC];
pids[0] = getpid();
for (i=0;i<NPROC-1;i++) {
if ((pids[i+1]=fork()) == 0) break;
}
db = tdb_open("torture.tdb", 2, TDB_CLEAR_IF_FIRST,
db = tdb_open("torture.tdb", 0, TDB_CLEAR_IF_FIRST,
O_RDWR | O_CREAT, 0600);
if (!db) {
fatal("db open failed");
}
tdb_logging_function(db, tdb_log);
srand(seed + getpid());
srandom(seed + getpid() + time(NULL));
for (i=0;i<loops;i++) addrec_db();
for (i=0;i<NPROC;i++) {
pids[i] = fork();
if (pids[i] == 0) {
tdb_reopen_all();
tdb_traverse(db, NULL, NULL);
tdb_traverse(db, traverse_fn, NULL);
tdb_traverse(db, traverse_fn, NULL);
tdb_logging_function(db, tdb_log);
tdb_close(db);
srand(seed + getpid());
srandom(seed + getpid() + time(NULL));
for (i=0;i<loops;i++) addrec_db();
if (getpid() == pids[0]) {
for (i=0;i<NPROC-1;i++) {
int status;
if (waitpid(pids[i+1], &status, 0) != pids[i+1]) {
printf("failed to wait for %d\n",
(int)pids[i+1]);
exit(1);
}
if (WEXITSTATUS(status) != 0) {
printf("child %d exited with status %d\n",
(int)pids[i+1], WEXITSTATUS(status));
exit(1);
}
tdb_traverse(db, NULL, NULL);
tdb_traverse(db, traverse_fn, NULL);
tdb_traverse(db, traverse_fn, NULL);
tdb_close(db);
exit(0);
}
printf("OK\n");
}
for (i=0;i<NPROC;i++) {
int status;
if (waitpid(pids[i], &status, 0) != pids[i]) {
printf("failed to wait for %d\n",
(int)pids[i]);
exit(1);
}
if (WEXITSTATUS(status) != 0) {
printf("child %d exited with status %d\n",
(int)pids[i], WEXITSTATUS(status));
exit(1);
}
}
printf("OK\n");
return 0;
}