2 #Copyright (C) 2009-2010 :
3 # Gabes Jean, naparuba@gmail.com
4 # Gerhard Lausser, Gerhard.Lausser@consol.de
6 #This file is part of Shinken.
8 #Shinken is free software: you can redistribute it and/or modify
9 #it under the terms of the GNU Affero General Public License as published by
10 #the Free Software Foundation, either version 3 of the License, or
11 #(at your option) any later version.
13 #Shinken is distributed in the hope that it will be useful,
14 #but WITHOUT ANY WARRANTY; without even the implied warranty of
15 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 #GNU Affero General Public License for more details.
18 #You should have received a copy of the GNU Affero General Public License
19 #along with Shinken. If not, see <http://www.gnu.org/licenses/>.
24 echo "Begining test END TO END"
27 DIR
=$
(cd $
(dirname "$0"); pwd)
28 echo "Going to dir $DIR/.."
35 #check for a process existance with good number
36 function check_process_nb
{
37 NB
=`ps -fu shinken | grep python | grep -v grep | grep $1 | wc -l`
40 echo "Error : There is not enouth $1 launched (only $NB)."
47 function is_file_present
{
50 echo "File $1 is present."
52 echo "Error : File $1 is missing!"
57 function string_in_file
{
61 echo "Error : the file $2 is missing string $1 !"
64 echo "The string $1 is in $2"
73 function check_good_run
{
75 echo "Check for $NB_SCHEDULERS Scheduler"
76 check_process_nb scheduler
$NB_SCHEDULERS
77 is_file_present
$VAR/schedulerd.pid
79 echo "Check for $NB_POLLERS pollers (1 master, 1 for multiporcess module (queue manager), 4 workers)"
80 check_process_nb poller
$NB_POLLERS
81 is_file_present
$VAR/pollerd.pid
83 echo "Check for $NB_REACTIONNERS reactionners (1 master, 1 for multiporcess module (queue manager) 1 worker)"
84 check_process_nb reactionner
$NB_REACTIONNERS
85 is_file_present
$VAR/reactionnerd.pid
87 echo "Check for $NB_BROKERS brokers (one master, one for livestatus.dat, one for log)"
88 check_process_nb broker
$NB_BROKERS
89 is_file_present
$VAR/brokerd.pid
91 echo "Check for $NB_ARBITERS arbiter"
92 check_process_nb arbiter
$NB_ARBITERS
93 is_file_present
$VAR/arbiterd.pid
95 echo "Now checking for good file prensence"
97 is_file_present
$VAR/nagios.log
98 string_in_file
"Waiting for initial configuration" $VAR/nagios.log
99 string_in_file
"First scheduling" $VAR/nagios.log
100 string_in_file
"OK, all schedulers configurations are dispatched :)" $VAR/nagios.log
101 string_in_file
"OK, no more reactionner sent need" $VAR/nagios.log
102 string_in_file
"OK, no more poller sent need" $VAR/nagios.log
103 string_in_file
"OK, no more broker sent need" $VAR/nagios.log
107 #Standard launch process packets
116 echo "Clean old tests and kill remaining processes"
120 echo "####################################################################################"
122 echo "# SIMPLE START #"
124 echo "####################################################################################"
126 echo "Now we can start some launch tests"
127 bin
/launch_all_debug.sh
130 echo "Now checking for existing apps"
132 echo "we can sleep 5sec for conf dispatching and so good number of process"
135 #Now check if the run looks good with var in the direct directory
138 echo "First launch check OK"
140 echo "Now we clean it and test an install"
143 echo "####################################################################################"
145 echo "# DUMMY INSTALL #"
147 echo "####################################################################################"
149 echo "Now installing the application in DUMMY mode"
150 python setup.py
install --root=/tmp
/moncul
--record=INSTALLED_FILES
--install-scripts=/usr
/bin
154 echo "Error : the dummy install failed."
157 echo "Dummy install OK"
159 echo "I reclean all for a real install"
163 echo "####################################################################################"
165 echo "# REAL INSTALL #"
167 echo "####################################################################################"
169 echo "Now a REAL install"
170 sudo python setup.py
install --install-scripts=/usr
/bin
173 echo "Error : the real install failed."
176 echo "Real install OK"
178 #Useful to take it from setup_parameter? It's just for coding here
180 is_file_present
$ETC/nagios.cfg
181 is_file_present
$ETC/shinken-specific.cfg
182 string_in_file
"servicegroups.cfg" $ETC/nagios.cfg
183 is_file_present
/usr
/bin
/shinken-arbiter
188 echo "Now we can test a real run guy"
189 /etc
/init.d
/shinken-scheduler start
190 /etc
/init.d
/shinken-poller start
191 /etc
/init.d
/shinken-reactionner start
192 /etc
/init.d
/shinken-broker start
193 /etc
/init.d
/shinken-arbiter start
195 echo "We will sleep again 5sec so every one is quite stable...."
197 check_good_run
/var
/lib
/shinken
199 sudo
/etc
/init.d
/shinken-arbiter status
200 sudo
/etc
/init.d
/shinken-scheduler status
201 sudo
/etc
/init.d
/shinken-poller status
202 sudo
/etc
/init.d
/shinken-reactionner status
203 sudo
/etc
/init.d
/shinken-broker status
205 sudo
/etc
/init.d
/shinken-arbiter stop
206 sudo
/etc
/init.d
/shinken-scheduler stop
207 sudo
/etc
/init.d
/shinken-poller stop
208 sudo
/etc
/init.d
/shinken-reactionner stop
209 sudo
/etc
/init.d
/shinken-broker stop
214 check_process_nb arbiter
0
215 check_process_nb scheduler
0
216 check_process_nb broker
0
217 check_process_nb poller
0
218 check_process_nb reactionner
0
222 echo "OK Great. Even the real launch test pass. Great. I can clean after me."
228 echo "####################################################################################"
232 echo "####################################################################################"
234 echo "Now we can start some launch tests"
235 test
/bin
/launch_all_debug2.sh
238 echo "Now checking for existing apps"
240 echo "we can sleep 5sec for conf dispatching and so good number of process"
243 #The number of process changed, we mush look for it
246 #Standard launch process packets
248 #6 for stack 1, and 2 for 2 (not active, so no worker)
250 #3 for stack1, 2 for stack2 (no worker from now)
252 #3 for stack 1, 1 for stack2 (no livesatus.dat nor log worker launch)
257 #Now check if the run looks good with var in the direct directory
260 echo "All launch of HA daemons is OK"
262 #Now we kill and see if all is OK :)
263 #We clean the log file
267 #We kill the most important thing first : the scheduler-Master
268 bin
/stop_scheduler.sh
270 #We sleep to be sruethe scheduler see us
275 #First we look is the arbiter saw the scheduler as dead
276 string_in_file
"Warning : Scheduler scheduler-Master had the configuration 0 but is dead, I am not happy." $VAR/nagios.log
277 #Then we look if the scheduler-spare got a conf from arbiter (here, view from the arbiter)
278 string_in_file
"Dispatch OK of for conf in scheduler scheduler-Spare" $VAR/nagios.log
280 #then is the broker know it and try to connect to the new scheduler-spare
281 string_in_file
"\[broker-Master\] Connexion OK to the scheduler scheduler-Spare" $VAR/nagios.log
284 echo "Now stop the poller-Master"
285 #Now we stop the poller. We will see the sapre take the job (we hope in fact :) )
291 #The master should be look dead
292 string_in_file
"Warning : The poller poller-Master seems to be down, I must re-dispatch its role to someone else." $VAR/nagios.log
293 #The spare should got the conf
294 string_in_file
"\[All\] Dispatch OK of for configuration 0 to poller poller-Slave" $VAR/nagios.log
295 #And he should got the scheduler link (the sapre one)
296 string_in_file
"\[poller-Slave\] Connexion OK with scheduler scheduler-Spare" $VAR/nagios.log
299 echo "Now stop the reactionner"
300 bin
/stop_reactionner.sh
305 #The master should be look dead
306 string_in_file
"\[All\] Warning : The reactionner reactionner-Master seems to be down, I must re-dispatch its role to someone else." $VAR/nagios.log
307 #The spare should got the conf
308 string_in_file
"\[All\] Dispatch OK of for configuration 0 to reactionner reactionner-Spare" $VAR/nagios.log
309 #And he should got the scheduler link (the sapre one)
310 string_in_file
"\[reactionner-Spare\] Connexion OK with scheduler scheduler-Spare" $VAR/nagios.log
313 echo "Now we stop... the Broker!"
319 #The master should be look dead
320 string_in_file
"\[All\] Warning : The broker broker-Master seems to be down, I must re-dispatch its role to someone else." $VAR/nagios.log
321 #The spare should got the conf
322 string_in_file
"\[All\] Dispatch OK of for configuration 0 to broker broker-Slave" $VAR/nagios.log
323 #And he should got the scheduler link (the spare one)
324 string_in_file
"\[broker-Slave\] Connexion OK to the scheduler scheduler-Spare" $VAR/nagios.log
325 #And to other satellites
326 string_in_file
"\[broker-Slave\] Connexion OK to the reactionner reactionner-Spare" $VAR/nagios.log
327 string_in_file
"\[broker-Slave\] Connexion problem to the poller poller-Master : connection failed" $VAR/nagios.log
328 #And should have load the modules
329 string_in_file
"\[broker-Slave\] I correctly load the modules : \['Simple-log', 'Livestatus'\]" $VAR/nagios.log
332 echo "Now we clean it"
337 echo "####################################################################################"
339 echo "# Load balancing launch #"
341 echo "####################################################################################"
343 echo "Now we can start some launch tests"
344 test
/bin
/launch_all_debug3.sh
347 echo "Now checking for existing apps"
349 echo "we can sleep 5sec for conf dispatching and so good number of process"
352 #The number of process changed, we mush look for it
355 #Standard launch process packets
357 #6 for stack 1, and 6 for stack 2
359 #3 for stack1, same for stack 2
361 #3 for stack 1, 1 for stack2 (no livestatus nor log worker launch)
366 #Now check if the run looks good with var in the direct directory
369 echo "All launch of LB daemons is OK"
372 #Now look if it's also good in the log file too
373 string_in_file
"Dispatch OK of for conf in scheduler scheduler-Master-2" $VAR/nagios.log
374 string_in_file
"Dispatch OK of for conf in scheduler scheduler-Master-1" $VAR/nagios.log
375 string_in_file
"OK, no more reactionner sent need" $VAR/nagios.log
376 string_in_file
"OK, no more poller sent need" $VAR/nagios.log
377 string_in_file
"OK, no more broker sent need" $VAR/nagios.log
379 echo "Now we clean it"
385 echo "All check are OK. Congrats! You can go take a Beer ;)"