-
Notifications
You must be signed in to change notification settings - Fork 0
/
logging.sh
162 lines (123 loc) · 5.07 KB
/
logging.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#! /bin/bash
# Logging function tests
#
# Author: DonTseTse
############# Configuration
#
############# Preparation
# Refuse symlinks and get the absolute path of the commons directory (this file lies in ./tests/.), load dependancies
set -e
[ -h "${BASH_SOURCE[0]}" ] && echo "Error: called through symlink. Please call directly. Aborting..." && exit 1
commons_path="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && dirname "$(pwd)")"
. "$commons_path/testing.sh"
. "$commons_path/logging.sh"
set +e
initialize_test_session "logging.sh functions"
### Tests
echo "*** prepare_secret_for_logging() ***"
configure_test 1 ""
test prepare_secret_for_logging
configure_test 0 "[Secret - begins with 't']"
test prepare_secret_for_logging "test"
configure_test 0 "[Secret - begins with 'lo']"
test prepare_secret_for_logging "longer_secret" 2
configure_test 0 "[Secret - begins with 'lon']"
test prepare_secret_for_logging "longer_secret" 5
configure_test 0 "[Secret - begins with 'longe']"
stdout="$(prepare_secret_for_logging "longer_secret" 5 "0.5")"
check_test_results "prepare_secret_for_logging \"longer_secret\" 5 \"0.5\"" $? "$stdout"
configure_test 0 "[Secret - ends with 'et']"
test prepare_secret_for_logging "longer_secret" -2
configure_test 0 "[Secret - ends with 'ret']"
test prepare_secret_for_logging "longer_secret" -10
echo "*** log() + launch_logging() ***"
configure_test 0 ""
test log "log message"
stdout_log_level=1
echo " - \$stdout_log_level set to 1"
configure_test 0 "log message"
test log "log message"
configure_test 0 "log message"
test log "log message" 1
configure_test 0 ""
test log "log message level 2" 2
stdout_log_level=2
echo " - \$stdout_log_level set to 2"
configure_test 0 "log message level 2"
test log "log message level 2" 2
stdout_log_pattern="Log: %s"
echo " - \$stdout_log_pattern set to 'Log: %s'"
configure_test 0 "Log: log message"
test log "log message"
log_filepath="$(mktemp)"
echo " - \$log_filepath set to $log_filepath"
configure_test 0 "Log: log message #1"
test log "log message #1"
echo " The message is not logged because \$log_level is not a numeric value. Testing that..."
configure_test 0 ""
test cat "$log_filepath"
log_level=1
echo " - \$log_level set to 1"
configure_test 0 "Log: log message #2"
test log "log message #2"
configure_test 0 "log message #2"
test tail -n 1 "$log_filepath"
configure_test 0 "Log: log message level 1"
test log "log message level 1" 1
configure_test 0 "log message level 1"
test tail -n 1 "$log_filepath"
configure_test 0 "Log: log message level 2"
test log "log message level 2" 2
echo " The log file entry should still be the same than on the previous check; the last message was not logged because the log() call had a level above \$log_level. Testing that..."
configure_test 0 "log message level 1"
test tail -n 1 "$log_filepath"
log_level=2
echo " - \$log_level set to 2"
configure_test 0 "Log: log message level 2"
test log "log message level 2" 2
configure_test 0 "log message level 2"
test tail -n 1 "$log_filepath"
log_pattern="[Log $log_filepath]: %s\n"
echo " - \$log_pattern set to '[Log $log_filepath]: %s'"
configure_test 0 ""
test log "log message for file" 1 file
configure_test 0 "[Log $log_filepath]: log message for file"
test tail -n 1 "$log_filepath"
configure_test 0 "Log: log message for stdout"
test log "log message for stdout" 1 stdout
echo " The log file entry should still be the same than on the previous check; the last message was not logged because the log() call was restricted to stdout. Testing that..."
configure_test 0 "[Log $log_filepath]: log message for file"
test tail -n 1 "$log_filepath"
#logging_backlog=()
logging_available=0
echo " - \$logging_available set to 0 => logs go into a cache, ready to be processed once launch_logging() is called"
rm "$log_filepath"
log_filepath="$(mktemp)"
echo " - New \$log_filepath at $log_filepath"
# Note: log() has to be called on global level and not via test otherwise it doesn't operate on the global variables
log "backlog msg #1"
echo " - Running \$> log \"backlog msg #1\""
log "backlog msg level 2" 2
echo " - Running \$> log \"backlog msg level 2\" 2"
log "backlog msg stdout" 1 stdout
echo " - Running \$> log \"backlog msg stdout\" 1 stdout"
stdout_log_pattern=" Log: %s\n"
log_pattern=" File log: %s\n"
echo " - Set stdout_log_pattern to ' Log: %s\n' and log_pattern to ' File log: %s\n'. Calling launch_logging()"
launch_logging
echo " - cat $log_filepath"
cat "$log_filepath"
configure_test 0 ""
[ $logging_available -eq 1 ]
check_test_results "[ \$logging_available -eq 1 ]" $? ""
logging_available=2
echo " - Setting \$logging_available to 2 (forbidden). log() fails with status code 1"
configure_test 1 ""
test log "Logging status confusing"
logging_available=1
echo " - Setting \$logging_available to 1. Wrong log message level can also make log() fail with code 1"
test log "Message level confusing" a
echo " A wrong output restriction is just ignored ('stdout' and 'file' excpected)"
configure_test 0 " Log: Unknown output restriction, just ignored"
test log "Unknown output restriction, just ignored" 1 "unknown"
conclude_test_session