END_TEST START_TEST(cacheremove_when_filled) { initdb(); ck_assert_int_eq(cachecount(), 0); ck_assert_int_eq(cacheadd("name4", 0), 1); ck_assert_int_eq(cacheadd("name3", 0), 1); ck_assert_int_eq(cacheadd("name2", 0), 1); ck_assert_int_eq(cacheadd("name1", 0), 1); ck_assert_int_eq(cachecount(), 4); ck_assert(cacheremove("does_not_exist")==NULL); ck_assert_int_eq(cachecount(), 4); ck_assert(cacheremove("name1")!=NULL); ck_assert_int_eq(cachecount(), 3); ck_assert(cacheremove("name1")==NULL); ck_assert_int_eq(cachecount(), 3); ck_assert(cacheremove("name3")!=NULL); ck_assert_int_eq(cachecount(), 2); ck_assert(cacheremove("name4")==NULL); ck_assert_int_eq(cachecount(), 1); ck_assert(cacheremove("name2")==NULL); ck_assert_int_eq(cachecount(), 0); }
void processdatalist(DSTATE *s) { while (s->datalist!=NULL) { if (debug) { printf("d: processing %s (%d)...\n", s->datalist->data.interface, s->dodbsave); } /* get data from cache if available */ if (!datalist_cacheget(s)) { s->datalist = s->datalist->next; continue; } /* get info if interface has been marked as active */ datalist_getifinfo(s); /* check that the time is correct */ if (!datalist_timevalidation(s)) { s->datalist = s->datalist->next; continue; } /* write data to file if now is the time for it */ if (!datalist_writedb(s)) { /* remove interface from update list since the database file doesn't exist anymore */ snprintf(errorstring, 512, "Database for interface \"%s\" no longer exists, removing from update list.", s->datalist->data.interface); printe(PT_Info); s->datalist = cacheremove(s->datalist->data.interface); s->dbcount--; cachestatus(); continue; } s->datalist = s->datalist->next; } }
END_TEST START_TEST(cacheremove_when_empty) { ck_assert(cacheremove("does_not_exist")==NULL); }