#!/bin/bash # Run All Tests - Lab 03: Compute & EC2 # Executes all test scripts in sequence with fail-fast behavior # Usage: bash labs/lab-03-compute/tests/run-all-tests.sh set -euo pipefail # Color definitions RED='\033[0;31m' GREEN='\033[0;32m' BLUE='\033[0;34m' YELLOW='\033[1;33m' BOLD='\033[1m' NC='\033[0m' # Get script directory TEST_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" LAB_DIR="$(cd "$TEST_DIR/.." && pwd)" # Counter helpers total_passed=0 total_failed=0 tests_run=0 # Helper functions print_header() { echo -e "${BLUE}╔═══════════════════════════════════════════════════════════════╗${NC}" echo -e "${BLUE}║${NC} ${BOLD}$1${NC}" echo -e "${BLUE}╚═══════════════════════════════════════════════════════════════╝${NC}" } print_section() { echo -e "\n${BLUE}═══════════════════════════════════════════════════════════════${NC}" echo -e "${BLUE} $1${NC}" echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}\n" } print_pass() { echo -e "${GREEN}✓${NC} $1" } print_fail() { echo -e "${RED}✗${NC} $1" } # Main execution print_header "Lab 03 Test Suite - Compute & EC2" cd "$LAB_DIR" echo -e "${BLUE}Running all tests in sequence...${NC}\n" # Test 1: Resource Limits Configuration print_section "Test 1/4: Resource Limits Configuration" if bash "$TEST_DIR/01-resource-limits-test.sh"; then print_pass "Resource limits tests PASSED" ((total_passed++)) || true else print_fail "Resource limits tests FAILED" ((total_failed++)) || true echo -e "\n${YELLOW}Stopping at first failure (fail-fast mode)${NC}" echo -e "Run individual tests to debug:" echo -e " bash tests/01-resource-limits-test.sh" exit 1 fi ((tests_run++)) || true # Test 2: Healthcheck Configuration print_section "Test 2/4: Healthcheck Configuration" if bash "$TEST_DIR/02-healthcheck-test.sh"; then print_pass "Healthcheck tests PASSED" ((total_passed++)) || true else print_fail "Healthcheck tests FAILED" ((total_failed++)) || true echo -e "\n${YELLOW}Stopping at first failure (fail-fast mode)${NC}" echo -e "Run individual tests to debug:" echo -e " bash tests/02-healthcheck-test.sh" exit 1 fi ((tests_run++)) || true # Test 3: Resource Enforcement print_section "Test 3/4: Resource Enforcement Verification" if bash "$TEST_DIR/03-enforcement-test.sh"; then print_pass "Resource enforcement tests PASSED" ((total_passed++)) || true else print_fail "Resource enforcement tests FAILED" ((total_failed++)) || true echo -e "\n${YELLOW}Stopping at first failure (fail-fast mode)${NC}" echo -e "Run individual tests to debug:" echo -e " bash tests/03-enforcement-test.sh" exit 1 fi ((tests_run++)) || true # Test 4: Final Verification print_section "Test 4/4: Final Verification" if bash "$TEST_DIR/99-final-verification.sh"; then print_pass "Final verification PASSED" ((total_passed++)) || true else print_fail "Final verification FAILED" ((total_failed++)) || true echo -e "\n${YELLOW}Stopping at first failure (fail-fast mode)${NC}" echo -e "Run individual tests to debug:" echo -e " bash tests/99-final-verification.sh" exit 1 fi ((tests_run++)) || true # Summary print_header "Test Suite Summary" echo -e "Tests run: $tests_run" echo -e "${GREEN}Passed: $total_passed${NC}" if [[ $total_failed -gt 0 ]]; then echo -e "${RED}Failed: $total_failed${NC}" fi if [[ $total_failed -eq 0 ]]; then echo -e "\n${GREEN}${BOLD}✓✓✓ ALL TESTS PASSED ✓✓✓${NC}\n" echo -e "Your Lab 03 infrastructure is ready!" echo -e "Proceed with the tutorials to learn more about:" echo -e " • EC2 instance type parallels" echo -e " • Resource limits enforcement" echo -e " • Healthcheck implementation" exit 0 else echo -e "\n${RED}Some tests failed${NC}\n" echo -e "Run individual tests for details:" echo -e " bash tests/01-resource-limits-test.sh" echo -e " bash tests/02-healthcheck-test.sh" echo -e " bash tests/03-enforcement-test.sh" echo -e " bash tests/99-final-verification.sh" exit 1 fi