Shell script for stress testing

ParseInstance()

{

  Files=`find ${JMS_UTIL_CONFIG_PATH} -name "*.jms.properties" | grep -v common | sort`

  FileCount=`echo "${Files}"|wc -w|tr -d ' '`

  [ $FileCount -le 0 ]  && { echo "Not found config files in ${JMS_UTIL_CONFIG_PATH}....."; return 1; }

  INDEX=1

  for file in ${Files}; do

    FileName=`basename ${file}`

    read ENV SYSTEM <<< `echo ${FileName} | awk -F . '{print $1, $2}'`

    EnvCount=`echo "${ENV}" | wc -w | tr -d ' '`

    SystemCount=`echo "${SYSTEM}" | wc -w | tr -d ' '`

    [ ${EnvCount} -le 0 -o ${SystemCount} -le 0 ] && { echo "Invalid config file found: ${FileName}"; return 1; }

    ENVCAP=`echo "${ENV}" | tr 'a-z' 'A-Z'`

    SYSTEMCAP=`echo "${SYSTEM}" | tr 'a-z' 'A-Z'`

    ENVARRAY[${INDEX}]=${ENV}

    SYSARRAY[${INDEX}]=${SYSTEM}

    echo ${INDEX}. ${SYSTEMCAP} ${ENVCAP}

    INDEX=`expr ${INDEX} + 1`

  done

}

ParseDestination()

{

  SYS=`echo "${system}" | tr 'a-z' 'A-Z'`

  ParseConf ${JMS_UTIL_DEST_CONFIG} ${SYS}    

  DESTINX=1

  for line in ${SectionItems}; do

    if [ "${line:0:1}" == "[" ]; then

      continue;

    fi 

    read DESTNAME DESTVALUE <<< `echo ${line} | awk -F = '{print $1, $2}'`

    DESTARRAY[${DESTINX}]=${DESTVALUE}

    echo ${DESTINX}. ${DESTNAME}

    DESTINX=`expr ${DESTINX} + 1`

  done

    

}

ParseConf() 

{

  ENVCONF=$1

  Section=$2

  [ ! -f $ENVCONF ] && { echo "Not found $ENVCONF...."; return 1; }

  Section=`echo "${Section}"|tr -d ' '`

  SectionLen=`echo "${Section}"|wc -w|tr -d ' '`

  [ $SectionLen -le 0 ] && { echo "Section name is empty...."; return 1; }

  LeftIndexList=`sed -n -e "/\[/ =" $ENVCONF|tr "\n" " " `; 

  LeftIndexLen=`echo "${LeftIndexList}"|wc -w|tr -d ' '`; 

  [ $LeftIndexLen -le 0 ] && { echo "Unknown format in $ENVCONF...."; return 1; }

  LastLeftIndex=`echo "${LeftIndexList}"|awk '{print $NF}'`

  SectionIndex=`sed -n -e "/\[$Section\]/ =" $ENVCONF`

  isOK=$? 

  SectionIndexLen=`echo "${SectionIndex}"|wc -w|tr -d ' '`

  [ $isOK -ne 0 -o $SectionIndexLen -le 0 ] && { echo "Not found $Section in $ENVCONF....."; return 1; }  

  SectionEndLine="\["

  [ $LastLeftIndex -eq $SectionIndex ] && { SectionEndLine="\\$"; }

  

  SectionItems=`sed -n -e "$SectionIndex,/$SectionEndLine/p" $ENVCONF`

  SectionItemsLines=`echo "${SectionItems}"|wc -l |tr -d ' '`

  [ $SectionItemsLines -le 0 ] && { echo "Not found the content of $Section in $ENVCONF....."; return 1; }

  return 0

}

JMS_UTIL_HOME=.

JMS_UTIL_CONFIG_PATH=${JMS_UTIL_HOME}/jms-properties

JMS_UTIL_DEST_CONFIG=${JMS_UTIL_CONFIG_PATH}/destinations.properties

JMS_UTIL_CLASSPATH=`ls *.jar`

CLASSPATH=.:${JMS_UTIL_CLASSPATH}:$TPS_CASH_COMMON_CLASSPATH:$CLASSPATH

echo EMS Instances

echo ---------------

ParseInstance

echo ---------------

NUMOFOPT=${#ENVARRAY[@]}

INPUT=

while true; do

  echo "Please select EMS instance:"

  read INPUT

  RESULT=`expr match $INPUT '\([0-9]*\)'`

  echo "INPUT: ${INPUT} / RESULT: ${RESULT}"

  if [[ "${INPUT}" != "${RESULT}" ]]; then

    echo "Invalid input. Try again..."

    echo

    continue;

  elif [ ${INPUT} -lt 1 -o ${INPUT} -gt ${NUMOFOPT} ]; then

    echo "${INPUT} is not in the list. Try again..."

    echo

  else 

    environment=${ENVARRAY[$INPUT]}

    system=${SYSARRAY[$INPUT]}

    break;

  fi

done

echo Destinations

echo ---------------

ParseDestination

echo ---------------

NUMOFOPT=${#DESTARRAY[@]}

INPUT=

while true; do

  echo "Please select destination:"

  read INPUT

  RESULT=`expr match $INPUT '\([0-9]*\)'`

  echo "INPUT: ${INPUT} / RESULT: ${RESULT}"

  if [[ "${INPUT}" != "${RESULT}" ]]; then

    echo "Invalid input. Try again..."

    echo

    continue;

  elif [ ${INPUT} -lt 1 -o ${INPUT} -gt ${NUMOFOPT} ]; then

    echo "${INPUT} is not in the list. Try again..."

    echo

  else

    destination=${DESTARRAY[$INPUT]}

    break;

  fi

done

INPUT=

while true; do

  echo "Please enter the path of message file or directory contains message files:"

  read INPUT

  if [ ! -e ${INPUT} ]; then

    echo "File or Directory doesn't exists. Try again..."

    echo

    continue;

  elif [ -d ${INPUT} ]; then

    DirPath=${INPUT}

    break;

  else

    FilePath=${INPUT}

    IsFile=true

    break;

  fi

done

if [ "${IsFile}" == "true" ]; then

  INPUT=

  while true; do

    echo "Please enter times you want to publish:"

    read INPUT

    RESULT=`expr match $INPUT '\([0-9]*\)'`

    if [[ "${INPUT}" != "${RESULT}" ]]; then

      echo "Invalid input. Try again..."

      echo

      continue;

    else

      times=${INPUT};

      break;

    fi

  done

fi

tester=`whoami`

$JAVA_HOME/bin/java -Denvironment=${environment} -Dsystem=${system} -Ddestination=${destination} -Dfile.path=${FilePath} -Ddir.path=${DirPath} -Dtimes=${times} -Dtester=${tester} com.kevin.test.jms.TestSender >> stress_testing.log

相关推荐