5509ed5797
valu3 => value3 enviromnet => environment direcotry => directory virualenv => virtualenv editiable => editable envirnment => environment Change-Id: I97fb2d44a37b16d02d4fbdb08bfa33414349f651
110 lines
2.4 KiB
Bash
Executable File
110 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# tests/exec.sh - Test DevStack run_process() and stop_process()
|
|
#
|
|
# exec.sh start|stop|status
|
|
#
|
|
# Set USE_SCREEN True|False to change use of screen.
|
|
#
|
|
# This script emulates the basic exec environment in ``stack.sh`` to test
|
|
# the process spawn and kill operations.
|
|
|
|
if [[ -z $1 ]]; then
|
|
echo "$0 start|stop"
|
|
exit 1
|
|
fi
|
|
|
|
TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
|
|
source $TOP_DIR/functions
|
|
|
|
USE_SCREEN=${USE_SCREEN:-False}
|
|
|
|
ENABLED_SERVICES=fake-service
|
|
|
|
SERVICE_DIR=/tmp
|
|
SCREEN_NAME=test
|
|
SCREEN_LOGDIR=${SERVICE_DIR}/${SCREEN_NAME}
|
|
|
|
|
|
# Kill background processes on exit
|
|
trap clean EXIT
|
|
clean() {
|
|
local r=$?
|
|
jobs -p
|
|
kill >/dev/null 2>&1 $(jobs -p)
|
|
exit $r
|
|
}
|
|
|
|
|
|
# Exit on any errors so that errors don't compound
|
|
trap failed ERR
|
|
failed() {
|
|
local r=$?
|
|
jobs -p
|
|
kill >/dev/null 2>&1 $(jobs -p)
|
|
set +o xtrace
|
|
[ -n "$LOGFILE" ] && echo "${0##*/} failed: full log in $LOGFILE"
|
|
exit $r
|
|
}
|
|
|
|
function status {
|
|
if [[ -r $SERVICE_DIR/$SCREEN_NAME/fake-service.pid ]]; then
|
|
pstree -pg $(cat $SERVICE_DIR/$SCREEN_NAME/fake-service.pid)
|
|
fi
|
|
ps -ef | grep fake
|
|
}
|
|
|
|
function setup_screen {
|
|
if [[ ! -d $SERVICE_DIR/$SCREEN_NAME ]]; then
|
|
rm -rf $SERVICE_DIR/$SCREEN_NAME
|
|
mkdir -p $SERVICE_DIR/$SCREEN_NAME
|
|
fi
|
|
|
|
if [[ "$USE_SCREEN" == "True" ]]; then
|
|
# Create a new named screen to run processes in
|
|
screen -d -m -S $SCREEN_NAME -t shell -s /bin/bash
|
|
sleep 1
|
|
|
|
# Set a reasonable status bar
|
|
if [ -z "$SCREEN_HARDSTATUS" ]; then
|
|
SCREEN_HARDSTATUS='%{= .} %-Lw%{= .}%> %n%f %t*%{= .}%+Lw%< %-=%{g}(%{d}%H/%l%{g})'
|
|
fi
|
|
screen -r $SCREEN_NAME -X hardstatus alwayslastline "$SCREEN_HARDSTATUS"
|
|
fi
|
|
|
|
# Clear screen rc file
|
|
SCREENRC=$TOP_DIR/tests/$SCREEN_NAME-screenrc
|
|
if [[ -e $SCREENRC ]]; then
|
|
echo -n > $SCREENRC
|
|
fi
|
|
}
|
|
|
|
# Mimic logging
|
|
# Set up output redirection without log files
|
|
# Copy stdout to fd 3
|
|
exec 3>&1
|
|
if [[ "$VERBOSE" != "True" ]]; then
|
|
# Throw away stdout and stderr
|
|
#exec 1>/dev/null 2>&1
|
|
:
|
|
fi
|
|
# Always send summary fd to original stdout
|
|
exec 6>&3
|
|
|
|
|
|
if [[ "$1" == "start" ]]; then
|
|
echo "Start service"
|
|
setup_screen
|
|
run_process fake-service "$TOP_DIR/tests/fake-service.sh"
|
|
sleep 1
|
|
status
|
|
elif [[ "$1" == "stop" ]]; then
|
|
echo "Stop service"
|
|
stop_process fake-service
|
|
status
|
|
elif [[ "$1" == "status" ]]; then
|
|
status
|
|
else
|
|
echo "Unknown command"
|
|
exit 1
|
|
fi
|