Stirling-PDF/test.sh

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

153 lines
4.7 KiB
Bash
Raw Normal View History

2023-12-30 19:56:07 +01:00
#!/bin/bash
# Function to check the health of the service with a timeout of 80 seconds
check_health() {
local service_name=$1
local compose_file=$2
local end=$((SECONDS+60))
2023-12-30 22:32:04 +01:00
echo -n "Waiting for $service_name to become healthy..."
until [ "$(docker inspect --format='{{json .State.Health.Status}}' "$service_name")" == '"healthy"' ] || [ $SECONDS -ge $end ]; do
sleep 3
echo -n "."
if [ $SECONDS -ge $end ]; then
echo -e "\n$service_name health check timed out after 80 seconds."
2023-12-31 20:13:24 +01:00
echo "Printing logs for $service_name:"
docker logs "$service_name"
2023-12-30 22:32:04 +01:00
return 1
fi
done
echo -e "\n$service_name is healthy!"
2024-03-09 15:03:46 +01:00
echo "Printing logs for $service_name:"
docker logs "$service_name"
2023-12-30 19:56:07 +01:00
return 0
}
# Function to test a Docker Compose configuration
test_compose() {
local compose_file=$1
local service_name=$2
local status=0
echo "Testing $compose_file configuration..."
# Start up the Docker Compose service
docker-compose -f "$compose_file" up -d
# Wait for the service to become healthy
if check_health "$service_name" "$compose_file"; then
echo "$service_name test passed."
else
echo "$service_name test failed."
status=1
fi
return $status
}
# Keep track of which tests passed and failed
declare -a passed_tests
declare -a failed_tests
run_tests() {
local test_name=$1
local compose_file=$2
if test_compose "$compose_file" "$test_name"; then
passed_tests+=("$test_name")
else
failed_tests+=("$test_name")
fi
}
# Main testing routine
main() {
2023-12-30 22:32:04 +01:00
SECONDS=0
2024-02-11 17:47:00 +01:00
2023-12-30 19:56:07 +01:00
export DOCKER_ENABLE_SECURITY=false
2024-01-02 22:17:25 +01:00
# Run the gradlew build command and check if it fails
if ! ./gradlew clean build; then
echo "Gradle build failed with security disabled, exiting script."
exit 1
fi
2023-12-30 19:56:07 +01:00
# Building Docker images
# docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest -f ./Dockerfile .
# docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest-ultra-lite -f ./Dockerfile-ultra-lite .
2024-06-01 13:38:10 +02:00
2023-12-30 19:56:07 +01:00
# Test each configuration
2024-10-14 23:34:41 +02:00
#run_tests "Stirling-PDF-Ultra-Lite" "./exampleYmlFiles/docker-compose-latest-ultra-lite.yml"
#docker-compose -f "./exampleYmlFiles/docker-compose-latest-ultra-lite.yml" down
2024-05-27 23:30:25 +02:00
2024-10-14 23:34:41 +02:00
# run_tests "Stirling-PDF" "./exampleYmlFiles/docker-compose-latest.yml"
#docker-compose -f "./exampleYmlFiles/docker-compose-latest.yml" down
2023-12-30 19:56:07 +01:00
export DOCKER_ENABLE_SECURITY=true
2024-01-02 22:17:25 +01:00
# Run the gradlew build command and check if it fails
if ! ./gradlew clean build; then
echo "Gradle build failed with security enabled, exiting script."
exit 1
fi
2023-12-30 19:56:07 +01:00
# Building Docker images with security enabled
# docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest -f ./Dockerfile .
# docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest-ultra-lite -f ./Dockerfile-ultra-lite .
docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest-fat -f ./Dockerfile-fat .
2024-06-01 14:55:28 +02:00
2023-12-30 19:56:07 +01:00
# Test each configuration with security
2024-10-14 23:34:41 +02:00
# run_tests "Stirling-PDF-Ultra-Lite-Security" "./exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml"
#docker-compose -f "./exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml" down
# run_tests "Stirling-PDF-Security" "./exampleYmlFiles/docker-compose-latest-security.yml"
# docker-compose -f "./exampleYmlFiles/docker-compose-latest-security.yml" down
2024-06-01 14:55:28 +02:00
run_tests "Stirling-PDF-Security-Fat" "./exampleYmlFiles/docker-compose-latest-fat-security.yml"
2024-10-14 23:34:41 +02:00
if [ $? -eq 0 ]; then
cd cucumber
if python -m behave; then
passed_tests+=("Stirling-PDF-Regression")
else
failed_tests+=("Stirling-PDF-Regression")
echo "Printing docker logs of failed regression"
docker logs "Stirling-PDF-Security-Fat"
echo "Printed docker logs of failed regression"
fi
cd ..
fi
2024-06-01 14:55:28 +02:00
docker-compose -f "./exampleYmlFiles/docker-compose-latest-fat-security.yml" down
2023-12-30 19:56:07 +01:00
# Report results
2023-12-30 22:32:04 +01:00
echo "All tests completed in $SECONDS seconds."
2024-02-11 17:47:00 +01:00
2023-12-30 19:56:07 +01:00
if [ ${#passed_tests[@]} -ne 0 ]; then
echo "Passed tests:"
fi
for test in "${passed_tests[@]}"; do
echo -e "\e[32m$test\e[0m" # Green color for passed tests
done
if [ ${#failed_tests[@]} -ne 0 ]; then
echo "Failed tests:"
fi
for test in "${failed_tests[@]}"; do
echo -e "\e[31m$test\e[0m" # Red color for failed tests
done
2024-02-11 17:47:00 +01:00
2023-12-30 19:56:07 +01:00
# Check if there are any failed tests and exit with an error code if so
if [ ${#failed_tests[@]} -ne 0 ]; then
echo "Some tests failed."
exit 1
else
echo "All tests passed successfully."
exit 0
fi
2024-02-11 17:47:00 +01:00
2023-12-30 19:56:07 +01:00
}
2024-05-27 23:30:25 +02:00
main