#!/bin/bash set -e echo "🧪 Test des Messages de Synchronisation via Logs" echo "================================================" echo "" # Fonction pour vérifier les logs de synchronisation check_sync_logs() { local relay_num=$1 echo "📋 Relais $relay_num - Logs de synchronisation :" echo "-----------------------------------------------" # Chercher les messages de synchronisation dans les logs local sync_logs=$(docker logs sdk_relay_$relay_num 2>&1 | grep -E "(🧪|📊|🏥|📈|🔄|🎉|❌|Relay|Sync|Mesh|Topology|🔍|✅|discover|relay|message|process_sync_message|handle_sync_message)" | tail -10) if [[ -n "$sync_logs" ]]; then echo "$sync_logs" else echo " Aucun message de synchronisation trouvé" fi echo "" } # Fonction pour vérifier l'état de Bitcoin Core check_bitcoin_status() { echo "₿ État de Bitcoin Core :" echo "----------------------" local blockchain_info=$(docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo 2>/dev/null || echo "{}") # Utiliser jq si disponible, sinon grep if command -v jq >/dev/null 2>&1; then local blocks=$(echo "$blockchain_info" | jq -r '.blocks // "0"') local headers=$(echo "$blockchain_info" | jq -r '.headers // "0"') local ibd=$(echo "$blockchain_info" | jq -r '.initialblockdownload // "true"') else local blocks=$(echo "$blockchain_info" | grep -o '"blocks":[0-9]*' | cut -d':' -f2 || echo "0") local headers=$(echo "$blockchain_info" | grep -o '"headers":[0-9]*' | cut -d':' -f2 || echo "0") local ibd=$(echo "$blockchain_info" | grep -o '"initialblockdownload":[^,]*' | cut -d':' -f2 || echo "true") fi echo " Blocs téléchargés: $blocks" echo " En-têtes: $headers" echo " IBD: $ibd" if [[ "$ibd" == "false" ]]; then echo " ✅ Bitcoin Core prêt" return 0 else local remaining=$((headers - blocks)) echo " ⏳ $remaining blocs restants" return 1 fi } # Fonction pour forcer la synchronisation force_sync_test() { echo "⚡ Test forcé de synchronisation :" echo "---------------------------------" # Redémarrer les relais pour forcer la synchronisation for i in {1..3}; do echo "🔄 Redémarrage du relais $i..." docker restart sdk_relay_$i sleep 5 done echo "⏳ Attente de stabilisation..." sleep 15 # Vérifier les logs après redémarrage echo "📋 Logs après redémarrage :" echo "---------------------------" for i in {1..3}; do check_sync_logs $i done } # Fonction pour surveiller en continu continuous_monitor() { echo "🔄 Surveillance continue des messages..." echo "Appuyez sur Ctrl+C pour arrêter" echo "" while true; do clear echo "🧪 Surveillance des Messages - $(date)" echo "=====================================" echo "" # Vérifier l'état de Bitcoin Core check_bitcoin_status # Vérifier les logs récents echo "📋 Logs récents de synchronisation :" echo "------------------------------------" for i in {1..3}; do echo "🔸 Relais $i :" docker logs sdk_relay_$i 2>&1 | grep -E "(🧪|📊|🏥|📈|🔄|🎉|❌|Relay|Sync|Mesh|Topology|🔍|✅|discover|relay|message|process_sync_message|handle_sync_message)" | tail -3 || echo " Aucun message récent" echo "" done echo "🔄 Actualisation dans 30 secondes..." sleep 30 done } # Fonction pour analyser les patterns de messages analyze_message_patterns() { echo "🔍 Analyse des patterns de messages :" echo "------------------------------------" for i in {1..3}; do echo "📊 Relais $i - Analyse des messages :" # Compter les types de messages local total_messages=$(docker logs sdk_relay_$i 2>&1 | grep -c "message" || echo "0") local sync_messages=$(docker logs sdk_relay_$i 2>&1 | grep -c "Sync" || echo "0") local relay_messages=$(docker logs sdk_relay_$i 2>&1 | grep -c "Relay" || echo "0") local mesh_messages=$(docker logs sdk_relay_$i 2>&1 | grep -c "Mesh" || echo "0") echo " Total messages: $total_messages" echo " Messages Sync: $sync_messages" echo " Messages Relay: $relay_messages" echo " Messages Mesh: $mesh_messages" echo "" done } # Fonction pour tester la découverte automatique test_auto_discovery() { echo "🔍 Test de la découverte automatique :" echo "-------------------------------------" # Vérifier si les relais se découvrent mutuellement for i in {1..3}; do echo "🔸 Relais $i - Découverte :" local discovery_logs=$(docker logs sdk_relay_$i 2>&1 | grep -E "(discover|discovery|found|relay)" | tail -3) if [[ -n "$discovery_logs" ]]; then echo "$discovery_logs" else echo " Aucune activité de découverte" fi echo "" done } # Fonction principale main() { echo "🧪 Démarrage des tests de messages via logs..." echo "" # 1. Vérifier l'état de Bitcoin Core check_bitcoin_status || true echo "" # 2. Vérifier les logs actuels echo "📋 Logs actuels des relais :" echo "----------------------------" for i in {1..3}; do check_sync_logs $i done # 3. Analyser les patterns analyze_message_patterns # 4. Tester la découverte automatique test_auto_discovery echo "✅ Tests terminés" } # Menu principal case "${1:-test}" in "test") main ;; "continuous") continuous_monitor ;; "force") force_sync_test ;; "analyze") analyze_message_patterns ;; "discovery") test_auto_discovery ;; *) echo "Usage: $0 [test|continuous|force|analyze|discovery]" echo " test : Test unique des messages via logs" echo " continuous : Surveillance continue" echo " force : Forcer la synchronisation puis tester" echo " analyze : Analyser les patterns de messages" echo " discovery : Tester la découverte automatique" exit 1 ;; esac