#!/bin/sh # Restart a given test component while the testsuite is running. trap "kill 0" EXIT SLEEP_BEFORE_RESPAWN=${SLEEP_BEFORE_RESPAWN:-0} i=0 max_i=500 while [ $i -lt $max_i ]; do echo "respawn: $i: starting: $*" $* & LAST_PID=$! wait $LAST_PID LAST_STATUS=$? echo "respawn: $i: stopped pid $LAST_PID with status $LAST_STATUS" if [ $LAST_STATUS -ge 128 ]; then echo "respawn: process was terminated abnormally, not respawning" exit $LAST_STATUS fi if [ $SLEEP_BEFORE_RESPAWN -gt 0 ]; then echo "respawn: sleeping $SLEEP_BEFORE_RESPAWN seconds..." sleep $SLEEP_BEFORE_RESPAWN fi i=$(expr $i + 1) done echo "respawn: exiting after $max_i runs"