Skip to content

Commit 5a18c58

Browse files
author
Fernando Godino
committed
Merge pull request #160 from telefonicaid/testAlarm
Test alarm
2 parents 79f96be + d708eb3 commit 5a18c58

File tree

3 files changed

+346
-11
lines changed

3 files changed

+346
-11
lines changed

config/test.alarm.cfg

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
############################ Alarm Config file#######################################
2+
3+
# Configuration for the alarm test script execution
4+
5+
CERT_PATH=../utils/server.crt
6+
KEY_PATH=../utils/server.key
7+
8+
MONGO_HOST=localhost
9+
REDIS_HOST=localhost
10+
11+
MONGO_PORT=27017
12+
REDIS_PORT=6379
13+
RUSH_PORT=5001
14+
15+
#Default values
16+
REDIS_PATH="/usr/local/bin/redis-server"
17+
MONGO_PATH="/usr/bin/mongod"
18+

lib/configBase.js

+17-11
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,9 @@ exports.consumer.casDir = '../utils/certs';
202202

203203
//Create Object container for further options. Do not touch!
204204
exports.consumer.logger = {};
205+
<<<<<<< HEAD
206+
exports.consumer.logger.logLevel = 'warning';
207+
=======
205208

206209

207210
/*
@@ -215,6 +218,7 @@ exports.consumer.logger.logLevel = 'error';
215218
InspectDepth.
216219
Level of depth an object will be inspected for the log.
217220
*/
221+
>>>>>>> unstable
218222
exports.consumer.logger.inspectDepth = 1;
219223

220224
/*
@@ -257,6 +261,9 @@ exports.consumer.logger.File = {
257261

258262
//Create Object container for further options. Do not touch!
259263
exports.listener.logger = {};
264+
<<<<<<< HEAD
265+
exports.listener.logger.logLevel = 'warning';
266+
=======
260267

261268

262269
/*
@@ -270,6 +277,7 @@ exports.listener.logger.logLevel = 'error';
270277
InspectDepth.
271278
Level of depth an object will be inspected for the log.
272279
*/
280+
>>>>>>> unstable
273281
exports.listener.logger.inspectDepth = 1;
274282

275283
/*
@@ -310,6 +318,15 @@ exports.listener.logger.File = {
310318
=====================
311319
*/
312320

321+
/*var gevLsnr = {};
322+
gevLsnr.name = 'gevLsnr';
323+
gevLsnr.mongoHost = gevlsnr_mongo;
324+
gevLsnr.mongoPort = 27017;
325+
gevLsnr.mongoDB = 'rush';
326+
gevLsnr.collection = 'RushGeneric';
327+
gevLsnr.filter = { state: 'error'};
328+
gevLsnr.take = {id: 'id', topic: 'topic', body: 'task.body',
329+
statusCode: 'result.statusCode'};*/
313330

