int main(int argc1, char *argv[]) { route_init(NULL, 0); route_register(&rt_filea_method); route_register(&rt_fileov_method); route_register(&rt_stdin_method); route_register(&rt_stdout_method); route_register(&rt_stderr_method); route_register(&rt_rs_method); if ( ! elog_init(1, "cascade test", NULL)) elog_die(FATAL, "didn't initialise elog\n"); out = route_open("stdout", NULL, NULL, 0); err = route_open("stderr", NULL, NULL, 0); rs_init(); /* run cascade with all the possible modes */ test_cascade(CASCADE_AVG, "avg", TAB_SING, TAB_SINGINFO, TAB_SINGINFOKEY, TAB_MULT, TAB_MULTINFO, TAB_MULTINFOKEY, RES_AVGSING, RES_AVGSINGKEY, RES_AVGMULT, RES_AVGMULTKEY); test_cascade(CASCADE_MIN, "min", TAB_SING, TAB_SINGINFO, TAB_SINGINFOKEY, TAB_MULT, TAB_MULTINFO, TAB_MULTINFOKEY, RES_MINSING, RES_MINSINGKEY, RES_MINMULT, RES_MINMULTKEY); test_cascade(CASCADE_MAX, "max", TAB_SING, TAB_SINGINFO, TAB_SINGINFOKEY, TAB_MULT, TAB_MULTINFO, TAB_MULTINFOKEY, RES_MAXSING, RES_MAXSINGKEY, RES_MAXMULT, RES_MAXMULTKEY); test_cascade(CASCADE_SUM, "sum", TAB_SING, TAB_SINGINFO, TAB_SINGINFOKEY, TAB_MULT, TAB_MULTINFO, TAB_MULTINFOKEY, RES_SUMSING, RES_SUMSINGKEY, RES_SUMMULT, RES_SUMMULTKEY); test_cascade(CASCADE_FIRST, "first", TAB_SING, TAB_SINGINFO, TAB_SINGINFOKEY, TAB_MULT, TAB_MULTINFO, TAB_MULTINFOKEY, RES_FIRSTSING, RES_FIRSTSINGKEY, RES_FIRSTMULT, RES_FIRSTMULTKEY); test_cascade(CASCADE_LAST, "last", TAB_SING, TAB_SINGINFO, TAB_SINGINFOKEY, TAB_MULT, TAB_MULTINFO, TAB_MULTINFOKEY, RES_LASTSING, RES_LASTSINGKEY, RES_LASTMULT, RES_LASTMULTKEY); rs_fini(); elog_fini(); route_close(err); route_close(out); route_fini(); printf("tests finished successfully\n"); exit(0); }
void iiab_stop() { /* remove lock file if applicable */ if (iiab_havelock) { unlink(iiab_havelock); nfree(iiab_havelock); } /* finalise and free iiab class data */ nfree(iiab_cmdopts); nfree(iiab_cmdusage); cf_destroy(iiab_cmdarg); cf_destroy(iiab_cf); /* finalise co-operative clases co-ordinated by iiab */ rs_fini(); elog_fini(); route_fini(); callback_fini(); iiab_free_dir_locations(); }
int main(int argc, char **argv) { ROUTE err, saveroute; int i; TABLE tab; char *str; route_init(NULL, 0); route_register(&rt_filea_method); route_register(&rt_fileov_method); route_register(&rt_stdin_method); route_register(&rt_stdout_method); route_register(&rt_stderr_method); route_register(&rt_rs_method); rs_init(); if ( ! elog_init(1, argv[0], NULL)) elog_die(FATAL, "Didn't initialise elog\n"); err = route_open("stderr", NULL, NULL, 0); /* first lot of messages sent to the default places */ elog_send(INFO, "This is an eventlog test"); elog_send(INFO, NULL); elog_send(INFO, ""); elog_send(INFO, "Event!!"); elog_send(DEBUG, "Event!!"); elog_send(WARNING, "Event!!"); elog_send(ERROR, "Event!!"); elog_send(INFO, "Event!!"); /* change origin */ elog_setorigin("etest"); elog_send(INFO, "test of set origin"); /* set one new purl route */ elog_setsevpurl(DEBUG, FILE1); elog_send(INFO, "on screen"); elog_send(DEBUG, "in file"); elog_send(WARNING, "on screen"); /* set second identical purl route to reuse the previous one */ elog_setsevpurl(ERROR, FILE1); if (elog_opendest[DEBUG].route != elog_opendest[ERROR].route) route_die(err, "[13] didnt reuse already open DEBUG route\n"); elog_send(ERROR, "in file"); /* set identical below purl route */ if ( !elog_setbelowpurl(INFO, FILE1)) route_die(err, "[14] unable to setbelowpurl() file\n"); if (elog_opendest[DEBUG].route != elog_opendest[ERROR].route || elog_opendest[INFO].route != elog_opendest[ERROR].route) route_die(err, "[14] didnt reuse already open ERROR route\n"); elog_send(DEBUG, "in file"); elog_send(INFO, "in file"); elog_send(WARNING, "on screen"); elog_send(ERROR, "in file"); elog_send(FATAL, "on screen"); /* set identical above purl route */ if ( !elog_setabovepurl(ERROR, FILE1)) route_die(err, "[19] unable to setabovepurl() file\n"); if (elog_opendest[ERROR].route != elog_opendest[INFO].route || elog_opendest[FATAL].route != elog_opendest[INFO].route) route_die(err, "[19] didnt reuse already open INFO route\n"); elog_send(DEBUG, "in file"); elog_send(INFO, "in file"); elog_send(WARNING, "on screen"); elog_send(ERROR, "in file"); elog_send(FATAL, "in file"); /* set identical all purl route */ saveroute = elog_opendest[DEBUG].route; if ( !elog_setallpurl(FILE1)) route_die(err, "[24] unable to setallpurl() file\n"); for (i=0; i < ELOG_NSEVERITIES; i++) if (elog_opendest[i].route != saveroute) route_die(err, "[24] didnt reuse already open %s route\n", elog_sevstring[i]); elog_send(DEBUG, "in file"); elog_send(INFO, "in file"); elog_send(WARNING, "in file"); elog_send(ERROR, "in file"); elog_send(FATAL, "in file"); /* set one different purl - timestore that we currently have to set up * ourselves */ saveroute = route_open(RS1, "event log test", NULL, 10); if ( ! saveroute) route_die(err, "[29] unable to create/open timestore\n"); route_close(saveroute); if ( ! elog_setsevpurl(INFO, RS1)) route_die(err, "[29] unable to setsevpurl() timestore\n"); if (elog_opendest[INFO].route == elog_opendest[WARNING].route) route_die(err, "[29] different route same as WARNING\n"); elog_send(DEBUG, "in file"); elog_send(INFO, "in timestore"); elog_send(WARNING, "in file"); elog_send(ERROR, "in file"); elog_send(FATAL, "in file"); /* set one different route */ #if 0 elog_send(INFO, ""); elog_send(INFO, "Event!!"); elog_send(DEBUG, "Event!!"); elog_send(WARNING, "Event!!"); elog_send(ERROR, "Event!!"); elog_send(INFO, "Event!!"); elog_send(INFO, "Event!!"); elog_send(INFO, "Event!!"); elog_send(INFO, "Event!!"); elog_send(INFO, "Event!!"); elog_send(INFO, "Event!!"); elog_send(INFO, "Event!!"); elog_send(INFO, "Event!!"); #endif /* change format */ elog_setsevroute(WARNING, err); elog_setformat(WARNING, "%s %s"); elog_send(WARNING, "still works??"); /* safe logging */ elog_safeprintf(INFO, "This is an eventlog test 35"); elog_safeprintf(INFO, NULL); elog_safeprintf(INFO, ""); elog_safeprintf(INFO, "Event!! 38"); elog_safeprintf(DEBUG, "Event!! 39"); elog_safeprintf(WARNING, "Event!! 40"); elog_safeprintf(ERROR, "Event!! 41"); elog_safeprintf(INFO, "Event!!"); /* print the status out */ tab = elog_getstatus(); str = table_printcols_a(tab, elog_colnames); printf("%s\n", str); nfree(str); table_destroy(tab); rs_fini(); elog_fini(); route_close(err); route_fini(); exit(0); }
int main(int argc, char **argv) { time_t now; /* Initialise route, runq and job classes */ now = time(NULL); route_init(NULL, 0); route_register(&rt_filea_method); route_register(&rt_fileov_method); route_register(&rt_stdin_method); route_register(&rt_stdout_method); route_register(&rt_stderr_method); if ( ! elog_init(1, "job test", NULL)) elog_die(FATAL, "didn't initialise elog\n"); sig_init(); callback_init(); runq_init(now); meth_init(); job_init(); /* Test should fail due to incorrect method */ elog_printf(DEBUG, "Expect a complaint! -> "); if (job_add(5, 5, 0, 1, "test1a1", "internal_test", "stdout", "stderr", 100, NULL, "echo \"Hello, world\"") != -1) { elog_die(FATAL, "[1a] Shouldn't be able to add\n"); } /* Single test in five seconds, never to run */ if (job_add(5, 5, 0, 1, "test1a2", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1a] Can't add\n"); } /* Attention: some white box testing */ itree_first(runq_event); if (itree_getkey(runq_event) != now+5) { elog_die(FATAL, "[1a] Queued at an incorrect time\n"); } job_clear(); if (!itree_empty(runq_event) || !itree_empty(runq_tab)) { elog_die(FATAL, "[1a] Trees not emptied. runq_events=%d, runq_tab=%d\n", itree_n(runq_event), itree_n(runq_tab)); } now = time(NULL); /* Two tests both in five seconds, never to run */ if (job_add(5, 5, 0, 1, "test1b1", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1b] Can't add first\n"); } if (job_add(5, 5, 0, 1, "test1b2", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1b] Can't add second\n"); } itree_first(runq_event); if (itree_getkey(runq_event) != now+5) { elog_die(FATAL, "[1b] First queued at an incorrect time\n"); } itree_next(runq_event); if (itree_getkey(runq_event) != now+5) { elog_die(FATAL, "[1b] Second queued at an incorrect time\n"); } job_clear(); if (!itree_empty(runq_event) || !itree_empty(runq_tab)) { elog_die(FATAL, "[1b] Trees not emptied. runq_events=%d, runq_tab=%d\n", itree_n(runq_event), itree_n(runq_tab)); } now = time(NULL); /* Two tests one in five seconds, the other in six, never to run */ if (job_add(6, 6, 0, 1, "test1c1", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1c] Can't add first\n"); } if (job_add(now+5, 5, 0, 1, "test1c2", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1c] Can't add second\n"); } itree_first(runq_event); if (itree_getkey(runq_event) != now+5) { elog_die(FATAL, "[1c] First queued at an incorrect time\n"); } itree_next(runq_event); if (itree_getkey(runq_event) != now+6) { elog_die(FATAL, "[1c] Second queued at an incorrect time\n"); } job_clear(); if (!itree_empty(runq_event) || !itree_empty(runq_tab)) { elog_die(FATAL, "[1c] Trees not emptied. runq_events=%d, runq_tab=%d\n", itree_n(runq_event), itree_n(runq_tab)); } now = time(NULL); /* Continuous single test supposed to start two seconds ago, * next run in three; never to run */ if (job_add(-2, 5, 0, 0, "test1d1", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1d] Can't add\n"); } itree_first(runq_event); if (itree_getkey(runq_event) != now+3) { elog_die(FATAL, "[1d] Event queued at an incorrect time: bad=%d good=%ld\n", itree_getkey(runq_event), now+3); } job_clear(); if (runq_nsched() > 0) { elog_die(FATAL, "[1d] Still active work scheduled. runq_events=%d, " "runq_tab=%d runq_nsched()=%d\n", itree_n(runq_event), itree_n(runq_tab), runq_nsched()); runq_dump(); } now = time(NULL); /* Two continous tests, starting two seconds ago, next next run in four; * never to run */ if (job_add(-2, 6, 0, 0, "test1e1", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1e] Can't add first\n"); } if (job_add(-3, 5, 0, 0, "test1e2", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1e] Can't add second\n"); } itree_first(runq_event); while (((struct runq_work*) itree_get(runq_event))->expired) itree_next(runq_event); if (itree_getkey(runq_event) != now+2) { elog_die(FATAL, "[1e] First queued at an incorrect time\n"); } itree_next(runq_event); while (((struct runq_work*) itree_get(runq_event))->expired) itree_next(runq_event); if (itree_getkey(runq_event) != now+4) { elog_die(FATAL, "[1e] Second queued at an incorrect time\n"); } job_clear(); if (runq_nsched() > 0) { elog_die(FATAL, "[1e] Still active work scheduled. runq_events=%d, " "runq_tab=%d runq_nsched()=%d\n", itree_n(runq_event), itree_n(runq_tab), runq_nsched()); runq_dump(); } now = time(NULL); /* Two 5 run jobs, scheduled to start 10 seconds ago, with periods * of 5 and 6 seconds; never to run */ if (job_add(-10, 6, 0, 5, "test1f1", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1f] Can't add first\n"); } if (job_add(-10, 5, 0, 5, "test1f2", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1f] Can't add second\n"); } itree_first(runq_event); while (((struct runq_work*) itree_get(runq_event))->expired) itree_next(runq_event); if (itree_getkey(runq_event) != now+2) { elog_die(FATAL, "[1f] First queued at an incorrect time\n"); } itree_next(runq_event); while (((struct runq_work*) itree_get(runq_event))->expired) itree_next(runq_event); if (itree_getkey(runq_event) != now+5) { elog_die(FATAL, "[1f] Second queued at an incorrect time\n"); } job_clear(); if (runq_nsched() > 0) { elog_die(FATAL, "[1f] Still active work scheduled. runq_events=%d, " "runq_tab=%d runq_nsched()=%d\n", itree_n(runq_event), itree_n(runq_tab), runq_nsched()); runq_dump(); } now = time(NULL); /* Two 5 run jobs, scheduled to start 100 seconds ago, with periods * of 5 and 6 seconds; they should never be scheduled */ if (job_add(-100, 6, 0, 5, "test1g1", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1g] Can't add first\n"); } if (job_add(-100, 5, 0, 5, "test1g2", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1g] Can't add second\n"); } if (runq_nsched() > 0) { elog_die(FATAL, "[1g] Still active work scheduled. runq_events=%d, " "runq_tab=%d runq_nsched()=%d\n", itree_n(runq_event), itree_n(runq_tab), runq_nsched()); runq_dump(); } job_clear(); now = time(NULL); /* Two five run tests, starting at different times in the past, * five runs each wittth different periods; they should both * run now */ if (job_add(-24, 6, 0, 5, "test1h1", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1h] Can't add first\n"); } if (job_add(-20, 5, 0, 5, "test1h2", "internal_test", "stdout", "stderr", 100, "exec", "echo \"Hello, world\"") == -1) { elog_die(FATAL, "[1h] Can't add second\n"); } if (runq_nsched() != 2) { elog_die(FATAL, "[1h] Two jobs should be scheduled not %d\n", runq_nsched()); runq_dump(); } sig_on(); sleep(6); /* let it run */ sleep(1); /* let it run */ sleep(1); /* let it run */ sleep(1); /* let it run */ sig_off(); if (runq_nsched() > 0) { elog_die(FATAL, "[1h] Still active work scheduled. runq_events=%d, " "runq_tab=%d runq_nsched()=%d\n", itree_n(runq_event), itree_n(runq_tab), runq_nsched()); runq_dump(); } job_clear(); #if 0 /* check all tables/lists are empty */ if (!itree_empty(runq_event) || !itree_empty(runq_tab)) { elog_die(FATAL, "[1i] Still entries in tables. runq_events=%d, " "runq_tab=%d runq_nsched()=%d\n", itree_n(runq_event), itree_n(runq_tab), runq_nsched()); runq_dump(); } #endif job_fini(); meth_fini(); runq_fini(); elog_fini(); route_fini(); callback_fini(); printf("%s: tests finished\n", argv[0]); exit(0); }
void rib_fini(void) { ip_addr_fini(); arp_fini(); route_fini(); }