mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-10-25 11:17:28 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			153 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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))
 | |
| 
 | |
|     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."
 | |
| 			echo "Printing logs for $service_name:"
 | |
|             docker logs "$service_name"
 | |
| 			return 1
 | |
| 		fi
 | |
| 	done
 | |
| 	echo -e "\n$service_name is healthy!"
 | |
| 	echo "Printing logs for $service_name:"
 | |
|     docker logs "$service_name"
 | |
|     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() {
 | |
| 	SECONDS=0
 | |
| 
 | |
|     export DOCKER_ENABLE_SECURITY=false
 | |
|     # 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
 | |
| 
 | |
| 
 | |
|     # 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 .
 | |
| 	
 | |
|     # Test each configuration
 | |
|     #run_tests "Stirling-PDF-Ultra-Lite" "./exampleYmlFiles/docker-compose-latest-ultra-lite.yml"
 | |
| 	#docker-compose -f "./exampleYmlFiles/docker-compose-latest-ultra-lite.yml" down
 | |
| 	
 | |
| 
 | |
|   #  run_tests "Stirling-PDF" "./exampleYmlFiles/docker-compose-latest.yml"
 | |
| 	#docker-compose -f "./exampleYmlFiles/docker-compose-latest.yml" down
 | |
| 
 | |
|     export DOCKER_ENABLE_SECURITY=true
 | |
|     # 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
 | |
| 
 | |
| 
 | |
|     # 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 .
 | |
|     
 | |
|     
 | |
|     # Test each configuration with security
 | |
|   #  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
 | |
| 
 | |
| 	run_tests "Stirling-PDF-Security-Fat" "./exampleYmlFiles/test_cicd.yml"
 | |
| 	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
 | |
| 	docker-compose -f "./exampleYmlFiles/docker-compose-latest-fat-security.yml" down
 | |
| 	
 | |
|     # Report results
 | |
|     echo "All tests completed in $SECONDS seconds."
 | |
| 
 | |
| 
 | |
| 	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
 | |
| 
 | |
| 
 | |
| 
 | |
|     # 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
 | |
| 
 | |
| }
 | |
| 
 | |
| main |