314331
/* EvModules.
315332
Arrays that contains the addons implemented for the listener or consumer. If you want
@@ -336,14 +353,3 @@ var gevlsnr_mongo = 'localhost';
336353
if (process.env.RUSH_GEN_MONGO) {
337354
gevlsnr_mongo = process.env.RUSH_GEN_MONGO;
338355
}
339-
340-
341-
//var gevLsnr = {};
342-
//gevLsnr.name = 'gevLsnr';
343-
//gevLsnr.mongoHost = gevlsnr_mongo;
344-
//gevLsnr.mongoPort = 27017;
345-
//gevLsnr.mongoDB = 'rush';
346-
//gevLsnr.collection = 'RushGeneric';
347-
//gevLsnr.filter = { state: 'error'};
348-
//gevLsnr.take = {id: 'id', topic: 'topic', body: 'task.body',
349-
// statusCode: 'result.statusCode'};

scripts/test.alarms.sh

+311
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,311 @@
1+
#!/bin/bash
2+
3+
LISTENER=../bin/listener
4+
5+
LOG=Rush_listener_$HOSTNAME.log
6+
7+
. ../config/test.alarm.cfg
8+
9+
RUSH_HOST=http://localhost:$RUSH_PORT
10+
11+
MANUAL=false
12+
13+
while getopts ":m" opt; do
14+
case $opt in
15+
m)
16+
MANUAL=true
17+
;;
18+
\?)
19+
echo "Invalid option: -$OPTARG" >&2
20+
;;
21+
esac
22+
done
23+
24+
TEST1=0
25+
TEST2=0
26+
TEST3=0
27+
TEST4=0
28+
29+
red='\e[1;91m'
30+
green='\e[1;32m'
31+
endColor='\e[0m'
32+
33+
function stop_redis_wait {
34+
echo -e "\n Now STOP Redis server at $REDIS_HOST:$REDIS_PORT"
35+
while nc -z $REDIS_HOST $REDIS_PORT ##Wait until they are both up
36+
do
37+
sleep 1
38+
done
39+
}
40+
41+
function start_redis_wait {
42+
echo -e "\n Now START Redis server at $REDIS_HOST:$REDIS_PORT"
43+
until nc -z $REDIS_HOST $REDIS_PORT
44+
do
45+
sleep 1
46+
done
47+
}
48+
49+
function stop_mongo_wait {
50+
echo -e "\n Now STOP Mongo server at $MONGO_HOST:$MONGO_PORT"
51+
while nc -z $MONGO_HOST $MONGO_PORT ##Wait until they are both up
52+
do
53+
sleep 1
54+
done
55+
}
56+
57+
function start_mongo_wait {
58+
echo -e "\n Now START Mongo server at $MONGO_HOST:$MONGO_PORT"
59+
until nc -z $MONGO_HOST $MONGO_PORT
60+
do
61+
sleep 1
62+
done
63+
}
64+
65+
66+
function kill_servers {
67+
if nc -z $REDIS_HOST $REDIS_PORT; then
68+
killall redis-server
69+
fi
70+
if nc -z $MONGO_HOST $MONGO_PORT; then
71+
killall mongod
72+
fi
73+
while nc -z $REDIS_HOST $REDIS_PORT || nc -z $MONGO_HOST $MONGO_PORT;
74+
do
75+
sleep 1
76+
done
77+
}
78+
79+
function before {
80+
81+
rm -rf $LOG ##Remove log file
82+
83+
if $MANUAL ; then
84+
start_redis_wait
85+
start_mongo_wait
86+
else
87+
rm -rf mongo
88+
mkdir mongo
89+
$REDIS_PATH & ##Start redis-server
90+
redis_pid=$!
91+
$MONGO_PATH --dbpath ./mongo --quiet & #Start mongodb
92+
mongo_pid=$!
93+
until nc -z $MONGO_HOST $MONGO_PORT && nc -z $REDIS_HOST $REDIS_PORT ##Wait until they are both up
94+
do
95+
sleep 1
96+
done
97+
fi
98+
}
99+
100+
function after {
101+
if $MANUAL ; then
102+
stop_redis_wait
103+
stop_mongo_wait
104+
else
105+
kill $redis_pid #Stop redis
106+
kill $mongo_pid #Stop mongo
107+
rm -rf ./mongo #Remove db directories
108+
while nc -z $REDIS_HOST $REDIS_PORT || nc -z $MONGO_HOST $MONGO_PORT;
109+
do
110+
sleep 1
111+
done
112+
fi
113+
mv $LOG RUSH_LOG_`date -u +%Y-%m-%d-%H:%M`.log
114+
}
115+
116+
function beforeEach {
117+
sleep 1
118+
}
119+
120+
function afterEach {
121+
sleep 5
122+
pid=$!
123+
kill $pid
124+
}
125+
126+
function cert_bak { #Certificates backup
127+
mv -v $CERT_PATH $CERT_PATH.bak
128+
mv -v $KEY_PATH $KEY_PATH.bak
129+
}
130+
131+
function cert_recover { #Recover certificates
132+
mv -v $CERT_PATH.bak $CERT_PATH
133+
mv -v $KEY_PATH.bak $KEY_PATH
134+
}
135+
136+
function no_certs_found { #Throw no certs found error
137+
TEST1=1
138+
cert_bak
139+
beforeEach
140+
$LISTENER &
141+
afterEach
142+
cert_recover
143+
grep -q -e '| lvl=WARNING | op=LISTENER START UP | msg=Certs Not Found |' $LOG
144+
if [ $? -ne 0 ]; then
145+
TEST1=2
146+
fi
147+
}
148+
149+
function invalid_request {
150+
TEST2=1
151+
$LISTENER &
152+
beforeEach
153+
curl -v -H "X-Relayer-Host:nodejs.org" -H "X-relayer-persistence: INVALID_PERSISTENCE" $RUSH_HOST #nvalid persistence, should be logged
154+
afterEach
155+
grep -q -e '| lvl=WARNING | op=ASSIGN REQUEST | msg=Request Error |' $LOG
156+
if [ $? -ne 0 ]; then
157+
TEST2=2
158+
fi
159+
}
160+
161+
function redis_unavailable {
162+
TEST3=1
163+
if $MANUAL ; then
164+
stop_redis_wait
165+
else
166+
kill $redis_pid ##Kill redis
167+
fi
168+
169+
beforeEach
170+
$LISTENER &
171+
afterEach
172+
grep -q -e '| lvl=ERROR | op=REDIS CONNECTION | msg=Redis Error |' $LOG
173+
if [ $? -ne 0 ]; then
174+
TEST3=2;
175+
fi
176+
177+
if $MANUAL ; then
178+
start_redis_wait
179+
else
180+
$REDIS_PATH & #Restart redis
181+
redis_pid=$!
182+
until nc -z $REDIS_HOST $REDIS_PORT ##Wait until it is up
183+
do
184+
sleep 1
185+
done
186+
fi
187+
}
188+
189+
function mongo_unavailable {
190+
TEST4=1
191+
if $MANUAL ; then
192+
stop_mongo_wait
193+
else
194+
kill $mongo_pid ##Kill redis
195+
fi
196+
beforeEach
197+
$LISTENER &
198+
afterEach
199+
if $MANUAL ; then
200+
start_mongo_wait
201+
else
202+
$MONGO_PATH --dbpath ./mongo --quiet & #Restart mongo
203+
mongo_pid=$!
204+
until nc -z $MONGO_HOST $MONGO_PORT #Wait until it is up
205+
do
206+
sleep 1
207+
done
208+
fi
209+
210+
grep -q -e '| lvl=WARNING | op=INIT EVENT LISTENER | msg=Could not connect with MongoDB |' $LOG
211+
if [ $? -ne 0 ]; then
212+
TEST4=2
213+
fi
214+
grep -q -e '| lvl=ERROR | op=ADD-ONS START UP | msg=Error subscribing event listener |' $LOG
215+
if [ $? -ne 0 ]; then
216+
TEST4=2
217+
fi
218+
}
219+
220+
221+
function menu {
222+
before
223+
224+
exec 2>&1
225+
exec > >(tee ALARMS_LOG_`date -u +%Y-%m-%d-%H:%M`.log) # Save stdout to a file
226+
227+
case $option in
228+
1)
229+
no_certs_found
230+
;;
231+
2)
232+
invalid_request
233+
;;
234+
3)
235+
redis_unavailable
236+
;;
237+
4)
238+
mongo_unavailable
239+
;;
240+
0)
241+
no_certs_found
242+
invalid_request
243+
redis_unavailable
244+
mongo_unavailable
245+
;;
246+
*) echo "Invalid input"
247+
;;
248+
esac
249+
after
250+
echo
251+
echo TEST RESULTS:
252+
echo ===========================
253+
echo
254+
if [ $TEST1 -eq 1 ]; then echo -e "${green}Scenario 1: ALARM Certs not found generated${endColor}"; fi
255+
if [ $TEST1 -eq 2 ]; then echo -e "${red}Scenario 1: Should log Certs not found error${endColor}"; fi
256+
if [ $TEST2 -eq 1 ]; then echo -e "${green}Scenario 2: ALARM Request Error generated${endColor}"; fi
257+
if [ $TEST2 -eq 2 ]; then echo -e "${red}Scenario 2: Should log Request Error${endColor}"; fi
258+
if [ $TEST3 -eq 1 ]; then echo -e "${green}Scenario 3: ALARM Redis Error generated${endColor}"; fi
259+
if [ $TEST3 -eq 2 ]; then echo -e "${red}Scenario 3: Should log Redis Error${endColor}"; fi
260+
if [ $TEST4 -eq 1 ]; then echo -e "${green}Scenario 4: ALARM MongoDB Error generated${endColor}"; fi
261+
if [ $TEST4 -eq 2 ]; then echo -e "${red}Scenario 4: Should log Could not connect with MongoDB${endColor}"; fi
262+
echo
263+
}
264+
echo "==================================================================="
265+
echo " * ALARM TEST *"
266+
echo "==================================================================="
267+
echo ">> CONFIG << "
268+
echo
269+
echo "Configure Rush and Rush components in the config file:"
270+
echo " - RUSH/config/test.alarm.cfg"
271+
echo "Manual execution: "
272+
echo " - For for manual steps execution launch the script using -m "
273+
echo "==================================================================="
274+
echo ">> OPTIONS << "
275+
echo
276+
echo -e "\tS: Stop redis-server and mongodb"
277+
echo -e "\t1: Run Scenario 1. HTTPS certs not found"
278+
echo -e "\t2: Run Scenario 2. Invalid request"
279+
echo -e "\t3: Run Scenario 3. Redis server unavailable"
280+
echo -e "\t4: Run Scenario 4. MongoDB unavailable"
281+
echo -e "\t0: Run ALL tests"
282+
echo
283+
echo "==================================================================="
284+
echo
285+
echo -n "Choose one of the previous options: "
286+
read option
287+
288+
if [ $option == "S" ]
289+
then
290+
kill_servers
291+
exit 0
292+
else
293+
if nc -z $REDIS_HOST $REDIS_PORT; then
294+
echo There is an active redis-server instance.
295+
echo Stop it or run this script with flag -f
296+
exit 1
297+
fi
298+
299+
# if nc -z $MONGO_HOST $MONGO_PORT; then
300+
# echo There is an active mongod instance.
301+
# echo Stop it or run this script with flag -f
302+
# exit 1
303+
# fi
304+
menu
305+
fi
306+
307+
exit $return_value
308+
309+
310+
311+

0 commit comments

Comments
 (0)