#include #include #include #include "ttail.h" #include "ttail_init.h" #include "ttail_search.h" ttail_t *ttail; char *samples[5] = { "./samples/1.log", "./samples/2.log", "./samples/3.log",\ "./samples/4.log", "./samples/5.log"}; off_t samples_sz[5] = { 442, 0, 893, 2587, 2310 }; FILE *fpl; void setup_file_line(void) { fpl = fopen(samples[0], "r"); if(!fpl) { perror("Unable to open file for testing :"); ck_abort(); } } void teardown_file_line(void) { fclose(fpl); } void teardown_closest(void) { ttail_free(ttail); } void setup_closest(void) { ttail = ttail_init(1, (char**)&"foo"); } void setup_closest_fileinit(void) { setup_closest(); size_t i; for(i=0; i<5; i++) { ttail_add_logfile(ttail, samples[i]); } } void teardown_closest_fileinit(void) { teardown_closest(); _ttail_search_file_free(ttail); } START_TEST (test_search_closest_init) { int ret; ret = _ttail_search_closest_files_init(ttail); ck_assert_int_eq(ret,0); ck_assert(ttail->session->file.vpos == 0); #ifdef HUGEFILE ck_assert_int_eq(ttail->session->file.sz_div,0); #endif } END_TEST START_TEST (test_search_closest_init_filesz) { size_t i; _ttail_search_closest_files_init(ttail); for(i=0;i<5;i++) { ck_assert(samples_sz[i] == ttail->session->file.file_sz[i]); } } END_TEST START_TEST (test_search_closest_init_vfile) { size_t i; off_t full_sz; _ttail_search_closest_files_init(ttail); full_sz = 0; for(i=0;i<5;i++) { ck_assert(full_sz == ttail->session->file.vfile[i]); full_sz += samples_sz[i]; } ck_assert(full_sz == ttail->session->file.vsz); } END_TEST /* * _ttail_file_next_line() & _ttail_file_line_start() tests */ START_TEST (test_file_line_next) { long res; res = _ttail_file_next_line(fpl); ck_assert(res == 77); res = _ttail_file_next_line(fpl); ck_assert(res == 136); res = _ttail_file_next_line(fpl); ck_assert(res == 221); res = _ttail_file_next_line(fpl); ck_assert(res == 298); res = _ttail_file_next_line(fpl); ck_assert(res == 357); res = _ttail_file_next_line(fpl); ck_assert(res == 0); res = _ttail_file_next_line(fpl); ck_assert(res == -1); } END_TEST START_TEST (test_file_line_start) { long res; fseek(fpl, -1, SEEK_END); res = _ttail_file_start_line(fpl); ck_assert(res == 357); res = _ttail_file_start_line(fpl); ck_assert(res == 357); fseek(fpl, -1, SEEK_CUR); res = _ttail_file_start_line(fpl); ck_assert(res == 298); fseek(fpl, -1, SEEK_CUR); res = _ttail_file_start_line(fpl); ck_assert(res == 221); fseek(fpl, -1, SEEK_CUR); res = _ttail_file_start_line(fpl); ck_assert(res == 136); fseek(fpl, -1, SEEK_CUR); res = _ttail_file_start_line(fpl); ck_assert(res == 77); fseek(fpl, -1, SEEK_CUR); res = _ttail_file_start_line(fpl); ck_assert(res == 0); } END_TEST Suite * ttail_search_suite(void) { Suite *s; TCase *tc_search_closest_fileinit, *tc_file_line; s = suite_create("ttail search checks"); tc_search_closest_fileinit = tcase_create("\ ttail_logline_closest_files_init() checks"); tcase_add_checked_fixture(tc_search_closest_fileinit, setup_closest_fileinit, teardown_closest_fileinit); tcase_add_test(tc_search_closest_fileinit, test_search_closest_init); tcase_add_test(tc_search_closest_fileinit, test_search_closest_init_filesz); tcase_add_test(tc_search_closest_fileinit, test_search_closest_init_vfile); tc_file_line = tcase_create("ttail_file_*line*() checks"); tcase_add_checked_fixture(tc_file_line, setup_file_line, teardown_file_line); tcase_add_test(tc_file_line, test_file_line_next); tcase_add_test(tc_file_line, test_file_line_start); suite_add_tcase(s, tc_search_closest_fileinit); suite_add_tcase(s, tc_file_line); return s; } int main(int argc, char **argv) { int number_failed = 0; SRunner *sr; chdir(dirname(argv[0])); /* move in ./tests dir */ sr = srunner_create(ttail_search_suite()); srunner_set_fork_status(sr, CK_FORK); srunner_run_all(sr,CK_VERBOSE); number_failed = srunner_ntests_failed(sr); srunner_free(sr); return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; }