mirror of
https://github.com/wahyd4/pinpoint.git
synced 2026-08-17 08:46:22 +10:00
191 lines
5.3 KiB
Bash
Executable File
191 lines
5.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
UNAME=`uname`
|
|
OS_TYPE="linux";
|
|
if [[ "$UNAME" == "Darwin" ]]; then
|
|
OS_TYPE="mac"
|
|
fi
|
|
|
|
this="${BASH_SOURCE-$0}"
|
|
while [ -h "$this" ]; do
|
|
ls=`ls -ld "$this"`
|
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
if expr "$link" : '.*/.*' > /dev/null; then
|
|
this="$link"
|
|
else
|
|
this=`dirname "$this"`/"$link"
|
|
fi
|
|
done
|
|
|
|
# convert relative path to absolute path
|
|
bin=`dirname "$this"`
|
|
script=`basename "$this"`
|
|
bin=`cd "$bin">/dev/null; pwd`
|
|
this="$bin/$script"
|
|
|
|
BASE_DIR=`dirname "$bin"`
|
|
PINPOINT_BASE_DIR=`dirname "$BASE_DIR"`
|
|
AGENT_DIR=$BASE_DIR/agent
|
|
AGENT_BOOTSTRAP_DIR=$AGENT_DIR/target/pinpoint-agent
|
|
TESTAPP_DIR=$BASE_DIR/testapp
|
|
|
|
CONF_DIR=$BASE_DIR/conf
|
|
CONF_FILE=quickstart.properties
|
|
PINPOINT_CONF_FILE=pinpoint.config
|
|
|
|
LOGS_DIR=$BASE_DIR/logs
|
|
LOG_FILE=quickstart.testapp.log
|
|
|
|
PID_DIR=$BASE_DIR/logs/pid
|
|
PID_FILE=quickstart.testapp.pid
|
|
|
|
TESTAPP_IDENTIFIER=pinpoint-quickstart-testapp
|
|
IDENTIFIER=maven.pinpoint.identifier=$TESTAPP_IDENTIFIER
|
|
|
|
UNIT_TIME=5
|
|
CHECK_COUNT=36
|
|
CLOSE_WAIT_TIME=`expr $UNIT_TIME \* $CHECK_COUNT`
|
|
|
|
PROPERTIES=`cat $CONF_DIR/$CONF_FILE 2>/dev/null`
|
|
KEY_VERSION="quickstart.version"
|
|
KEY_PORT="quickstart.testapp.port"
|
|
|
|
function func_read_properties
|
|
{
|
|
key="^"$1"="
|
|
|
|
for entry in $PROPERTIES;
|
|
do
|
|
value=`echo $entry | grep $key`
|
|
|
|
if [ ! -z $value ]; then
|
|
echo $entry | cut -d '=' -f2
|
|
break
|
|
fi
|
|
done
|
|
}
|
|
|
|
function func_check_process
|
|
{
|
|
echo "---check $TESTAPP_IDENTIFIER process status.---"
|
|
|
|
pid=`cat $PID_DIR/$PID_FILE 2>/dev/null`
|
|
process_status=0
|
|
if [ ! -z $pid ]; then
|
|
process_status=`ps aux | grep $pid | grep $IDENTIFIER | grep -v grep | wc -l`
|
|
|
|
if [ ! $process_status -eq 0 ]; then
|
|
echo "already running $TESTAPP_IDENTIFIER process. pid=$pid."
|
|
fi
|
|
fi
|
|
|
|
if [ $process_status -eq 0 ]; then
|
|
process_status=`ps aux | grep $IDENTIFIER | grep -v grep | wc -l`
|
|
|
|
if [ ! $process_status -eq 0 ]; then
|
|
echo "already running $TESTAPP_IDENTIFIER process. $IDENTIFIER."
|
|
fi
|
|
fi
|
|
|
|
if [ ! $process_status -eq 0 ]; then
|
|
echo "already running $TESTAPP_IDENTIFIER process. bye."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function func_init_log
|
|
{
|
|
echo "---initialize $TESTAPP_IDENTIFIER logs.---"
|
|
|
|
if [ ! -d $LOGS_DIR ]; then
|
|
echo "mkdir $LOGS_DIR"
|
|
mkdir $LOGS_DIR
|
|
fi
|
|
|
|
if [ ! -d $PID_DIR ]; then
|
|
echo "mkdir $PID_DIR"
|
|
mkdir $PID_DIR
|
|
fi
|
|
|
|
if [ -f $LOGS_DIR/$LOG_FILE ]; then
|
|
echo "rm LOGS_DIR/$LOG_FILE."
|
|
rm $LOGS_DIR/$LOG_FILE
|
|
fi
|
|
|
|
if [ -f $PID_DIR/$PID_FILE ]; then
|
|
echo "rm $PID_DIR/$PID_FILE."
|
|
rm $PID_DIR/$PID_FILE
|
|
fi
|
|
|
|
# will add validation log file.
|
|
}
|
|
|
|
function func_init_agent
|
|
{
|
|
echo "---initialize $TESTAPP_IDENTIFIER agent.---"
|
|
|
|
version=$( func_read_properties "$KEY_VERSION" )
|
|
|
|
if [ ! -d $AGENT_DIR ]; then
|
|
echo "can't find agent path($AGENT_DIR)."
|
|
exit 1
|
|
fi
|
|
|
|
`mvn -f $AGENT_DIR/pom.xml clean package -Dmaven.pinpoint.version=$version > $LOGS_DIR/$LOG_FILE 2>/dev/null`
|
|
|
|
if [ ! -f $AGENT_BOOTSTRAP_DIR/pinpoint-bootstrap-$version.jar ]; then
|
|
echo "can't find agent file($AGENT_BOOTSTRAP_DIR/pinpoint-bootstrap-$version.jar)."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function func_start_pinpoint_testapp
|
|
{
|
|
version=$( func_read_properties "$KEY_VERSION" )
|
|
maven_opt=$MAVEN_OPTS
|
|
pinpoint_agent=$AGENT_BOOTSTRAP_DIR/pinpoint-bootstrap-$version.jar
|
|
pinpoint_opt="-javaagent:$pinpoint_agent -Dpinpoint.agentId=test-agent -Dpinpoint.applicationName=TESTAPP"
|
|
export MAVEN_OPTS=$pinpoint_opt
|
|
|
|
port=$( func_read_properties "$KEY_PORT" )
|
|
check_url="http://localhost:"$port"/getCurrentTimestamp.pinpoint"
|
|
|
|
pid=`nohup mvn -f $TESTAPP_DIR/pom.xml clean package tomcat7:run -D$IDENTIFIER -Dmaven.pinpoint.version=$version >> $LOGS_DIR/$LOG_FILE 2>&1 & echo $!`
|
|
echo $pid > $PID_DIR/$PID_FILE
|
|
export MAVEN_OPTS=$maven_opt
|
|
|
|
echo "---$TESTAPP_IDENTIFIER initialization started. pid=$pid.---"
|
|
|
|
end_count=0
|
|
process_status=`curl $check_url 2>/dev/null | grep 'getCurrentTimestamp'`
|
|
|
|
while [ -z $process_status ]; do
|
|
wait_time=`expr $end_count \* $UNIT_TIME`
|
|
echo "starting $TESTAPP_IDENTIFIER. $wait_time /$CLOSE_WAIT_TIME sec(close wait limit)."
|
|
|
|
if [ $end_count -ge $CHECK_COUNT ]; then
|
|
break
|
|
fi
|
|
|
|
sleep $UNIT_TIME
|
|
end_count=`expr $end_count + 1`
|
|
process_status=`curl $check_url 2>/dev/null | grep 'getCurrentTimestamp'`
|
|
|
|
done
|
|
|
|
if [ -z $process_status ]; then
|
|
echo "---$TESTAPP_IDENTIFIER initialization failed. pid=$pid.---"
|
|
kill -9 $pid
|
|
else
|
|
echo "---$TESTAPP_IDENTIFIER initialization completed. pid=$pid.---"
|
|
tail -f $LOGS_DIR/$LOG_FILE
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
func_check_process
|
|
func_init_log
|
|
func_init_agent
|
|
func_start_pinpoint_testapp
|