folder stricture reorganize
This commit is contained in:
92
tests/test_realtime_cob.py
Normal file
92
tests/test_realtime_cob.py
Normal file
@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script for real-time COB functionality
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import aiohttp
|
||||
import json
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
async def test_realtime_cob():
|
||||
"""Test real-time COB data streaming"""
|
||||
|
||||
# Test API endpoints
|
||||
base_url = "http://localhost:8053"
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
print("Testing COB Dashboard API endpoints...")
|
||||
|
||||
# Test symbols endpoint
|
||||
try:
|
||||
async with session.get(f"{base_url}/api/symbols") as response:
|
||||
if response.status == 200:
|
||||
data = await response.json()
|
||||
print(f"✓ Symbols: {data}")
|
||||
else:
|
||||
print(f"✗ Symbols endpoint failed: {response.status}")
|
||||
except Exception as e:
|
||||
print(f"✗ Error testing symbols endpoint: {e}")
|
||||
|
||||
# Test real-time stats for BTC/USDT
|
||||
try:
|
||||
async with session.get(f"{base_url}/api/realtime/BTC/USDT") as response:
|
||||
if response.status == 200:
|
||||
data = await response.json()
|
||||
print(f"✓ Real-time stats for BTC/USDT:")
|
||||
print(f" Current mid price: {data.get('current', {}).get('mid_price', 'N/A')}")
|
||||
print(f" 1s window updates: {data.get('1s_window', {}).get('update_count', 'N/A')}")
|
||||
print(f" 5s window updates: {data.get('5s_window', {}).get('update_count', 'N/A')}")
|
||||
else:
|
||||
print(f"✗ Real-time stats endpoint failed: {response.status}")
|
||||
error_data = await response.text()
|
||||
print(f" Error: {error_data}")
|
||||
except Exception as e:
|
||||
print(f"✗ Error testing real-time stats endpoint: {e}")
|
||||
|
||||
# Test WebSocket connection
|
||||
print("\nTesting WebSocket connection...")
|
||||
try:
|
||||
async with session.ws_connect(f"{base_url.replace('http', 'ws')}/ws") as ws:
|
||||
print("✓ WebSocket connected")
|
||||
|
||||
# Wait for some data
|
||||
message_count = 0
|
||||
start_time = time.time()
|
||||
|
||||
async for msg in ws:
|
||||
if msg.type == aiohttp.WSMsgType.TEXT:
|
||||
data = json.loads(msg.data)
|
||||
message_count += 1
|
||||
|
||||
if data.get('type') == 'cob_update':
|
||||
symbol = data.get('data', {}).get('stats', {}).get('symbol', 'Unknown')
|
||||
mid_price = data.get('data', {}).get('stats', {}).get('mid_price', 0)
|
||||
print(f"✓ Received COB update for {symbol}: ${mid_price:.2f}")
|
||||
|
||||
# Check for real-time stats
|
||||
if 'realtime_1s' in data.get('data', {}).get('stats', {}):
|
||||
print(f" ✓ Real-time 1s stats available")
|
||||
if 'realtime_5s' in data.get('data', {}).get('stats', {}):
|
||||
print(f" ✓ Real-time 5s stats available")
|
||||
|
||||
# Stop after 5 messages or 10 seconds
|
||||
if message_count >= 5 or (time.time() - start_time) > 10:
|
||||
break
|
||||
elif msg.type == aiohttp.WSMsgType.ERROR:
|
||||
print(f"✗ WebSocket error: {ws.exception()}")
|
||||
break
|
||||
|
||||
print(f"✓ Received {message_count} WebSocket messages")
|
||||
|
||||
except Exception as e:
|
||||
print(f"✗ WebSocket connection failed: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Testing Real-time COB Dashboard")
|
||||
print("=" * 40)
|
||||
|
||||
asyncio.run(test_realtime_cob())
|
||||
|
||||
print("\nTest completed!")
|
Reference in New Issue
Block a user