mirror of
https://github.com/Unitech/pm2.git
synced 2025-12-08 20:35:53 +00:00
259 lines
4.1 KiB
Bash
259 lines
4.1 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
SRC=$(cd $(dirname "$0"); pwd)
|
|
source "${SRC}/include.sh"
|
|
|
|
cd $file_path
|
|
|
|
# Determine wget / curl
|
|
which wget > /dev/null
|
|
if [ $? -eq 0 ]
|
|
then
|
|
http_get="wget"
|
|
else
|
|
echo -e "\033[31mYou need wget to run this test \033[0m";
|
|
exit 1;
|
|
fi
|
|
|
|
#
|
|
# Different way to stop process
|
|
#
|
|
$pm2 start echo.js
|
|
$pm2 start echo.js -f
|
|
$pm2 start echo.js -f
|
|
|
|
sleep 0.5
|
|
|
|
should 'should have started 3 apps' 'online' 3
|
|
|
|
$pm2 stop 12412
|
|
$pm2 stop 0
|
|
|
|
should 'should have stopped 1 apps' 'stopped' 1
|
|
|
|
$pm2 stop asdsdaecho.js
|
|
|
|
$pm2 stop echo
|
|
|
|
should 'should have stopped 3 apps' 'stopped' 3
|
|
|
|
|
|
#
|
|
# Describe process
|
|
#
|
|
$pm2 describe 0
|
|
spec "should describe stopped process"
|
|
|
|
$pm2 restart 1
|
|
|
|
$pm2 describe 1
|
|
spec "should describe online process"
|
|
|
|
$pm2 describe asdsa
|
|
ispec "should exit with right exit code when no process found"
|
|
|
|
#
|
|
# Update pm2
|
|
#
|
|
$pm2 updatePM2
|
|
spec "should update pm2"
|
|
|
|
|
|
|
|
#
|
|
# Verify PID
|
|
#
|
|
$pm2 kill
|
|
|
|
$pm2 start echo.js -p echo.pid
|
|
|
|
sleep 0.5
|
|
ls echo-0.pid
|
|
spec "should pid file exists"
|
|
|
|
$pm2 stop all
|
|
|
|
sleep 1
|
|
|
|
ls echo-0.pid
|
|
ispec "should pid file be deleted once stopped"
|
|
|
|
$pm2 kill
|
|
|
|
$pm2 start echo.js -p echo.pid -i 1
|
|
|
|
sleep 1
|
|
|
|
ls echo-0.pid
|
|
spec "should pid file exists"
|
|
|
|
$pm2 stop all
|
|
|
|
sleep 1
|
|
|
|
ls echo-0.pid
|
|
ispec "should pid file be deleted once stopped"
|
|
|
|
$pm2 kill
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
# Main tests
|
|
#
|
|
$pm2 kill
|
|
spec "kill daemon"
|
|
|
|
$pm2 start eyayimfake
|
|
ispec "should fail if script doesnt exist"
|
|
|
|
$pm2
|
|
ispec "No argument"
|
|
|
|
$pm2 list
|
|
|
|
$pm2 start cluster-pm2.json
|
|
spec "Should start well formated json with name for file prefix"
|
|
|
|
$pm2 list
|
|
spec "Should list processes successfully"
|
|
|
|
|
|
$pm2 start multi-echo.json
|
|
spec "Should start multiple applications"
|
|
|
|
$pm2 generate echo
|
|
spec "Should generate echo sample json"
|
|
|
|
$pm2 start echo-pm2.json -f
|
|
spec "Should start echo service"
|
|
|
|
$pm2 list
|
|
|
|
# Not consistent on travis :(
|
|
# OUT=`$pm2 logs --nostream --lines 10 PM2 | wc -l`
|
|
# [ $OUT -gt 10 ] || fail "Error : pm2 logs ouput showed $OUT lines but min is 10"
|
|
# success "should only print logs"
|
|
|
|
# OUT=`$pm2 logs --nostream --lines 100 PM2 | wc -l`
|
|
# [ $OUT -gt 100 ] || fail "Error : pm2 logs ouput showed $OUT lines but min is 100"
|
|
# success "should only print logs: "
|
|
|
|
# sleep 1
|
|
|
|
# kill $!
|
|
# spec "Should kill logs"
|
|
|
|
# $pm2 logs echo &
|
|
# spec "Should display logs"
|
|
# TMPPID=$!
|
|
|
|
# sleep 1
|
|
|
|
# kill $!
|
|
# spec "Should kill logs"
|
|
|
|
|
|
$pm2 web
|
|
spec "Should start web interface"
|
|
|
|
sleep 1
|
|
|
|
JSON_FILE='/tmp/web-json'
|
|
|
|
$http_get -q http://localhost:9615/ -O $JSON_FILE
|
|
cat $JSON_FILE | grep "HttpInterface.js" > /dev/null
|
|
spec "Should get the right JSON with HttpInterface file launched"
|
|
|
|
$pm2 flush
|
|
spec "Should clean logs"
|
|
|
|
# cat ~/.pm2/logs/echo-out.log | wc -l
|
|
# spec "File Log should be cleaned"
|
|
|
|
sleep 1
|
|
$http_get -q http://localhost:9615/ -O $JSON_FILE
|
|
cat $JSON_FILE | grep "restart_time\":0" > /dev/null
|
|
spec "Should get the right JSON with HttpInterface file launched"
|
|
|
|
#
|
|
# Restart only one process
|
|
#
|
|
$pm2 restart 1
|
|
should 'should has restarted process' 'restart_time: 1' 1
|
|
|
|
#
|
|
# Restart all processes
|
|
#
|
|
$pm2 restart all
|
|
spec "Should restart all processes"
|
|
|
|
sleep 1
|
|
$http_get -q http://localhost:9615/ -O $JSON_FILE
|
|
OUT=`cat $JSON_FILE | grep -o "restart_time\":1" | wc -l`
|
|
|
|
[ $OUT -eq 7 ] || fail "Error while wgeting data via web interface"
|
|
success "Got data from interface"
|
|
|
|
|
|
$pm2 list
|
|
|
|
$pm2 dump
|
|
spec "Should dump current processes"
|
|
|
|
$pm2 save
|
|
spec "Should save (dump alias) current processes"
|
|
|
|
|
|
ls ~/.pm2/dump.pm2
|
|
spec "Dump file should be present"
|
|
|
|
$pm2 stop all
|
|
spec "Should stop all processes"
|
|
|
|
sleep 0.5
|
|
should 'should have stopped 8 apps' 'stopped' 8
|
|
|
|
|
|
$pm2 kill
|
|
|
|
#
|
|
# Issue #71
|
|
#
|
|
|
|
PROC_NAME='ECHONEST'
|
|
# Launch a script with name option
|
|
$pm2 start echo.js --name $PROC_NAME -f
|
|
should 'should have started app with name' 'ECHONEST' 7
|
|
|
|
# Restart a process by name
|
|
$pm2 restart $PROC_NAME
|
|
should 'should have restarted app by name' 'restart_time: 1' 1
|
|
|
|
|
|
|
|
$pm2 kill
|
|
|
|
$pm2 resurrect
|
|
spec "Should resurrect all apps"
|
|
|
|
sleep 0.5
|
|
should 'should have resurrected all processes' 'restart_time' 8
|
|
|
|
|
|
|
|
$pm2 delete all
|
|
spec "Should delete all processes"
|
|
|
|
sleep 0.5
|
|
should 'should have deleted process' 'restart_time' 0
|
|
|
|
$pm2 kill test
|
|
ispec "Should not kill with extra args"
|
|
|
|
$pm2 kill
|
|
spec "Should kill daemon"
|