Files
UnrealEngine/Engine/Extras/RoboMerge/v3/run-tests.sh
2025-05-18 13:04:45 +08:00

120 lines
3.4 KiB
Bash

RED='\033[0;31m'
GREEN='\033[0;32m'
NO_COLOUR='\033[0m'
die() {
err=$?
msg=$1
if [ -n "$msg" ]; then
echo "$msg" >&2
fi
echo "Failed with exit code $err." >&2
exit $err
}
cleanup() {
# Cleanup any old containers
docker stop robomerge_unittests &
docker stop p4docker &
docker stop robomerge_functtest &
docker stop robomerge_functionaltests &
wait
docker rm robomerge_unittests &
docker rm p4docker &
docker rm robomerge_functtest &
docker rm robomerge_functionaltests &
wait
# Cleanup any old networking
docker network rm robomerge_functtest_network
}
cleanup
docker network create --driver bridge robomerge_functtest_network &
docker build -t helix -f helix.Dockerfile .
docker build -t helix-and-node -f helix-and-node.Dockerfile .
docker build -t p4docker -f Dockerfile.p4docker . &
docker build -t robomerge -f Dockerfile . &
robo_build_pid=$!
docker build -t robomerge_functionaltests -f functional_tests/tstests.Dockerfile . &
tests_build_pid=$!
wait $robo_build_pid
if [ $? -ne 0 ]; then
exit 1
fi
wait $tests_build_pid
if [ $? -ne 0 ]; then
exit 1
fi
wait
echo "Running unit tests"
docker run -a stderr -h robomerge_unittests --name robomerge_unittests robomerge npm test
UNIT_TESTS_RETURN_CODE=`docker inspect robomerge_unittests --format='{{.State.ExitCode}}'`
if [ "$UNIT_TESTS_RETURN_CODE" != "0" ]; then
echo Errors encountered during unit tests, check docker logs.
echo Logs from local Robomerge instance:
docker logs robomerge_unittests
cleanup
exit 1
fi
echo "Unit tests complete. Return code: $UNIT_TESTS_RETURN_CODE"
red() { while read msg; do printf "$RED$msg$NO_COLOUR\n"; done }
green() { while read msg; do printf "$GREEN$msg$NO_COLOUR\n"; done }
echo
echo "------------------------" | green
echo "Running functional tests" | green
echo "------------------------" | green
docker run -d -p 1666:1666 -h p4docker --name p4docker --network robomerge_functtest_network p4docker
sleep 5
docker run -d -p 8877:8877 -p 8811:8811 -p 25:25 -h robomerge_functtest --name robomerge_functtest --network robomerge_functtest_network \
-e ROBO_DEV_MODE=true \
-e ROBO_DEV_MODE_USER=testuser1 \
-e P4PORT=p4docker:1666 \
-e ROBO_BRANCHSPECS_ROOT_PATH=//RoboMergeData/Main \
-e ROBO_PERSISTENCE_BACKUP_FREQUENCY=0 \
-e ROBO_USE_SLACK_IN_DEV=true \
-e ROBO_NO_MAIL=true \
-e ROBO_NO_TLS=true \
-e ROBO_EXTERNAL_URL=http://robomerge_functtest:8877 \
-e BOTNAME=ft1,ft2,ft3,ft4,targets \
-e ROBO_LOG_LEVEL=info \
-e ROBO_SLACK_DOMAIN=http://localhost:8811 \
-e ROBO_EXCLUSIVE_LOCK_OPENEDS_TO_RUN=1 \
robomerge node --trace-warnings dist/robo/watchdog.js
docker run -t --hostname robomerge_functionaltests --name robomerge_functionaltests --network robomerge_functtest_network \
-e P4PORT=p4docker:1666 robomerge_functionaltests
FUNCT_TEST_RETURN_CODE=`docker inspect robomerge_functionaltests --format='{{.State.ExitCode}}'`
if [ "$FUNCT_TEST_RETURN_CODE" != "0" ]; then
# echo "P4Docker Container Logs:"
# docker logs --tail 50 p4docker
echo "RoboMerge TS Container Logs:"
docker logs --tail 20 robomerge_functtest
docker logs robomerge_functtest | grep -i "error:" | red
else
echo "Functional tests complete. Return code: $FUNCT_TEST_RETURN_CODE"
fi
docker logs robomerge_functtest > robo.log
cleanup