- 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
Tests Documentation
Ce répertoire contient tous les tests pour l'infrastructure 4NK Node, organisés par catégorie.
Structure des Tests
📁 unit/
- Tests Unitaires
Tests individuels pour les composants spécifiques :
test_healthcheck.sh
- Test du healthcheck de sdk_relaytest_docker.sh
- Test de la configuration Dockertest_simple.sh
- Test simple de sdk_relaytest_final.sh
- Test final de sdk_relay
📁 integration/
- Tests d'Intégration
Tests qui vérifient l'interaction entre plusieurs services :
test_3_relays.sh
- Test de 3 instances sdk_relaytest_final_sync.sh
- Test complet de synchronisationtest_sync_logs.sh
- Test des logs de synchronisationtest_messages.sh
- Test des messages entre relais
📁 connectivity/
- Tests de Connectivité
Tests de connectivité réseau et WebSocket :
test_connectivity.sh
- Test de connectivité des servicestest_websocket_messages.py
- Test des messages WebSocket
📁 external/
- Tests de Nœuds Externes
Tests pour l'intégration avec des nœuds externes :
test_dev3_simple.py
- Test simple de dev3.4nkweb.comtest_dev3_connectivity.py
- Test de connectivité dev3test_integration_dev3.sh
- Test d'intégration dev3
📁 performance/
- Tests de Performance
Tests de performance (à créer) :
- Tests de charge
- Tests de latence
- Tests de débit
Exécution des Tests
Test Complet
# Exécuter tous les tests
./tests/run_all_tests.sh
Tests par Catégorie
# Tests unitaires
./tests/run_unit_tests.sh
# Tests d'intégration
./tests/run_integration_tests.sh
# Tests de connectivité
./tests/run_connectivity_tests.sh
# Tests externes
./tests/run_external_tests.sh
Test Individuel
# Exemple pour un test spécifique
./tests/integration/test_3_relays.sh
python3 tests/external/test_dev3_simple.py
Prérequis
Services Requis
- Docker et Docker Compose
- Bitcoin Core (signet)
- Blindbit
- sdk_relay (3 instances)
Dépendances Python
pip install websockets asyncio json
Variables d'Environnement
Assurez-vous que les variables suivantes sont définies :
BITCOIN_RPC_URL
BLINDBIT_API_URL
RELAY_WEBSOCKET_URL
Interprétation des Résultats
Codes de Sortie
0
: Test réussi1
: Test échoué2
: Test ignoré (prérequis non satisfaits)
Logs
- Les logs détaillés sont écrits dans
tests/logs/
- Format :
YYYY-MM-DD_HH-MM-SS_test-name.log
Rapports
- Les rapports de test sont générés dans
tests/reports/
- Format JSON et HTML disponibles
Dépannage
Problèmes Courants
- Services non démarrés : Vérifiez que tous les services Docker sont actifs
- Connectivité réseau : Vérifiez les ports et pare-feu
- Certificats SSL : Pour les tests externes, vérifiez les certificats
Debug
# Mode verbose
./tests/run_all_tests.sh --verbose
# Mode debug
./tests/run_all_tests.sh --debug
# Test spécifique avec debug
./tests/integration/test_3_relays.sh --debug
Ajout de Nouveaux Tests
Structure Recommandée
tests/
├── new_category/
│ ├── test_new_feature.sh
│ ├── test_new_feature.py
│ └── README.md
Template de Test
#!/bin/bash
# Test: Description du test
# Auteur: Nom
# Date: YYYY-MM-DD
set -e
# Configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG_FILE="tests/logs/$(date +%Y-%m-%d_%H-%M-%S)_test_name.log"
# Fonctions
log() {
echo "[$(date +%Y-%m-%d\ %H:%M:%S)] $1" | tee -a "$LOG_FILE"
}
# Test principal
main() {
log "Début du test"
# Vérifications préliminaires
check_prerequisites
# Exécution du test
run_test
# Vérification des résultats
verify_results
log "Test terminé avec succès"
}
# Exécution
main "$@"
Maintenance
Nettoyage
# Nettoyer les logs anciens
./tests/cleanup.sh --days 7
# Nettoyer les rapports anciens
./tests/cleanup.sh --reports --days 30
Mise à Jour
- Vérifiez régulièrement la compatibilité avec les nouvelles versions
- Mettez à jour les tests lors de changements d'API
- Documentez les changements dans
CHANGELOG.md