
Séparation des scripts de génération et amélioration de l'architecture - Séparé generate_grafana_dashboards.sh en 3 scripts distincts : * generate_grafana_dashboards.sh (dashboards uniquement) * generate_promtail_config.sh (configuration Promtail) * generate_logrotate_configs.sh (configurations Logrotate) - Supprimé generate_docker_compose.sh et generate_docker_variables.sh - Centralisé la génération des variables dans generate_variables.sh - Mis à jour generate.sh pour une architecture en 5 étapes - Corrigé les chemins de sortie et les références de variables - Ajouté la gestion d'erreurs pour les fichiers .env problématiques - Généré toutes les configurations Nginx, Grafana, Promtail et Logrotate - Amélioré la modularité et la maintenabilité du code
208 lines
6.3 KiB
Bash
Executable File
208 lines
6.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script de test pour valider le fonctionnement du script generate.sh
|
|
# Teste les différentes options et fonctionnalités
|
|
|
|
# Couleurs
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# Compteurs
|
|
TESTS_PASSED=0
|
|
TESTS_FAILED=0
|
|
TOTAL_TESTS=0
|
|
|
|
# Fonction pour afficher les résultats
|
|
print_result() {
|
|
local test_name="$1"
|
|
local status="$2"
|
|
local message="$3"
|
|
|
|
TOTAL_TESTS=$((TOTAL_TESTS + 1))
|
|
|
|
if [ "$status" = "PASS" ]; then
|
|
echo -e "${GREEN}✅ PASS${NC}: $test_name - $message"
|
|
TESTS_PASSED=$((TESTS_PASSED + 1))
|
|
else
|
|
echo -e "${RED}❌ FAIL${NC}: $test_name - $message"
|
|
TESTS_FAILED=$((TESTS_FAILED + 1))
|
|
fi
|
|
}
|
|
|
|
echo -e "${BLUE}🧪 TEST DU SCRIPT GÉNÉRATEUR PRINCIPAL${NC}"
|
|
echo -e "${BLUE}======================================${NC}"
|
|
|
|
# Test 1: Vérifier l'existence du script
|
|
if [ -f "generate.sh" ]; then
|
|
print_result "Script existe" "PASS" "generate.sh présent"
|
|
else
|
|
print_result "Script existe" "FAIL" "generate.sh manquant"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 2: Vérifier que le script est exécutable
|
|
if [ -x "generate.sh" ]; then
|
|
print_result "Script exécutable" "PASS" "generate.sh exécutable"
|
|
else
|
|
print_result "Script exécutable" "FAIL" "generate.sh non exécutable"
|
|
fi
|
|
|
|
# Test 3: Test de l'aide
|
|
echo -e "\n${YELLOW}🔍 Test de l'aide...${NC}"
|
|
if ./generate.sh --help >/dev/null 2>&1; then
|
|
print_result "Aide fonctionne" "PASS" "Option --help fonctionne"
|
|
else
|
|
print_result "Aide fonctionne" "FAIL" "Option --help échoue"
|
|
fi
|
|
|
|
# Test 4: Vérifier les scripts requis
|
|
REQUIRED_SCRIPTS=(
|
|
"generate_variables.sh"
|
|
"generate_grafana_dashboards.sh"
|
|
"generate_nginx_configs.sh"
|
|
)
|
|
|
|
for script in "${REQUIRED_SCRIPTS[@]}"; do
|
|
if [ -f "$script" ]; then
|
|
print_result "Script requis" "PASS" "$script présent"
|
|
else
|
|
print_result "Script requis" "FAIL" "$script manquant"
|
|
fi
|
|
done
|
|
|
|
# Test 5: Test avec variables d'environnement minimales
|
|
echo -e "\n${YELLOW}🔍 Test avec variables minimales...${NC}"
|
|
|
|
# Exporter des variables minimales
|
|
export HOST="test.example.com"
|
|
export SERVICES=(TEST_SERVICE)
|
|
export DOMAIN="test.example.com"
|
|
export CERT_PATH="/tmp/certs"
|
|
export NGINX_LOGS_DIR="/tmp/logs"
|
|
export NGINX_CONFS_DIR="/tmp/conf"
|
|
export DOCKER_GLOBAL_NAME="test"
|
|
|
|
# Test d'exécution (sans --verbose pour éviter trop de sortie)
|
|
echo -e "${YELLOW}Exécution du script generate.sh...${NC}"
|
|
if timeout 30 ./generate.sh >/dev/null 2>&1; then
|
|
print_result "Exécution script" "PASS" "Script s'exécute sans erreur fatale"
|
|
else
|
|
exit_code=$?
|
|
if [ $exit_code -eq 124 ]; then
|
|
print_result "Exécution script" "PASS" "Script s'exécute (timeout après 30s)"
|
|
else
|
|
print_result "Exécution script" "FAIL" "Script échoue avec code $exit_code"
|
|
fi
|
|
fi
|
|
|
|
# Test 6: Vérifier les fichiers générés
|
|
echo -e "\n${YELLOW}🔍 Vérification des fichiers générés...${NC}"
|
|
|
|
# Vérifier si des fichiers ont été générés
|
|
GENERATED_FILES=(
|
|
"_4NK_modules/grafana/dashboards"
|
|
"_4NK_modules/promtail/promtail.yml"
|
|
"nginx/upstreams.conf"
|
|
"nginx/app-internal-ports.conf"
|
|
"nginx/proxy_headers.conf"
|
|
)
|
|
|
|
for file in "${GENERATED_FILES[@]}"; do
|
|
if [ -e "$file" ]; then
|
|
print_result "Fichier généré" "PASS" "$file créé"
|
|
else
|
|
print_result "Fichier généré" "FAIL" "$file non créé"
|
|
fi
|
|
done
|
|
|
|
# Test 7: Test des options
|
|
echo -e "\n${YELLOW}🔍 Test des options...${NC}"
|
|
|
|
# Test exécution normale (mode verbeux par défaut)
|
|
if timeout 10 ./generate.sh >/dev/null 2>&1; then
|
|
print_result "Exécution normale" "PASS" "Script fonctionne en mode verbeux par défaut"
|
|
else
|
|
exit_code=$?
|
|
if [ $exit_code -eq 124 ]; then
|
|
print_result "Exécution normale" "PASS" "Script fonctionne (timeout)"
|
|
else
|
|
print_result "Exécution normale" "FAIL" "Script échoue"
|
|
fi
|
|
fi
|
|
|
|
# Test option invalide
|
|
if ./generate.sh --invalid-option >/dev/null 2>&1; then
|
|
print_result "Option invalide" "FAIL" "Option invalide acceptée"
|
|
else
|
|
print_result "Option invalide" "PASS" "Option invalide rejetée"
|
|
fi
|
|
|
|
# Test 8: Vérifier la structure des fichiers générés
|
|
echo -e "\n${YELLOW}🔍 Vérification du contenu des fichiers...${NC}"
|
|
|
|
# Vérifier upstreams.conf
|
|
if [ -f "nginx/upstreams.conf" ]; then
|
|
if grep -q "upstream" nginx/upstreams.conf; then
|
|
print_result "Contenu upstreams" "PASS" "upstreams.conf contient des upstreams"
|
|
else
|
|
print_result "Contenu upstreams" "FAIL" "upstreams.conf vide ou invalide"
|
|
fi
|
|
|
|
if grep -q "log_format app_json" nginx/upstreams.conf; then
|
|
print_result "Format log JSON" "PASS" "Format de log JSON présent"
|
|
else
|
|
print_result "Format log JSON" "FAIL" "Format de log JSON manquant"
|
|
fi
|
|
fi
|
|
|
|
# Vérifier proxy_headers.conf
|
|
if [ -f "nginx/proxy_headers.conf" ]; then
|
|
if grep -q "proxy_set_header Host" nginx/proxy_headers.conf; then
|
|
print_result "Headers proxy" "PASS" "Headers de proxy configurés"
|
|
else
|
|
print_result "Headers proxy" "FAIL" "Headers de proxy manquants"
|
|
fi
|
|
fi
|
|
|
|
# Vérifier les dashboards Grafana
|
|
if [ -d "_4NK_modules/grafana/dashboards" ]; then
|
|
dashboard_count=$(find _4NK_modules/grafana/dashboards -name "*.json" | wc -l)
|
|
if [ $dashboard_count -gt 0 ]; then
|
|
print_result "Dashboards Grafana" "PASS" "$dashboard_count dashboards générés"
|
|
else
|
|
print_result "Dashboards Grafana" "FAIL" "Aucun dashboard généré"
|
|
fi
|
|
fi
|
|
|
|
# Test 9: Nettoyage des fichiers de test
|
|
echo -e "\n${YELLOW}🧹 Nettoyage des fichiers de test...${NC}"
|
|
|
|
# Supprimer les fichiers générés par les tests
|
|
rm -rf nginx/ 2>/dev/null
|
|
rm -rf _4NK_modules/ 2>/dev/null
|
|
rm -rf logrotade/ 2>/dev/null
|
|
rm -f docker-compose.yml.auto 2>/dev/null
|
|
rm -f .env.auto 2>/dev/null
|
|
|
|
print_result "Nettoyage" "PASS" "Fichiers de test nettoyés"
|
|
|
|
# Résumé final
|
|
echo -e "\n${BLUE}📊 RÉSUMÉ DES TESTS${NC}"
|
|
echo -e "${BLUE}==================${NC}"
|
|
echo -e "Total des tests: ${BLUE}$TOTAL_TESTS${NC}"
|
|
echo -e "Tests réussis: ${GREEN}$TESTS_PASSED${NC}"
|
|
echo -e "Tests échoués: ${RED}$TESTS_FAILED${NC}"
|
|
|
|
if [ $TESTS_FAILED -eq 0 ]; then
|
|
echo -e "\n${GREEN}🎉 TOUS LES TESTS SONT PASSÉS !${NC}"
|
|
echo "Le script generate.sh fonctionne correctement."
|
|
exit 0
|
|
else
|
|
echo -e "\n${RED}⚠️ CERTAINS TESTS ONT ÉCHOUÉ${NC}"
|
|
echo "Vérifiez les erreurs ci-dessus."
|
|
exit 1
|
|
fi
|