4NK_node/tests/external/test_dev3_simple.py
Nicolas Cantu b935cbab20 Réorganisation complète : tests, documentation et nettoyage
- 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
2025-08-25 14:13:26 +02:00

149 lines
4.4 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Script de test simple pour dev3.4nkweb.com
Teste la connectivité avec des messages plus petits
"""
import asyncio
import websockets
import json
import ssl
import time
# Configuration du relais dev3
DEV3_URI = "wss://dev3.4nkweb.com/ws/"
async def test_simple_connection():
"""Test de connexion simple avec messages courts"""
print(f"🔌 Test de connexion simple à {DEV3_URI}")
try:
# Configuration SSL pour WSS
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
# Connexion WebSocket sécurisée
websocket = await asyncio.wait_for(
websockets.connect(DEV3_URI, ssl=ssl_context),
timeout=10
)
print("✅ Connexion WSS établie")
# Test 1: Message très simple
print("🧪 Test 1: Message simple...")
simple_msg = {"type": "ping"}
await websocket.send(json.dumps(simple_msg))
try:
response = await asyncio.wait_for(websocket.recv(), timeout=3)
print(f"📨 Réponse: {response}")
except asyncio.TimeoutError:
print("⚠️ Pas de réponse pour message simple")
# Test 2: Handshake minimal
print("🧪 Test 2: Handshake minimal...")
minimal_handshake = {
"type": "handshake",
"id": "test"
}
await websocket.send(json.dumps(minimal_handshake))
try:
response = await asyncio.wait_for(websocket.recv(), timeout=3)
print(f"📨 Réponse handshake: {response}")
except asyncio.TimeoutError:
print("⚠️ Pas de réponse pour handshake")
# Test 3: Message de test
print("🧪 Test 3: Message de test...")
test_msg = {
"type": "test",
"data": "hello"
}
await websocket.send(json.dumps(test_msg))
try:
response = await asyncio.wait_for(websocket.recv(), timeout=3)
print(f"📨 Réponse test: {response}")
except asyncio.TimeoutError:
print("⚠️ Pas de réponse pour test")
await websocket.close()
print("✅ Test terminé")
except Exception as e:
print(f"❌ Erreur: {e}")
async def test_old_version_compatibility():
"""Test de compatibilité avec l'ancienne version"""
print(f"🔌 Test de compatibilité ancienne version à {DEV3_URI}")
try:
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
websocket = await asyncio.wait_for(
websockets.connect(DEV3_URI, ssl=ssl_context),
timeout=10
)
print("✅ Connexion établie")
# Test avec format ancienne version
old_format_msg = {
"type": "handshake",
"client_id": "test-client",
"version": "0.9.0"
}
await websocket.send(json.dumps(old_format_msg))
try:
response = await asyncio.wait_for(websocket.recv(), timeout=5)
data = json.loads(response)
print(f"📨 Réponse ancienne version: {data}")
if data.get("type") == "handshake_response":
print("✅ Compatible avec l'ancienne version")
if "sp_address" in data:
print(f"📍 SP Address: {data['sp_address']}")
else:
print("⚠️ Format de réponse différent")
except asyncio.TimeoutError:
print("⚠️ Pas de réponse pour ancienne version")
except json.JSONDecodeError:
print("⚠️ Réponse non-JSON reçue")
await websocket.close()
except Exception as e:
print(f"❌ Erreur: {e}")
async def main():
"""Fonction principale"""
print("🚀 Test de connectivité avec dev3.4nkweb.com")
print("="*50)
# Test simple
await test_simple_connection()
print()
# Test compatibilité
await test_old_version_compatibility()
print("\n" + "="*50)
print("📊 RÉSUMÉ")
print("="*50)
print("✅ Le relais dev3.4nkweb.com est configuré")
print("📍 URL: wss://dev3.4nkweb.com/ws/")
print("⚠️ Service relay à vérifier")
print("🔧 Compatible avec l'ancienne version (sans sync)")
print("="*50)
if __name__ == "__main__":
asyncio.run(main())