#!/bin/bash
declare BrokerPid=
declare BrokerCfg=
declare TmpP4ROOT=$HMS_TEST_HOME/tmp/.p4root
declare -i Debug=1
function msg () { echo -e "$*"; }
function dbg () { [[ $Debug -eq 1 ]] || return; echo -e "DEBUG: $*" >&2; }
function cmd () { msg "Executing: $*"; $*; return $?; }
function bail () { msg "\\nError: ${1:-Unknown Error}\\n"; exit ${2:-1}; }
function get_broker_pid () {
pid=$(ps -ef | grep "$P4BROKERBIN" | grep -v " grep " | \
awk '{print $2}' | head -1)
echo $pid
}
source ./env.sh
BrokerCfg="$HMS_TEST_HOME/broker.cfg"
case ${1:-status} in
(start)
if [[ -r "$BrokerCfg" ]]; then
msg "Using existing $BrokerCfg."
else
msg "Generating $BrokerCfg from template."
if ! sed -e "s:__HMS_SCRIPTS__:$HMS_SCRIPTS:g" -e "s:__P4PORT__:$P4PORT:g" -e "s:__P4BROKERPORT__:$P4BROKERPORT:g" -e "s:__HMS_TEST_HOME__:$HMS_TEST_HOME:g" "${BrokerCfg}.t" > "$BrokerCfg"; then
bail "Failed to generate broker config."
fi
fi
cd "$HMS_TEST_HOME" || bail "Failed to cd to $HMS_TEST_HOME."
cmd "$P4BROKERBIN" -c "$BrokerCfg" -q -d
# Start a helper p4d. It does nothing, but needs to be running,
# otherwise the broker can't do anything except a 'reject' or
# 'redirect' action.
unset P4JOURNAL P4AUDIT P4DEBUG P4CHANGE P4AUTH P4LOG
rm -rf $TmpP4ROOT
mkdir -p $TmpP4ROOT
cmd p4d -r $TmpP4ROOT -p $P4PORT -q --daemonsafe --pid-file
;;
(stop)
if [[ -r "$TmpP4ROOT/server.pid" ]]; then
msg "Killing helper p4d."
cmd kill $(cat $TmpP4ROOT/server.pid)
else
msg Helper p4d was not running.
fi
BrokerPid=$(get_broker_pid)
if [[ -n "$BrokerPid" ]]; then
msg "Killing broker."
cmd kill $BrokerPid
else
msg Broker was not running.
fi
;;
(status)
if [[ -r "$TmpP4ROOT/server.pid" ]]; then
msg "Helper p4d appears to be running."
else
msg "Helper p4d is not running."
fi
BrokerPid=$(get_broker_pid)
if [[ -n "$BrokerPid" ]]; then
msg Broker is running as pid $BrokerPid.
else
msg Broker is not running.
fi
;;
(clean)
msg "Removing: $TmpP4ROOT"
rm -rf "$TmpP4ROOT"
msg "Removing: $BrokerCfg"
rm -f "$BrokerCfg"
;;
(*)
msg "\\nUsage:\\n\\t${0##*/} {start|stop|status}\\n"
;;
esac
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #2 | 27577 | C. Thomas Tyler | Released HMS 2021.1.27575 (2021/03/05). | ||
| #1 | 25719 | C. Thomas Tyler | Released HMS 2019.1.25712 (2019/06/18). | ||
| //guest/perforce_software/hms/dev/test/b | |||||
| #1 | 25535 | C. Thomas Tyler | Refactored hms test root. | ||
| //guest/perforce_software/hms/dev/test/hms/b | |||||
| #1 | 25531 | C. Thomas Tyler |
Refactored to receive merge from SDP. This structure emphasizes that HMS will be layered on the SDP. The tree is now structured to make it clear where files appear in an as-deployed configurtion, overlaid into the '/p4/common' structure of the SDP. The test suite is outside this structure, as it will not be deployed (due to dependencies on infratructure that won't likely appear in SDP production deployments). |
||
| //guest/perforce_software/hms/dev/hms/test/b | |||||
| #1 | 20506 | C. Thomas Tyler |
Added test broker init script sporting helper p4d for offline testing. |
||