END_TEST START_TEST(dbcheck_with_filled_cache) { int forcesave = 0; linuxonly; initdb(); defaultcfg(); disable_logprints(); ck_assert_int_eq(remove_directory(TESTDIR), 1); ck_assert_int_eq(cachecount(), 0); strcpy(data.interface, "ethbasic"); ck_assert_int_eq(cacheupdate(), 1); strcpy(data.interface, "ethactive"); ck_assert_int_eq(cacheupdate(), 1); strcpy(data.interface, "ethnotactive"); data.active = 0; ck_assert_int_eq(cacheupdate(), 1); ck_assert_int_eq(cachecount(), 3); ck_assert_int_eq(cacheactivecount(), 2); fake_proc_net_dev("w", "ethbasic", 1, 2, 3, 4); fake_proc_net_dev("a", "ethnotactive", 5, 6, 7, 8); ck_assert_int_ne(dbcheck(0, &forcesave), 0); ck_assert_int_eq(forcesave, 1); }
END_TEST START_TEST(cacheflush_flushes_cache) { initdb(); disable_logprints(); ck_assert_int_eq(clean_testdbdir(), 1); ck_assert_int_eq(create_zerosize_dbfile("name1"), 1); ck_assert_int_eq(create_zerosize_dbfile("name2"), 1); ck_assert_int_eq(check_dbfile_exists("name1", 0), 1); ck_assert_int_eq(check_dbfile_exists(".name1", 0), 0); ck_assert_int_eq(check_dbfile_exists("name2", 0), 1); ck_assert_int_eq(check_dbfile_exists(".name2", 0), 0); ck_assert_int_eq(cachecount(), 0); strcpy(data.interface, "name1"); ck_assert_int_eq(cacheupdate(), 1); strcpy(data.interface, "name2"); ck_assert_int_eq(cacheupdate(), 1); ck_assert_int_eq(cacheadd("notfilled", 0), 1); ck_assert_int_eq(cachecount(), 3); ck_assert_int_eq(cacheactivecount(), 3); cacheflush(TESTDBDIR); ck_assert_int_eq(cachecount(), 0); ck_assert_int_eq(cacheactivecount(), 0); ck_assert_int_eq(check_dbfile_exists("name1", sizeof(DATA)), 1); ck_assert_int_eq(check_dbfile_exists(".name1", 0), 1); ck_assert_int_eq(check_dbfile_exists("name2", sizeof(DATA)), 1); ck_assert_int_eq(check_dbfile_exists(".name2", 0), 1); ck_assert_int_eq(check_dbfile_exists("notfilled", 0), 0); ck_assert_int_eq(check_dbfile_exists(".notfilled", 0), 0); }
int datalist_timevalidation(DSTATE *s) { if (s->current >= data.lastupdated) { data.lastupdated = s->current; cacheupdate(); return 1; } /* skip update if previous update is less than a day in the future */ /* otherwise exit with error message since the clock is problably messed */ if (data.lastupdated > (s->current+86400)) { snprintf(errorstring, 512, "Interface \"%s\" has previous update date too much in the future, exiting. (%d / %d)", data.interface, (unsigned int)data.lastupdated, (unsigned int)s->current); printe(PT_Error); /* clean daemon stuff before exit */ if (s->rundaemon && !debug) { close(pidfile); unlink(cfg.pidfile); } ibwflush(); exit(EXIT_FAILURE); } return 0; }
END_TEST START_TEST(cacheupdate_when_empty) { initdb(); strcpy(data.interface, "name1"); ck_assert_int_eq(cacheupdate(), 1); ck_assert_int_eq(cachecount(), 1); ck_assert_int_eq(cacheactivecount(), 1); }
END_TEST START_TEST(cacheupdate_when_filled) { initdb(); strcpy(data.interface, "name1"); ck_assert_int_eq(cacheupdate(), 1); ck_assert_int_eq(cachecount(), 1); ck_assert_int_eq(cacheactivecount(), 1); strcpy(data.interface, "name2"); ck_assert_int_eq(cacheupdate(), 1); ck_assert_int_eq(cachecount(), 2); ck_assert_int_eq(cacheactivecount(), 2); strcpy(data.interface, "name1"); data.active = 0; ck_assert_int_eq(cacheupdate(), 1); ck_assert_int_eq(cachecount(), 2); ck_assert_int_eq(cacheactivecount(), 1); }
END_TEST START_TEST(cacheget_when_filled) { initdb(); ck_assert_int_eq(cachecount(), 0); strcpy(data.interface, "name1"); ck_assert_int_eq(cacheupdate(), 1); ck_assert_int_eq(cachecount(), 1); strcpy(data.interface, "empty"); ck_assert_int_eq(cacheget(dataptr), 1); ck_assert_str_eq(data.interface, "name1"); }