1
0
mirror of https://github.com/schollz/cowyo.git synced 2023-08-10 21:13:00 +03:00
cowyo/vendor/gopkg.in/mgo.v2/harness/setup.sh
2017-10-03 14:43:55 -04:00

97 lines
2.3 KiB
Bash
Executable File

#!/bin/sh -e
LINE="---------------"
start() {
if [ -d _harness ]; then
echo "Daemon setup already in place, stop it first."
exit 1
fi
mkdir -p _harness
cd _harness
cp -a ../harness/daemons .
cp -a ../harness/certs .
echo keyfile > certs/keyfile
chmod 600 certs/keyfile
if ! mongod --help | grep -q -- --ssl; then
rm -rf daemons/db3
fi
COUNT=$(ls daemons | wc -l)
echo "Running daemons..."
svscan daemons &
SVSCANPID=$!
echo $SVSCANPID > svscan.pid
if ! kill -0 $SVSCANPID; then
echo "Cannot execute svscan."
exit 1
fi
echo "Starting $COUNT processes..."
for i in $(seq 30); do
UP=$(svstat daemons/* | grep ' up ' | grep -v ' [0-3] seconds' | wc -l)
echo "$UP processes up..."
if [ x$COUNT = x$UP ]; then
echo "Running setup.js with mongo..."
mongo --nodb ../harness/mongojs/init.js
exit 0
fi
sleep 1
done
echo "Failed to start processes. svstat _harness/daemons/* output:"
echo $LINE
svstat daemons/*
echo $LINE
for DAEMON in daemons/*; do
if $(svstat $DAEMON | grep ' up ' | grep ' [0-3] seconds' > /dev/null); then
echo "Logs for _harness/$DAEMON:"
echo $LINE
cat $DAEMON/log/log.txt
echo $LINE
fi
done
exit 1
}
stop() {
if [ -d _harness ]; then
cd _harness
if [ -f svscan.pid ]; then
kill -9 $(cat svscan.pid) 2> /dev/null || true
svc -dx daemons/* daemons/*/log > /dev/null 2>&1 || true
COUNT=$(ls daemons | wc -l)
echo "Shutting down $COUNT processes..."
while true; do
DOWN=$(svstat daemons/* | grep 'supervise not running' | wc -l)
echo "$DOWN processes down..."
if [ x$DOWN = x$COUNT ]; then
break
fi
sleep 1
done
rm svscan.pid
echo "Done."
fi
cd ..
rm -rf _harness
fi
}
if [ ! -f suite_test.go ]; then
echo "This script must be run from within the source directory."
exit 1
fi
case "$1" in
start)
start $2
;;
stop)
stop $2
;;
esac
# vim:ts=4:sw=4:et