Browse Source

Bugfixes + more tests for logger

Yann Weber 4 years ago
parent
commit
a8568073b6
2 changed files with 91 additions and 18 deletions
  1. 4
    2
      src/logger.c
  2. 87
    16
      tests/check_logger.c

+ 4
- 2
src/logger.c View File

@@ -353,12 +353,14 @@ int pyfcgi_logger_parse_field_dtfmt(const char** ptr, char** format)
353 353
 int pyfcgi_logger_parse_field_sz(const char **ptr, size_t *size)
354 354
 {
355 355
 	char *end;
356
+	*size = 0;
356 357
 	if(**ptr == '}' || **ptr == ':')
357 358
 	{
358 359
 		(*ptr)++;
359
-		return (*size = 0);
360
+		return 0;
360 361
 	}
361
-	if(**ptr < '0' && **ptr > 9)
362
+
363
+	if(**ptr < '0' || **ptr > '9')
362 364
 	{
363 365
 		return 1; // parse error
364 366
 	}

+ 87
- 16
tests/check_logger.c View File

@@ -6,6 +6,9 @@
6 6
 
7 7
 pyfcgi_conf_logger_t *conf = &PyFCGI_conf.logs;
8 8
 
9
+/*
10
+	TC logger init
11
+*/
9 12
 START_TEST(test_logger_init)
10 13
 {
11 14
 
@@ -35,6 +38,10 @@ START_TEST(test_logger_format_add)
35 38
 END_TEST
36 39
 */
37 40
 
41
+/*
42
+	TC logger default values
43
+*/
44
+
38 45
 START_TEST(test_logger_parse_field_dtfmt_default)
39 46
 {
40 47
 	int ret;
@@ -65,6 +72,7 @@ START_TEST(test_logger_parse_field_sz_default)
65 72
 		ptr = *orig;
66 73
 
67 74
 		ret = pyfcgi_logger_parse_field_sz((const char**)&ptr, &val);
75
+		ck_assert_int_eq(ret, 0);
68 76
 		ck_assert_int_eq(val, 0);
69 77
 		ck_assert_ptr_eq(ptr, (*orig)+1);
70 78
 		orig++;
@@ -106,6 +114,10 @@ START_TEST(test_logger_parse_field_datetime_default)
106 114
 }
107 115
 END_TEST
108 116
 
117
+/*
118
+	TC logger field parsing
119
+*/
120
+
109 121
 START_TEST(test_logger_parse_field_sz)
110 122
 {
111 123
 	int ret, *res;
@@ -353,10 +365,63 @@ START_TEST(test_logger_parse_field_msg)
353 365
 }
354 366
 END_TEST
355 367
 
368
+/*
369
+	TC logger format parsing error
370
+*/
371
+START_TEST(test_logger_parse_field_sz_err)
372
+{
373
+	int ret, *res;
374
+	size_t val;
375
+	char **ptr, **orig;
376
+	char *vals[] = {"-42:%F}", "abc:}", "", "", NULL};
377
+
378
+	orig = vals;
379
+	while(*orig)
380
+	{
381
+		ptr = orig;
382
+
383
+		ret = pyfcgi_logger_parse_field_sz((const char**)ptr, &val);
384
+		ck_assert_int_eq(val, 0);
385
+		ck_assert_int_ne(ret, 0);
386
+		orig++;
387
+		res++;
388
+	}
389
+}
390
+END_TEST
391
+
392
+START_TEST(test_logger_parse_field_parse_err)
393
+{
394
+	int ret;
395
+	char **val, **ptr;
396
+	char err[PYFCGI_LOGGER_FMT_PARSE_ERRSZ];
397
+	char *vals[] = {"foobar}", "::}", "ident", "",
398
+	                "level", "pid", "42}", ":ident:", ":ident}", NULL};
399
+	pyfcgi_logger_fmt_field_t field;
400
+
401
+	val = vals;
402
+	memset(&field, 0, sizeof(pyfcgi_logger_fmt_field_t));
403
+	while(*val)
404
+	{
405
+		ptr = val;
406
+		*err = '\0';
407
+
408
+		ret = pyfcgi_logger_parse_field((const char**)ptr,
409
+		                                (const char*)*ptr, &field,
410
+						err);
411
+		ck_assert_int_ne(ret, 0);
412
+		ck_assert_int_ne(*err, '\0');
413
+		ck_assert_int_eq(field.type, pyfcgi_logger_field_null);
414
+		val++;
415
+	}
416
+}
417
+END_TEST
418
+
419
+/* Suite, runner & main */
420
+
356 421
 Suite * logger_suite(void)
357 422
 {
358 423
 	Suite *s;
359
-	TCase *tc_init, *tc_fmt, *tc_fmt_default;
424
+	TCase *tc_init, *tc_field, *tc_field_default, *tc_parse_err;
360 425
 
361 426
 	s = suite_create("Logger");
362 427
 
@@ -365,21 +430,27 @@ Suite * logger_suite(void)
365 430
 	//tcase_add_test(tc_init, test_logger_format_add);
366 431
 	suite_add_tcase(s, tc_init);
367 432
 
368
-	tc_fmt_default = tcase_create("Logger format parsing default values");
369
-	tcase_add_test(tc_fmt_default, test_logger_parse_field_dtfmt_default);
370
-	tcase_add_test(tc_fmt_default, test_logger_parse_field_sz_default);
371
-	tcase_add_test(tc_fmt_default, test_logger_parse_field_datetime_default);
372
-	suite_add_tcase(s, tc_fmt_default);
373
-
374
-	tc_fmt = tcase_create("Logger format parsing");
375
-	tcase_add_test(tc_fmt, test_logger_parse_field_sz);
376
-	tcase_add_test(tc_fmt, test_logger_parse_field_datetime);
377
-	tcase_add_test(tc_fmt, test_logger_parse_field_level);
378
-	tcase_add_test(tc_fmt, test_logger_parse_field_facility);
379
-	tcase_add_test(tc_fmt, test_logger_parse_field_pid);
380
-	tcase_add_test(tc_fmt, test_logger_parse_field_ident);
381
-	tcase_add_test(tc_fmt, test_logger_parse_field_msg);
382
-	suite_add_tcase(s, tc_fmt);
433
+	tc_field_default = tcase_create("Logger format parsing default values");
434
+	tcase_add_test(tc_field_default, test_logger_parse_field_dtfmt_default);
435
+	tcase_add_test(tc_field_default, test_logger_parse_field_sz_default);
436
+	tcase_add_test(tc_field_default, test_logger_parse_field_datetime_default);
437
+	suite_add_tcase(s, tc_field_default);
438
+
439
+	tc_field = tcase_create("Logger format parsing");
440
+	tcase_add_test(tc_field, test_logger_parse_field_sz);
441
+	tcase_add_test(tc_field, test_logger_parse_field_datetime);
442
+	tcase_add_test(tc_field, test_logger_parse_field_level);
443
+	tcase_add_test(tc_field, test_logger_parse_field_facility);
444
+	tcase_add_test(tc_field, test_logger_parse_field_pid);
445
+	tcase_add_test(tc_field, test_logger_parse_field_ident);
446
+	tcase_add_test(tc_field, test_logger_parse_field_msg);
447
+	suite_add_tcase(s, tc_field);
448
+
449
+	tc_parse_err = tcase_create("Logger format parsing errors handling");
450
+	tcase_add_test(tc_parse_err, test_logger_parse_field_sz_err);
451
+	tcase_add_test(tc_parse_err, test_logger_parse_field_parse_err);
452
+	suite_add_tcase(s, tc_parse_err);
453
+	
383 454
 
384 455
 	return s;
385 456
 }

Loading…
Cancel
Save