[hobbit] How to create multiple custum test under one column
Ralph Mitchell
ralphmitchell at gmail.com
Tue Dec 8 01:57:16 CET 2009
On Mon, Dec 7, 2009 at 11:17 AM, <thorsten.erdmann at daimler.com> wrote:
>
> Hi,
>
> I want to do some application tests on several servers. All these test
> should be under one column named "app". Every test is unique for one server.
> So test "app" on "server1" is different from "app" on server2. All these
> test run remotely on the hobbit server, not on the destination servers.
>
> For now I wrote a test-script for every test and define a unique testname
> for the bbhost file for every test-script. In the script I reported to the
> "app" column. Works fine, but I have to include every test-script in the
> hobbitlaunch file and so all these tests run simultaneously, resulting in a
> big number of processes on the hobbit server.
>
> So I think of writing _one_ testscript for the "app" test and let this
> script decide which subscript should be run for each host. So all the
> different tests would be run under one master test script and so I hopefully
> get only one process.
>
> BBHTAG=app # What we put in bb-hosts to trigger this test
> COLUMN=app # Name of the column, often same as tag in bb-hosts
>
> TEMPFILE_OUTPUT=$BBTMP/$BBHTAG.output.tmp
> TEMPFILE=$BBTMP/$BBHTAG.tmp
> $BBHOME/bin/bbhostgrep $BBHTAG | while read L
> do
> echo "found hosts: $L"
> rm $TEMPFILEOUTPUT >/dev/null 2>&1
> set $L # To get one line of output from bbhostgrep
> HOSTIP="$1"
> MACHINEDOTS="$2"
> MACHINE=`echo $2 | $SED -e's/\./,/g'`
>
> COLOR=green
> echo "Application test on $MACHINEDOTS" > $TEMPFILE
>
> if "$MACHINE" == "server1"
> . apptest_server1.sh
> fi
> if "$MACHINE" == "server2"
> . apptest_server2.sh
> fi
> MSG=`cat $TEMPFILE_OUTPUT | fold -s -w 100`
>
> if [ $DEBUG = TRUE ]
> then
> echo "status $MACHINE.$COLUMN $COLOR `date` $MSG"
> else
> $BB $BBDISP "status $MACHINE.$COLUMN $COLOR `date` $MSG"
> fi
>
>>
>> Thank you
>> Thorsten Erdmann
>>
>> If you are not the intended addressee, please inform us immediately that
>> you have received this e-mail in error, and delete it. We thank you for your
>> cooperation.
>>
> rm $TEMPFILE_OUTPUT >/dev/null 2>&1
> done
>
> exit 0
>
>
> What do you think of this method? Maybe you have a better idea?
>
>
I've used cron quite effectively. Most of the scripts were repeating every
ten minutes, so I could schedule where in the ten minute block the tests
would start. I also had some tests running every 5 minutes, 3 minutes, 1
minute and 30 seconds, so occasionally there would be a "planetary
alignment" when a large bunch of tests ran together, causing a cpu spike on
the server.
In my case, I was running a bunch of checks on web servers, so each "parent"
script started by cron would run through a loop running a "child" script
against each of a list of web servers. If the script finishes quickly, a
bunch can be backgrounded to run near simultaneously, something like this:
for x in 1 2 3 4 5 6 7 8
do
$SCRIPTDIR/script server$x &
done
wait
Ralph Mitchell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xymon.com/pipermail/xymon/attachments/20091207/42e21eb3/attachment.html>
More information about the Xymon
mailing list