Posted at

zaleniumの起動・停止制御を行うスクリプト

More than 1 year has passed since last update.

自分の環境のみかもしれないけど、Zaleniumとphpunitを長時間稼働、長時間テスト実行しているとメモリ不足でエラーが出まくるので対策として起動・停止を外から管理できるようなbashスクリプトを作ってみた

zaleniumについては以下参照

zaleniumのgithub

現状、zalenium止めたらメモリは復活するから原因の特定はやらない予定

/opt/docker_volume/は共有用の場所


script

#!/bin/bash

# status:
# stop : stop zalenium
# run : start zalenium
# running : no touch

function start_zalenium() {
# 起動してたら止める
stop_zalenium
docker pull elgalu/selenium
docker pull dosel/zalenium
# start zalenium container
docker run --rm -i --name zalenium -p 4444:4444 -v /var/run/docker.sock:/var/run/docker.sock -v /opt/docker_volume/zalenium:/home/seluser/videos --privileged dosel/zalenium start --timeZone 'Asia/Tokyo' --debugEnabled true
}

function stop_zalenium() {
if_value=$(docker ps -a | grep -c "zalenium")
if [[ "$if_value" != "0" ]]; then
docker ps -a | grep "zalenium" | awk '{print $1}' | xargs docker stop
fi
echo "#---------------#"
echo "# zalenium stop #"
echo "#---------------#"
echo ""
}

function execute() {
ZALENIUM_SCRIPT_STATUS_FILE="zalenium_script_status"
touch $ZALENIUM_SCRIPT_STATUS_FILE
while [[ -f "$ZALENIUM_SCRIPT_STATUS_FILE" ]]; do
now_status=$(head -n1 $ZALENIUM_SCRIPT_STATUS_FILE)
if [[ "$now_status" == "run" ]]; then
start_zalenium &
echo "running" > $ZALENIUM_SCRIPT_STATUS_FILE
# 停止まで適当に待つ
sleep 300
elif [[ "$now_status" == "stop" ]]; then
echo "stoped" > $ZALENIUM_SCRIPT_STATUS_FILE
stop_zalenium
fi
sleep 1
done
}

execute


一番最初はこれを起動しておいて、テスト実行するときのスクリプトにecho "run" > zalenium_script_statusみたいなのを最初に、テスト終了後にecho "stop" > zalenium_script_statusを実行するように仕込めば動くはず

本当にzaleniumが原因なのかは不明だけど、とりあえずこれで土日放置できる。。。