Line data Source code
1 : /***************************************************************************//**
2 :
3 : @file logtest.c
4 :
5 : @author Stephen Brennan
6 :
7 : @date Created Sunday, 24 May 2015
8 :
9 : @brief Tests for logging (can't use smbunit though)
10 :
11 : @copyright Copyright (c) 2015, Stephen Brennan. Released under the Revised
12 : BSD License. See LICENSE.txt for details.
13 :
14 : *******************************************************************************/
15 :
16 : #include <stdio.h>
17 :
18 : #include "libstephen/log.h"
19 : #include "libstephen/ut.h"
20 :
21 1 : int test_levels(void)
22 : {
23 1 : smb_status status = SMB_SUCCESS;
24 1 : sl_clear_handlers(NULL);
25 1 : sl_add_handler(NULL, (smb_loghandler){.level=LDEBUG, .dst=stdout}, &status);
26 1 : sl_add_handler(NULL, (smb_loghandler){.level=LINFO, .dst=stdout}, &status);
27 1 : sl_add_handler(NULL, (smb_loghandler){.level=LWARNING, .dst=stdout}, &status);
28 1 : sl_add_handler(NULL, (smb_loghandler){.level=LERROR, .dst=stdout}, &status);
29 1 : sl_add_handler(NULL, (smb_loghandler){.level=LCRITICAL, .dst=stdout}, &status);
30 1 : LOG(NULL, LNOTSET, "this appears 0 times");
31 1 : DEBUG("this appears 1 time");
32 1 : INFO("this appears 2 times");
33 1 : WARNING("this appears 3 times");
34 1 : ERROR("this appears 4 times");
35 1 : CRITICAL("this appears 5 times");
36 1 : sl_set_level(NULL, LDEBUG);
37 1 : DEBUG("this appears 5 times");
38 1 : LOG(NULL, LDEBUG + 1, "this also appears 5 times, with level 11");
39 1 : return 0;
40 : }
41 :
42 1 : int test_override(void)
43 : {
44 1 : smb_status status = SMB_SUCCESS;
45 1 : smb_logger *logger = sl_create();
46 1 : sl_clear_handlers(NULL);
47 1 : sl_add_handler(logger, (smb_loghandler){.level=LINFO, .dst=stdout}, &status);
48 1 : DEBUG("you shouldn't see this");
49 1 : INFO("you shouldn't see this");
50 1 : sl_set_default_logger(logger);
51 1 : DEBUG("you shouldn't see this");
52 1 : INFO("you should see this");
53 1 : sl_set_default_logger(NULL);
54 1 : DEBUG("you shouldn't see this");
55 1 : INFO("you shouldn't see this");
56 1 : sl_delete(logger);
57 1 : return 0;
58 : }
59 :
60 1 : int test_too_many_levels(void)
61 : {
62 1 : smb_status status = SMB_SUCCESS;
63 1 : sl_clear_handlers(NULL);
64 1 : sl_add_handler(NULL, (smb_loghandler){.level=LDEBUG, .dst=stdout}, &status);
65 1 : TEST_ASSERT(status == SMB_SUCCESS);
66 1 : sl_add_handler(NULL, (smb_loghandler){.level=LINFO, .dst=stdout}, &status);
67 1 : TEST_ASSERT(status == SMB_SUCCESS);
68 1 : sl_add_handler(NULL, (smb_loghandler){.level=LWARNING, .dst=stdout}, &status);
69 1 : TEST_ASSERT(status == SMB_SUCCESS);
70 1 : sl_add_handler(NULL, (smb_loghandler){.level=LERROR, .dst=stdout}, &status);
71 1 : TEST_ASSERT(status == SMB_SUCCESS);
72 1 : sl_add_handler(NULL, (smb_loghandler){.level=LCRITICAL, .dst=stdout}, &status);
73 1 : TEST_ASSERT(status == SMB_SUCCESS);
74 1 : sl_add_handler(NULL, (smb_loghandler){.level=LDEBUG, .dst=stdout}, &status);
75 1 : TEST_ASSERT(status == SMB_SUCCESS);
76 1 : sl_add_handler(NULL, (smb_loghandler){.level=LINFO, .dst=stdout}, &status);
77 1 : TEST_ASSERT(status == SMB_SUCCESS);
78 1 : sl_add_handler(NULL, (smb_loghandler){.level=LWARNING, .dst=stdout}, &status);
79 1 : TEST_ASSERT(status == SMB_SUCCESS);
80 1 : sl_add_handler(NULL, (smb_loghandler){.level=LERROR, .dst=stdout}, &status);
81 1 : TEST_ASSERT(status == SMB_SUCCESS);
82 1 : sl_add_handler(NULL, (smb_loghandler){.level=LCRITICAL, .dst=stdout}, &status);
83 1 : TEST_ASSERT(status == SMB_SUCCESS);
84 1 : sl_add_handler(NULL, (smb_loghandler){.level=LCRITICAL, .dst=stdout}, &status);
85 1 : TEST_ASSERT(status == SMB_INDEX_ERROR);
86 1 : return 0;
87 : }
88 :
89 1 : void log_test(void)
90 : {
91 1 : smb_ut_group *group = su_create_test_group("log");
92 :
93 1 : smb_ut_test *levels = su_create_test("levels", test_levels);
94 1 : su_add_test(group, levels);
95 :
96 1 : smb_ut_test *override = su_create_test("override", test_override);
97 1 : su_add_test(group, override);
98 :
99 1 : smb_ut_test *too_many_levels = su_create_test("too_many_levels", test_too_many_levels);
100 1 : su_add_test(group, too_many_levels);
101 :
102 1 : printf("ALERT: Some logging tests are manual!\n");
103 1 : su_run_group(group);
104 1 : su_delete_group(group);
105 1 : }
|