- 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
227 lines
6.7 KiB
Bash
Executable File
227 lines
6.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
echo "🎯 Test Final des Messages de Synchronisation"
|
|
echo "============================================="
|
|
echo ""
|
|
|
|
# Configuration
|
|
RELAY1_PORT=8090
|
|
RELAY2_PORT=8092
|
|
RELAY3_PORT=8094
|
|
|
|
# Fonction pour vérifier l'état de Bitcoin Core
|
|
check_bitcoin_ready() {
|
|
echo "₿ Vérification de Bitcoin Core :"
|
|
echo "-------------------------------"
|
|
|
|
local blockchain_info=$(docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo 2>/dev/null || echo "{}")
|
|
local ibd=$(echo "$blockchain_info" | grep -o '"initialblockdownload":[^,]*' | cut -d':' -f2 | tr -d ' ')
|
|
|
|
if [[ "$ibd" == "false" ]]; then
|
|
echo " ✅ Bitcoin Core prêt (IBD terminé)"
|
|
return 0
|
|
else
|
|
echo " ⏳ Bitcoin Core encore en IBD"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Fonction pour vérifier les logs de synchronisation récents
|
|
check_recent_sync_logs() {
|
|
local relay_num=$1
|
|
echo "📋 Relais $relay_num - Logs récents :"
|
|
echo "-------------------------------------"
|
|
|
|
# Chercher les messages de synchronisation dans les logs récents (dernières 2 minutes)
|
|
local recent_logs=$(docker logs sdk_relay_$relay_num --since 2m 2>&1 | grep -E "(🧪|📊|🏥|📈|🔄|🎉|❌|Relay|Sync|Mesh|Topology|🔍|✅|discover|relay|message|process_sync_message|handle_sync_message|WebSocket|connection)" | tail -5)
|
|
|
|
if [[ -n "$recent_logs" ]]; then
|
|
echo "$recent_logs"
|
|
else
|
|
echo " Aucun message de synchronisation récent"
|
|
fi
|
|
echo ""
|
|
}
|
|
|
|
# Fonction pour tester la connectivité WebSocket
|
|
test_websocket_connectivity() {
|
|
echo "🌐 Test de connectivité WebSocket :"
|
|
echo "-----------------------------------"
|
|
|
|
for i in {1..3}; do
|
|
local port=$((8090 + (i-1)*2))
|
|
echo "🔸 Relais $i (port $port) :"
|
|
|
|
# Test de connectivité basique
|
|
if curl -s --connect-timeout 5 http://localhost:$port >/dev/null 2>&1; then
|
|
echo " ✅ Port accessible"
|
|
else
|
|
echo " ❌ Port non accessible"
|
|
fi
|
|
|
|
# Test de réponse WebSocket (simulation)
|
|
local response=$(curl -s --connect-timeout 5 -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Key: test" http://localhost:$port 2>/dev/null || echo "No response")
|
|
if [[ "$response" != "No response" ]]; then
|
|
echo " ✅ WebSocket répond"
|
|
else
|
|
echo " ⚠️ Pas de réponse WebSocket (normal si pas de client)"
|
|
fi
|
|
done
|
|
echo ""
|
|
}
|
|
|
|
# Fonction pour forcer l'échange de messages
|
|
force_message_exchange() {
|
|
echo "🔄 Forçage de l'échange de messages :"
|
|
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 3
|
|
done
|
|
|
|
echo "⏳ Attente de stabilisation..."
|
|
sleep 10
|
|
|
|
# Vérifier les logs après redémarrage
|
|
echo "📋 Logs après redémarrage :"
|
|
echo "---------------------------"
|
|
for i in {1..3}; do
|
|
check_recent_sync_logs $i
|
|
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 dans les logs récents
|
|
local total_messages=$(docker logs sdk_relay_$i --since 5m 2>&1 | grep -c "message" || echo "0")
|
|
local sync_messages=$(docker logs sdk_relay_$i --since 5m 2>&1 | grep -c "Sync" || echo "0")
|
|
local relay_messages=$(docker logs sdk_relay_$i --since 5m 2>&1 | grep -c "Relay" || echo "0")
|
|
local mesh_messages=$(docker logs sdk_relay_$i --since 5m 2>&1 | grep -c "Mesh" || echo "0")
|
|
local websocket_messages=$(docker logs sdk_relay_$i --since 5m 2>&1 | grep -c "WebSocket" || echo "0")
|
|
|
|
echo " Total messages (5m): $total_messages"
|
|
echo " Messages Sync: $sync_messages"
|
|
echo " Messages Relay: $relay_messages"
|
|
echo " Messages Mesh: $mesh_messages"
|
|
echo " Messages WebSocket: $websocket_messages"
|
|
echo ""
|
|
done
|
|
}
|
|
|
|
# Fonction pour vérifier l'état des services
|
|
check_services_status() {
|
|
echo "🔍 État des services :"
|
|
echo "--------------------"
|
|
|
|
# Vérifier l'état des conteneurs
|
|
echo "📦 Conteneurs Docker :"
|
|
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep sdk_relay
|
|
|
|
echo ""
|
|
|
|
# Vérifier les ports
|
|
echo "🌐 Ports ouverts :"
|
|
netstat -tlnp | grep -E "(8090|8092|8094)" || echo " Aucun port trouvé"
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Fonction pour test en continu
|
|
continuous_test() {
|
|
echo "🔄 Test en continu..."
|
|
echo "Appuyez sur Ctrl+C pour arrêter"
|
|
echo ""
|
|
|
|
while true; do
|
|
clear
|
|
echo "🎯 Test Final Continu - $(date)"
|
|
echo "================================"
|
|
echo ""
|
|
|
|
# Vérifier l'état de Bitcoin Core
|
|
check_bitcoin_ready || true
|
|
|
|
# Vérifier l'état des services
|
|
check_services_status
|
|
|
|
# Vérifier les logs récents
|
|
echo "📋 Logs récents de synchronisation :"
|
|
echo "------------------------------------"
|
|
for i in {1..3}; do
|
|
check_recent_sync_logs $i
|
|
done
|
|
|
|
# Analyser les patterns
|
|
analyze_message_patterns
|
|
|
|
echo "🔄 Actualisation dans 30 secondes..."
|
|
sleep 30
|
|
done
|
|
}
|
|
|
|
# Fonction principale
|
|
main() {
|
|
echo "🎯 Démarrage du test final..."
|
|
echo ""
|
|
|
|
# 1. Vérifier que Bitcoin Core est prêt
|
|
if ! check_bitcoin_ready; then
|
|
echo "❌ Bitcoin Core n'est pas encore prêt. Attendez qu'il termine l'IBD."
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Vérifier l'état des services
|
|
check_services_status
|
|
|
|
# 3. Tester la connectivité WebSocket
|
|
test_websocket_connectivity
|
|
|
|
# 4. Vérifier les logs actuels
|
|
echo "📋 Logs actuels des relais :"
|
|
echo "----------------------------"
|
|
for i in {1..3}; do
|
|
check_recent_sync_logs $i
|
|
done
|
|
|
|
# 5. Analyser les patterns
|
|
analyze_message_patterns
|
|
|
|
echo "✅ Test final terminé"
|
|
}
|
|
|
|
# Menu principal
|
|
case "${1:-test}" in
|
|
"test")
|
|
main
|
|
;;
|
|
"continuous")
|
|
continuous_test
|
|
;;
|
|
"force")
|
|
force_message_exchange
|
|
;;
|
|
"status")
|
|
check_bitcoin_ready || true
|
|
check_services_status
|
|
;;
|
|
*)
|
|
echo "Usage: $0 [test|continuous|force|status]"
|
|
echo " test : Test final unique"
|
|
echo " continuous : Test en continu"
|
|
echo " force : Forcer l'échange de messages"
|
|
echo " status : Vérifier l'état des services"
|
|
exit 1
|
|
;;
|
|
esac
|