- Réorganisation des tests par catégorie (unit, integration, connectivity, external) - Création de scripts d'exécution automatisés pour les tests - Création de guides techniques complets (ARCHITECTURE.md, API.md) - Transfert des informations depuis specs/ vers docs/ - Nettoyage et archivage des fichiers obsolètes - Documentation complète des tests avec exemples - Scripts de maintenance et nettoyage automatique - Structure professionnelle prête pour l'évolution
203 lines
6.2 KiB
Bash
Executable File
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
|