void TestEmanualCmd::initTestCase() { remove(Config::Instance()->getTestDbName().c_str()); initdb(); dummy_db(); }
END_TEST START_TEST(rebuilddbtotal_rebuilds_total) { int i; initdb(); suppress_output(); disable_logprints(); cfg.flock = 1; strcpy(data.interface, "ethtest"); strcpy(data.nick, "ethtest"); data.totalrx = 1234; data.totaltx = 1234; for (i=0; i<12; i++) { data.month[i].rx = 1; data.month[i].tx = 2; data.month[i].used = 1; } ck_assert_int_eq(clean_testdbdir(), 1); ck_assert_int_eq(writedb("ethtest", TESTDBDIR, 1), 1); rebuilddbtotal("ethtest", TESTDBDIR); ck_assert_int_eq(check_dbfile_exists("ethtest", sizeof(DATA)), 1); ck_assert_int_eq(check_dbfile_exists(".ethtest", sizeof(DATA)), 1); ck_assert_int_eq(data.totalrx, 12); ck_assert_int_eq(data.totaltx, 24); }
END_TEST START_TEST(rotatemonths_really_rotates_months) { int i; initdb(); for (i=0; i<12; i++) { ck_assert_int_eq(data.month[i].rx, 0); ck_assert_int_eq(data.month[i].tx, 0); ck_assert_int_eq(data.month[i].rxk, 0); ck_assert_int_eq(data.month[i].txk, 0); } data.month[0].rx = data.month[0].tx = 1; data.month[0].rxk = data.month[0].txk = 1; data.month[0].month = 1; data.month[0].used = 1; rotatemonths(); ck_assert_int_eq(data.month[0].rx, 0); ck_assert_int_eq(data.month[0].tx, 0); ck_assert_int_eq(data.month[0].rxk, 0); ck_assert_int_eq(data.month[0].txk, 0); ck_assert_int_ne(data.month[0].month, 0); ck_assert_int_eq(data.month[1].rx, 1); ck_assert_int_eq(data.month[1].tx, 1); ck_assert_int_eq(data.month[1].rxk, 1); ck_assert_int_eq(data.month[1].txk, 1); ck_assert_int_eq(data.month[1].month, 1); ck_assert_int_eq(data.month[1].used, 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); }
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(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); }
int deletedb(char* key){ int n; struct db *temp; if(dbcounter==0){ initdb(); dbcounter=1; } temp=head; if(strlen(key)>strlen(temp->record)) n=strlen(key); else n=strlen(temp->record); if(strncmp(key,temp->record,n)==0){ head=temp->next; cprintf("record:%s deleted.\n",key); return 1; }else{ while(temp->next!=first){ if(strncmp(key,temp->next->record,n)==0){ temp->next=temp->next->next; cprintf("record:%s deleted.\n",key); return 1; } temp=temp->next; } } cprintf("can't found %s\n",key); return -1; }
END_TEST START_TEST(cleartop10_clears_top10) { int i; initdb(); suppress_output(); disable_logprints(); cfg.flock = 1; strcpy(data.interface, "ethtest"); strcpy(data.nick, "ethtest"); for (i=0; i<10; i++) { data.top10[i].rx = 1; data.top10[i].tx = 1; data.top10[i].used = 1; } ck_assert_int_eq(clean_testdbdir(), 1); ck_assert_int_eq(writedb("ethtest", TESTDBDIR, 1), 1); cleartop10("ethtest", TESTDBDIR); ck_assert_int_eq(check_dbfile_exists("ethtest", sizeof(DATA)), 1); ck_assert_int_eq(check_dbfile_exists(".ethtest", sizeof(DATA)), 1); for (i=0; i<10; i++) { ck_assert_int_eq(data.top10[i].rx, 0); ck_assert_int_eq(data.top10[i].tx, 0); ck_assert_int_eq(data.top10[i].rxk, 0); ck_assert_int_eq(data.top10[i].txk, 0); ck_assert_int_eq(data.top10[i].used, 0); } }
END_TEST START_TEST(rotatedays_really_rotates_days) { int i; initdb(); for (i=0; i<30; i++) { ck_assert_int_eq(data.day[i].rx, 0); ck_assert_int_eq(data.day[i].tx, 0); ck_assert_int_eq(data.day[i].rxk, 0); ck_assert_int_eq(data.day[i].txk, 0); } data.day[0].rx = data.day[0].tx = 1; data.day[0].rxk = data.day[0].txk = 1; data.day[0].date = 1; data.day[0].used = 1; rotatedays(); ck_assert_int_eq(data.day[0].rx, 0); ck_assert_int_eq(data.day[0].tx, 0); ck_assert_int_eq(data.day[0].rxk, 0); ck_assert_int_eq(data.day[0].txk, 0); ck_assert_int_ne(data.day[0].date, 0); ck_assert_int_eq(data.day[1].rx, 1); ck_assert_int_eq(data.day[1].tx, 1); ck_assert_int_eq(data.day[1].rxk, 1); ck_assert_int_eq(data.day[1].txk, 1); ck_assert_int_eq(data.day[1].date, 1); ck_assert_int_eq(data.day[1].used, 1); }
END_TEST START_TEST(validatedb_with_initdb) { initdb(); strcpy(data.interface, "ethtest"); ck_assert_int_eq(validatedb(), 1); }
END_TEST START_TEST(database_outputs_do_not_crash) { int i; initdb(); defaultcfg(); strcpy(data.interface, "something"); strcpy(data.nick, "nothing"); data.totalrx = 1; data.totaltx = 2; data.currx = 3; data.curtx = 4; data.totalrxk = 5; data.totaltxk = 6; data.btime = 7; for (i=0; i<30; i++) { data.day[i].date = i+1; data.day[i].rx = data.day[i].tx = i*100; data.day[i].rxk = data.day[i].txk = i; data.day[i].used = 1; } for (i=0; i<10; i++) { data.top10[i].date = i+1; data.top10[i].rx = data.top10[i].tx = i*100; data.top10[i].rxk = data.top10[i].txk = i; data.top10[i].used = 1; } for (i=0; i<12; i++) { data.month[i].month = i+1; data.month[i].rx = data.month[i].tx = i*100; data.month[i].rxk = data.month[i].txk = i; data.month[i].used = 1; } for (i=0; i<24; i++) { data.hour[i].date = i+1; data.hour[i].rx = data.hour[i].tx = i*100; } suppress_output(); showdb(0); showdb(1); showdb(2); showdb(3); showdb(4); showdb(5); showdb(6); showdb(7); showdb(8); showdb(9); }
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(validatedb_with_invalid_totals) { initdb(); suppress_output(); strcpy(data.interface, "ethtest"); data.day[0].rx++; ck_assert_int_eq(validatedb(), 0); }
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"); }
END_TEST START_TEST(validatedb_with_top10_use) { initdb(); suppress_output(); strcpy(data.interface, "ethtest"); data.top10[0].used = 1; data.top10[1].used = 1; data.top10[2].used = 1; data.top10[5].used = 1; ck_assert_int_eq(validatedb(), 0); }
rt_shared void initstk(void) { /* Initialize both the local stack and the hector stack. Those two stacks * may have their context saved and restored in an Eiffel routine, so they * need to be correctly initialized. * In workbench mode, the debugger stack is also created here. */ EIF_GET_CONTEXT #ifdef ISE_GC char **top; #endif #ifdef EIF_ASSERTIONS #if defined(EIF_WINDOWS) && defined(_DEBUG) int tmpDbgFlag = 0; _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT); _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT); _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT); tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); tmpDbgFlag |= _CRTDBG_DELAY_FREE_MEM_DF; tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF; tmpDbgFlag |= _CRTDBG_CHECK_ALWAYS_DF; _CrtSetDbgFlag(tmpDbgFlag); #endif #endif #if defined(EIF_WINDOWS) && defined(_MSC_VER) /* This is to catch CRT raised exception when passing incorrect arguments to CRT routines. */ _set_invalid_parameter_handler(eif_invalid_paramter_handler); #endif #ifdef ISE_GC top = st_alloc(&loc_set, eif_stack_chunk); if (top != (char **) 0) top = st_alloc(&hec_stack, eif_stack_chunk); if (top == (char **) 0) eif_panic(MTC "can't create runtime stacks"); #endif #ifdef WORKBENCH initdb(); /* Initialize debugger stack */ #endif }
END_TEST START_TEST(cacheshow_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); suppress_output(); cacheshow(); }
END_TEST START_TEST(cachestatus_filled) { initdb(); disable_logprints(); 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); cachestatus(); }
END_TEST START_TEST(readdb_with_existing_dbfile_and_max_name_length) { initdb(); disable_logprints(); cfg.flock = 1; strcpy(data.interface, "1234567890123456789012345678901"); ck_assert_int_eq(clean_testdbdir(), 1); ck_assert_int_eq(writedb("1234567890123456789012345678901", TESTDBDIR, 1), 1); ck_assert_int_eq(check_dbfile_exists("1234567890123456789012345678901", sizeof(DATA)), 1); strcpy(data.interface, "none"); ck_assert_int_eq(readdb("1234567890123456789012345678901", TESTDBDIR), 0); ck_assert_str_eq(data.interface, "1234567890123456789012345678901"); }
void cduck_db_open () { FILE* fp = NULL; mkdir("/var/cduck", 0700); lockFD = open("/var/cduck/cduck.db.lock", O_RDWR | O_CREAT | O_EXLOCK); if (fp = fopen("/var/cduck/cduck.db", "r")) { fclose(fp); } sqlite3_open("/var/cduck/cduck.db", &db); assert(db); sqlite3_extended_result_codes(db, 1); if (fp == NULL) // this means we didn't open it earlier { initdb(); } initgroups(); }
END_TEST START_TEST(cachestatus_full) { int i; char buffer[8]; initdb(); defaultcfg(); disable_logprints(); ck_assert_int_eq(cachecount(), 0); for (i=1; i<=50; i++) { snprintf(buffer, 8, "name%d", i); ck_assert_int_eq(cacheadd(buffer, 0), 1); ck_assert_int_eq(ibwadd(buffer, 50-i), 1); } ck_assert_int_eq(cachecount(), 50); cachestatus(); }
END_TEST START_TEST(readdb_with_existing_dbfile_with_rename) { initdb(); disable_logprints(); cfg.flock = 1; strcpy(data.interface, "ethtest"); strcpy(data.nick, "ethtest"); ck_assert_int_eq(clean_testdbdir(), 1); ck_assert_int_eq(writedb("ethtest2", TESTDBDIR, 1), 1); ck_assert_int_eq(check_dbfile_exists("ethtest2", sizeof(DATA)), 1); strcpy(data.interface, "none"); strcpy(data.nick, "none"); ck_assert_int_eq(readdb("ethtest2", TESTDBDIR), 0); ck_assert_str_eq(data.interface, "ethtest2"); ck_assert_str_eq(data.nick, "ethtest2"); }
END_TEST START_TEST(parseifinfo_1kb_change) { initdb(); data.btime = getbtime(); data.lastupdated -= 100; data.currx = 1024; data.curtx = 1024; strcpy(data.interface, "eth0"); ck_assert_int_eq(ibwadd("eth0", 10), 1); strcpy(ifinfo.name, "eth0"); ifinfo.filled = 1; ifinfo.rx = 2048; ifinfo.tx = 2048; ifinfo.rxp = ifinfo.txp = 0; parseifinfo(0); ck_assert_int_eq(ifinfo.rx, 2048); ck_assert_int_eq(ifinfo.tx, 2048); ck_assert_int_eq(ifinfo.rxp, 0); ck_assert_int_eq(ifinfo.txp, 0); ck_assert_int_eq(data.day[0].rx, 0); ck_assert_int_eq(data.day[0].tx, 0); ck_assert_int_eq(data.day[0].rxk, 1); ck_assert_int_eq(data.day[0].txk, 1); ck_assert_int_eq(data.month[0].rx, 0); ck_assert_int_eq(data.month[0].tx, 0); ck_assert_int_eq(data.month[0].rxk, 1); ck_assert_int_eq(data.month[0].txk, 1); ck_assert_int_eq(data.totalrx, 0); ck_assert_int_eq(data.totaltx, 0); ck_assert_int_eq(data.totalrxk, 1); ck_assert_int_eq(data.totaltxk, 1); ck_assert_int_eq(data.currx, 2048); ck_assert_int_eq(data.curtx, 2048); }
int serchdb(char* key){ if(dbcounter==0){ initdb(); dbcounter=1; } int n; struct db *temp; temp=head; while(temp!=first){ if(strlen(key)>strlen(temp->record)) n=strlen(key); else n=strlen(temp->record); if(strncmp(temp->record,key,n)==0){ cprintf("data:%s\n",temp->data); return 1; } temp=temp->next; } cprintf("can't found record:%s\n",key); return -1; }
END_TEST START_TEST(cleanhours_does_not_remove_current_data) { int i; initdb(); for (i=0; i<24; i++) { ck_assert_int_eq(data.hour[i].rx, 0); ck_assert_int_eq(data.hour[i].tx, 0); } for (i=0; i<24; i++) { data.hour[i].rx = data.hour[i].tx = i+1; data.hour[i].date = time(NULL); } cleanhours(); for (i=0; i<24; i++) { ck_assert_int_ne(data.hour[i].rx, 0); ck_assert_int_ne(data.hour[i].tx, 0); } }
END_TEST START_TEST(cleanhours_really_cleans_hours) { int i; initdb(); for (i=0; i<24; i++) { ck_assert_int_eq(data.hour[i].rx, 0); ck_assert_int_eq(data.hour[i].tx, 0); } for (i=0; i<24; i++) { data.hour[i].rx = data.hour[i].tx = i+1; data.hour[i].date = 1; } cleanhours(); for (i=0; i<24; i++) { ck_assert_int_eq(data.hour[i].rx, 0); ck_assert_int_eq(data.hour[i].tx, 0); } }
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(parseifinfo_hitting_maxbw_limit_causes_sync) { initdb(); data.btime = getbtime(); data.lastupdated -= 1; data.currx = 1024; data.curtx = 1024; strcpy(data.interface, "eth0"); ck_assert_int_eq(ibwadd("eth0", 10), 1); strcpy(ifinfo.name, "eth0"); ifinfo.filled = 1; ifinfo.rx = 123456789; ifinfo.tx = 123456789; ifinfo.rxp = ifinfo.txp = 0; debug = 1; suppress_output(); parseifinfo(0); ck_assert_int_eq(ifinfo.rx, 123456789); ck_assert_int_eq(ifinfo.tx, 123456789); ck_assert_int_eq(ifinfo.rxp, 0); ck_assert_int_eq(ifinfo.txp, 0); ck_assert_int_eq(data.day[0].rx, 0); ck_assert_int_eq(data.day[0].tx, 0); ck_assert_int_eq(data.day[0].rxk, 0); ck_assert_int_eq(data.day[0].txk, 0); ck_assert_int_eq(data.totalrx, 0); ck_assert_int_eq(data.totaltx, 0); ck_assert_int_eq(data.totalrxk, 0); ck_assert_int_eq(data.totaltxk, 0); ck_assert_int_eq(data.currx, 123456789); ck_assert_int_eq(data.curtx, 123456789); }
int insdb(char* key,char* apple){ struct db *p=kalloc(); struct db *temp; int buff; int i=0,n; if(dbcounter == 0){ initdb(); dbcounter=1; } p->record=kalloc(); p->data=kalloc(); while(key[i]!='\0'){ buff=key[i]; p->record[i]=buff; i++; } p->record[i]='\0'; i=0; while(apple[i]!='\0'){ buff=apple[i]; p->data[i]=buff; i++; } p->data[i]='\0'; temp=head; while(temp!=first){ if(strlen(key)>strlen(temp->record)) n=strlen(key); else n=strlen(temp->record); if(strncmp(key,temp->record,n)==0) { cprintf("already set:%s\n",temp->record); return -1; } temp=temp->next; } p->next=head; head=p; return 1; }
sqlite3 * getdb () { char *workdir = getworkdir(); char *dbfile = pathjoin(workdir, DBFILE); free(workdir); int notfound = 0; int rc; struct stat st; rc = stat(dbfile, &st); if (rc == -1) { if (errno == ENOENT) { notfound = 1; } else { fprintf(stderr, "Error stating %s: %d\n", dbfile, errno); exit(EXIT_FAILURE); } } sqlite3 *db; rc = sqlite3_open(dbfile, &db); if (rc != SQLITE_OK) { fprintf(stderr, "Can't open database %s.\n", sqlite3_errmsg(db)); sqlite3_close(db); exit(EXIT_FAILURE); } if (notfound) { fprintf(stderr, "Initializing database.\n"); initdb(db); } return db; }