4NK_node/test_sync_logs.sh
Nicolas Cantu 72682290c1 feat: Ajout du support des relais externes et intégration dev3.4nkweb.com
- Ajout du script add_external_node.sh pour gérer les nœuds externes
- Configuration external_nodes.conf avec dev3-relay
- Scripts de test pour dev3.4nkweb.com (connectivité WSS)
- Documentation complète (CONFIGURATION_DEV3.md, RESUME_AJOUT_DEV3.md)
- Scripts de test de synchronisation et monitoring
- Configuration multi-relais avec 3 instances
- Mise à jour de la documentation technique et fonctionnelle
- Scripts de démarrage et monitoring pour les 3 relais
2025-08-22 17:00:31 +02:00

203 lines
6.2 KiB
Bash
Executable File

#!/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