Beispiel #1
0
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);
}
Beispiel #2
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();
}
Beispiel #3
0
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);
}
Beispiel #4
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);
}
Beispiel #5
0
void
rib_fini(void) {
  ip_addr_fini();
  arp_fini();
  route_fini();
}