b #2

  • //
  • guest/
  • perforce_software/
  • hms/
  • dev/
  • test/
  • b
  • View
  • Commits
  • Open Download .zip Download (2 KB)
#!/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 27575 C. Thomas Tyler Test environment refinements.
#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.