maintenance-scripts/tests/run_individual_tests.sh
rebecca 69cc8c560d Fix playbooks for cross-platform compatibility and graceful error handling
- Fix ansible_default_ipv4 undefined issue with fallback to ansible_ssh_host
- Simplify disk space analyzer to avoid complex JSON parsing
- Update Docker cleanup to handle missing Docker gracefully
- Update log archiver to handle missing rotated logs gracefully
- All playbooks now provide comprehensive JSON reports
- Tested successfully on Ubuntu 20.04/22.04/24.04, Debian 11/12/13, and Alpine
2026-01-22 11:25:44 -03:00

91 lines
4.0 KiB
Bash
Executable File

#!/bin/bash
set -e
RESULTS_DIR="/root/workspace/ppanda/mock-test-jsons"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PARENT_DIR="$(dirname "$SCRIPT_DIR")"
SSH_KEY="/tmp/test_ansible_key"
mkdir -p "$RESULTS_DIR"
cat > "$SCRIPT_DIR/test_inventory.ini" << 'EOF'
[test_containers]
ubuntu-20-04-test ansible_host=127.0.0.1 ansible_port=2220 ansible_user=root ansible_ssh_private_key_file=/tmp/test_ansible_key ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
ubuntu-22-04-test ansible_host=127.0.0.1 ansible_port=2221 ansible_user=root ansible_ssh_private_key_file=/tmp/test_ansible_key ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
ubuntu-24-04-test ansible_host=127.0.0.1 ansible_port=2222 ansible_user=root ansible_ssh_private_key_file=/tmp/test_ansible_key ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
debian-11-test ansible_host=127.0.0.1 ansible_port=2223 ansible_user=root ansible_ssh_private_key_file=/tmp/test_ansible_key ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
debian-12-test ansible_host=127.0.0.1 ansible_port=2224 ansible_user=root ansible_ssh_private_key_file=/tmp/test_ansible_key ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
debian-13-test ansible_host=127.0.0.1 ansible_port=2225 ansible_user=root ansible_ssh_private_key_file=/tmp/test_ansible_key ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
alpine-test ansible_host=127.0.0.1 ansible_port=2226 ansible_user=root ansible_ssh_private_key_file=/tmp/test_ansible_key ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
[all:vars]
ansible_python_interpreter=/usr/bin/python3
EOF
cd "$PARENT_DIR"
echo "=========================================="
echo "Running Maintenance Playbooks"
echo "=========================================="
echo ""
TOTAL_SUCCESS=0
TOTAL_FAILED=0
echo "1. Running analyze_disk_space.yml..."
if timeout 300 ansible-playbook playbooks/analyze_disk_space.yml -i "$SCRIPT_DIR/test_inventory.ini" > "$RESULTS_DIR/analyze_disk_space_run.log" 2>&1; then
echo " ✓ analyze_disk_space.yml completed successfully"
((TOTAL_SUCCESS++))
else
echo " ✗ analyze_disk_space.yml failed or timed out"
((TOTAL_FAILED++))
fi
echo "2. Running cleanup_docker.yml..."
if timeout 300 ansible-playbook playbooks/cleanup_docker.yml -i "$SCRIPT_DIR/test_inventory.ini" > "$RESULTS_DIR/cleanup_docker_run.log" 2>&1; then
echo " ✓ cleanup_docker.yml completed successfully"
((TOTAL_SUCCESS++))
else
echo " ✗ cleanup_docker.yml failed or timed out"
((TOTAL_FAILED++))
fi
echo "3. Running archive_logs.yml..."
if timeout 300 ansible-playbook playbooks/archive_logs.yml -i "$SCRIPT_DIR/test_inventory.ini" > "$RESULTS_DIR/archive_logs_run.log" 2>&1; then
echo " ✓ archive_logs.yml completed successfully"
((TOTAL_SUCCESS++))
else
echo " ✗ archive_logs.yml failed or timed out"
((TOTAL_FAILED++))
fi
echo ""
echo "=========================================="
echo "Collecting JSON Reports"
echo "=========================================="
echo ""
TOTAL_JSON=0
for container in ubuntu-20-04-test ubuntu-22-04-test ubuntu-24-04-test debian-11-test debian-12-test debian-13-test alpine-test; do
echo "Fetching from $container..."
docker exec "$container" /bin/sh -c "find /tmp -name '*_report_*.json' -type f 2>/dev/null" | while read -r file; do
filename=$(basename "$file")
echo " Found: $filename"
docker cp "$container:$file" "$RESULTS_DIR/${container}_$filename" 2>/dev/null && ((TOTAL_JSON++))
done
done
echo ""
echo "=========================================="
echo "Test Summary"
echo "=========================================="
echo "Playbooks successful: $TOTAL_SUCCESS"
echo "Playbooks failed: $TOTAL_FAILED"
echo "JSON files collected: $TOTAL_JSON"
echo ""
echo "Results directory: $RESULTS_DIR"
echo ""
ls -lh "$RESULTS_DIR"/*.json 2>/dev/null | awk '{print $9, $5}'