123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- #include <stdlib.h>
- #include <check.h>
- #include <time.h>
- #include <stdio.h>
- #include "logger.h"
-
- pyfcgi_conf_logger_t *conf = &PyFCGI_conf.logs;
-
- START_TEST(test_logger_init)
- {
-
- pyfcgi_logger_init();
- ck_assert_ptr_eq(conf->syslog_ident, NULL);
- ck_assert_ptr_eq(conf->ident, NULL);
- ck_assert_ptr_eq(conf->format, NULL);
- ck_assert_ptr_eq(conf->loggers, NULL);
- ck_assert_int_eq(conf->logger_sz, 0);
- ck_assert_int_eq(conf->format_sz, 0);
- ck_assert_int_eq(conf->flags, 0);
-
- }
- END_TEST
-
- /*
- START_TEST(test_logger_format_add)
- {
- int ret;
- size_t s;
- pyfcgi_logger_init();
-
- ret = pyfcgi_logger_format_add("TEST", NULL);
- ck_assert_int_eq(conf->format_sz, 1);
- ck_assert_str_eq(conf->format[0], "TEST");
- }
- END_TEST
- */
-
- START_TEST(test_logger_parse_field_dtfmt_default)
- {
- int ret;
- char *ptr, *orig, *fmt;
-
- orig = "}";
- ptr = orig;
- fmt = NULL;
-
- ret = pyfcgi_logger_parse_field_dtfmt((const char**)&ptr, &fmt);
- ck_assert_int_eq(ret, 0);
- ck_assert_str_eq(fmt, PYFCGI_LOGGER_TIME_FMT_DEFAULT);
- ck_assert_ptr_eq(ptr, orig+1);
- free(fmt);
- }
- END_TEST
-
- START_TEST(test_logger_parse_field_sz_default)
- {
- int ret;
- size_t val;
- char *ptr, **orig;
- char *vals[] = {":%F}", ":}", "}", NULL};
-
- orig = vals;
- while(*orig)
- {
- ptr = *orig;
-
- ret = pyfcgi_logger_parse_field_sz((const char**)&ptr, &val);
- ck_assert_int_eq(val, 0);
- ck_assert_ptr_eq(ptr, (*orig)+1);
- orig++;
- }
- }
- END_TEST
-
- START_TEST(test_logger_parse_field_datetime_default)
- {
- int ret;
- char *ptr, **orig, err[PYFCGI_LOGGER_FMT_PARSE_ERRSZ];
- pyfcgi_logger_fmt_field_t field;
- char *vals[] = {"datetime}", "datetime::}", "datetime:}", NULL};
-
- memset(&field, 0, sizeof(pyfcgi_logger_fmt_field_t));
-
- orig = vals;
- while(*orig)
- {
- ptr = *orig;
-
- ret = pyfcgi_logger_parse_field((const char**)&ptr,
- (const char*)ptr, &field,
- err);
- if(ret)
- {
- dprintf(2, "ERROR : '%s'\n", err);
- }
- ck_assert_int_eq(ret, 0);
- ck_assert_int_eq(field.type, pyfcgi_logger_field_datetime);
- ck_assert_int_ne(field.known_length, 0);
- ck_assert_int_eq(field.len, PYFCGI_LOG_DTM_LEN);
- ck_assert_ptr_eq(field.val, strftime);
- ck_assert_str_eq(field.args.datetime.format,
- PYFCGI_LOGGER_TIME_FMT_DEFAULT);
- ck_assert_ptr_eq(field.buf_ptr, NULL);
- orig++;
- }
- }
- END_TEST
-
- START_TEST(test_logger_parse_field_sz)
- {
- int ret, *res;
- size_t val;
- char *ptr, **orig;
- char *vals[] = {"42:%F}", "1337:}", "0}", NULL};
- int _res[] = {42,1337,0};
-
- orig = vals;
- res = _res;
- while(*orig)
- {
- ptr = *orig;
-
- ret = pyfcgi_logger_parse_field_sz((const char**)&ptr, &val);
- ck_assert_int_eq(val, *res);
- ck_assert_ptr_eq(ptr, (*orig)+snprintf(NULL, 0, "%d", *res));
- orig++;
- res++;
- }
- }
- END_TEST
-
- START_TEST(test_logger_parse_field_dtfmt)
- {
- int ret;
- size_t len;
- char **val, **ptr, *fmt;
- char *_vals[] = {"%fdc}", "123}", "4}}foo}", NULL};
-
- val = _vals;
- while(*val)
- {
- ptr = val;
- len = strlen(*val);
-
- ret = pyfcgi_logger_parse_field_dtfmt((const char**)&ptr, &fmt);
- *val[len-1] = '\0'; //deleting leading '}' to get expected result
- ck_assert_int_eq(ret, 0);
- ck_assert_ptr_ne(fmt, *val);
- ck_assert_str_eq(fmt, *val);
- ck_assert_ptr_eq(ptr, *val+len-1);
- free(fmt);
- val++;
- }
-
- }
- END_TEST
-
- START_TEST(test_logger_parse_field_datetime)
- {
- int ret, *len;
- char *ptr, **orig, **fmt, err[PYFCGI_LOGGER_FMT_PARSE_ERRSZ];
- pyfcgi_logger_fmt_field_t field;
- char *vals[] = {"datetime:42}", "datetime::%s%F}",
- "datetime:42:COUCOU}",
- "dat:32:FOO}", "d::BAR}", NULL};
- int _len[] = {42, PYFCGI_LOG_DTM_LEN, 42, 32, PYFCGI_LOG_DTM_LEN};
- char *_fmt[] = {PYFCGI_LOGGER_TIME_FMT_DEFAULT, "%s%F", "COUCOU", "FOO",
- "BAR"};
-
- memset(&field, 0, sizeof(pyfcgi_logger_fmt_field_t));
-
- len = _len;
- fmt = _fmt;
- orig = vals;
- while(*orig)
- {
- ptr = *orig;
-
- ret = pyfcgi_logger_parse_field((const char**)&ptr,
- (const char*)ptr, &field,
- err);
- if(ret)
- {
- dprintf(2, "ERROR : '%s'\n", err);
- }
- ck_assert_int_eq(ret, 0);
- ck_assert_int_eq(field.type, pyfcgi_logger_field_datetime);
- ck_assert_int_ne(field.known_length, 0);
- ck_assert_int_eq(field.len, *len);
- ck_assert_ptr_eq(field.val, strftime);
- ck_assert_str_eq(field.args.datetime.format, *fmt);
- ck_assert_ptr_eq(field.buf_ptr, NULL);
- orig++;
- len++;
- fmt++;
- }
- }
- END_TEST
-
- START_TEST(test_logger_parse_field_level)
- {
- int ret;
- char **val, **ptr;
- char err[PYFCGI_LOGGER_FMT_PARSE_ERRSZ];
- char *vals[] = {"level}", "l}", "leve}", NULL};
- pyfcgi_logger_fmt_field_t field;
-
- val = vals;
- memset(&field, 0, sizeof(pyfcgi_logger_fmt_field_t));
-
- while(*val)
- {
- ptr = val;
- ret = pyfcgi_logger_parse_field((const char**)ptr,
- (const char*)*ptr, &field,
- err);
- if(ret)
- {
- dprintf(2, "ERROR : '%s'\n", err);
- }
- ck_assert_int_eq(ret, 0);
- ck_assert_int_eq(field.type, pyfcgi_logger_field_level);
- ck_assert_int_ne(field.known_length, 0);
- ck_assert_int_eq(field.len, PYFCGI_LOG_LVL_LEN);
- ck_assert_ptr_eq(field.val, pyfcgi_logger_value_level);
- val++;
- }
- }
- END_TEST
-
- START_TEST(test_logger_parse_field_facility)
- {
- int ret;
- char **val, **ptr;
- char err[PYFCGI_LOGGER_FMT_PARSE_ERRSZ];
- char *vals[] = {"facility}", "f}", "fac}", NULL};
- pyfcgi_logger_fmt_field_t field;
-
- val = vals;
- memset(&field, 0, sizeof(pyfcgi_logger_fmt_field_t));
-
- while(*val)
- {
- ptr = val;
- ret = pyfcgi_logger_parse_field((const char**)ptr,
- (const char*)*ptr, &field,
- err);
- if(ret)
- {
- dprintf(2, "ERROR : '%s'\n", err);
- }
- ck_assert_int_eq(ret, 0);
- ck_assert_int_eq(field.type, pyfcgi_logger_field_facility);
- ck_assert_int_ne(field.known_length, 0);
- ck_assert_int_eq(field.len, PYFCGI_LOG_TYP_LEN);
- ck_assert_ptr_eq(field.val, pyfcgi_logger_value_facility);
- val++;
- }
- }
- END_TEST
-
- START_TEST(test_logger_parse_field_pid)
- {
- int ret;
- char **val, **ptr;
- char err[PYFCGI_LOGGER_FMT_PARSE_ERRSZ];
- char *vals[] = {"pid}", "p}", "pi}", NULL};
- pyfcgi_logger_fmt_field_t field;
-
- val = vals;
- memset(&field, 0, sizeof(pyfcgi_logger_fmt_field_t));
-
- while(*val)
- {
- ptr = val;
- ret = pyfcgi_logger_parse_field((const char**)ptr,
- (const char*)*ptr, &field,
- err);
- if(ret)
- {
- dprintf(2, "ERROR : '%s'\n", err);
- }
- ck_assert_int_eq(ret, 0);
- ck_assert_int_eq(field.type, pyfcgi_logger_field_pid);
- ck_assert_int_ne(field.known_length, 0);
- ck_assert_int_eq(field.len, PYFCGI_LOG_PID_LEN);
- ck_assert_ptr_eq(field.val, (&PyFCGI_conf.context.pid));
- val++;
- }
- }
- END_TEST
-
- START_TEST(test_logger_parse_field_ident)
- {
- int ret;
- char **val, **ptr;
- char err[PYFCGI_LOGGER_FMT_PARSE_ERRSZ];
- char *vals[] = {"ident}", "i}", "id}", NULL};
- pyfcgi_logger_fmt_field_t field;
-
- val = vals;
- memset(&field, 0, sizeof(pyfcgi_logger_fmt_field_t));
-
- while(*val)
- {
- ptr = val;
- ret = pyfcgi_logger_parse_field((const char**)ptr,
- (const char*)*ptr, &field,
- err);
- if(ret)
- {
- dprintf(2, "ERROR : '%s'\n", err);
- }
- ck_assert_int_eq(ret, 0);
- ck_assert_int_eq(field.type, pyfcgi_logger_field_ident);
- ck_assert_int_ne(field.known_length, 0);
- ck_assert_int_eq(field.len, 0);
- ck_assert_ptr_eq(field.val, (&PyFCGI_conf.logs.ident));
- val++;
- }
- }
- END_TEST
-
-
- START_TEST(test_logger_parse_field_msg)
- {
- int ret;
- char **val, **ptr;
- char err[PYFCGI_LOGGER_FMT_PARSE_ERRSZ];
- char *vals[] = {"msg}", "m}", "ms}", NULL};
- pyfcgi_logger_fmt_field_t field;
-
- val = vals;
- memset(&field, 0, sizeof(pyfcgi_logger_fmt_field_t));
-
- while(*val)
- {
- ptr = val;
- ret = pyfcgi_logger_parse_field((const char**)ptr,
- (const char*)*ptr, &field,
- err);
- if(ret)
- {
- dprintf(2, "ERROR : '%s'\n", err);
- }
- ck_assert_int_eq(ret, 0);
- ck_assert_int_eq(field.type, pyfcgi_logger_field_msg);
- ck_assert_int_eq(field.known_length, 0);
- ck_assert_int_eq(field.len, 0);
- ck_assert_ptr_eq(field.val, NULL);
- val++;
- }
- }
- END_TEST
-
- Suite * logger_suite(void)
- {
- Suite *s;
- TCase *tc_init, *tc_fmt, *tc_fmt_default;
-
- s = suite_create("Logger");
-
- tc_init = tcase_create("Initialisation");
- tcase_add_test(tc_init, test_logger_init);
- //tcase_add_test(tc_init, test_logger_format_add);
- suite_add_tcase(s, tc_init);
-
- tc_fmt_default = tcase_create("Logger format parsing default values");
- tcase_add_test(tc_fmt_default, test_logger_parse_field_dtfmt_default);
- tcase_add_test(tc_fmt_default, test_logger_parse_field_sz_default);
- tcase_add_test(tc_fmt_default, test_logger_parse_field_datetime_default);
- suite_add_tcase(s, tc_fmt_default);
-
- tc_fmt = tcase_create("Logger format parsing");
- tcase_add_test(tc_fmt, test_logger_parse_field_sz);
- tcase_add_test(tc_fmt, test_logger_parse_field_datetime);
- tcase_add_test(tc_fmt, test_logger_parse_field_level);
- tcase_add_test(tc_fmt, test_logger_parse_field_facility);
- tcase_add_test(tc_fmt, test_logger_parse_field_pid);
- tcase_add_test(tc_fmt, test_logger_parse_field_ident);
- tcase_add_test(tc_fmt, test_logger_parse_field_msg);
- suite_add_tcase(s, tc_fmt);
-
- return s;
- }
-
- int main(void)
- {
- int nfailed;
- Suite *s;
- SRunner *sr;
-
- s = logger_suite();
- sr = srunner_create(s);
-
- //srunner_set_fork_status(sr, CK_NOFORK);
- //srunner_run_all(sr, CK_NORMAL);
- //srunner_run_all(sr, CK_ENV);
- srunner_run_all(sr, CK_VERBOSE);
- nfailed = srunner_ntests_failed(sr);
- srunner_free(sr);
- return (!nfailed)?EXIT_SUCCESS:EXIT_FAILURE;
- }
|