Files
gogo2/test_websocket_cob_data.py
Dobromir Popov e2c495d83c cleanup
2025-07-27 18:31:30 +03:00

111 lines
4.5 KiB
Python

#!/usr/bin/env python3
"""
Test script to check if we're getting real COB data from WebSocket
"""
import time
import logging
from core.data_provider import DataProvider
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def test_websocket_cob_data():
"""Test if we're getting real COB data from WebSocket"""
logger.info("Testing WebSocket COB data reception...")
# Initialize data provider
dp = DataProvider()
# Wait for WebSocket connections
logger.info("Waiting for WebSocket connections...")
time.sleep(15)
# Check WebSocket status
logger.info("\n=== WebSocket Status ===")
try:
if hasattr(dp, 'enhanced_cob_websocket') and dp.enhanced_cob_websocket:
status = dp.enhanced_cob_websocket.get_status_summary()
logger.info(f"WebSocket status: {status}")
else:
logger.warning("Enhanced COB WebSocket not available")
except Exception as e:
logger.error(f"Error getting WebSocket status: {e}")
# Check if we have any COB WebSocket data
logger.info("\n=== COB WebSocket Data Check ===")
if hasattr(dp, 'cob_websocket_data'):
for symbol in ['ETH/USDT', 'BTC/USDT']:
if symbol in dp.cob_websocket_data:
data = dp.cob_websocket_data[symbol]
logger.info(f"{symbol}: {type(data)} - {len(str(data))} chars")
if isinstance(data, dict):
logger.info(f" Keys: {list(data.keys())}")
if 'bids' in data:
logger.info(f" Bids: {len(data['bids'])} levels")
if 'asks' in data:
logger.info(f" Asks: {len(data['asks'])} levels")
else:
logger.info(f"{symbol}: No WebSocket data")
else:
logger.warning("No cob_websocket_data attribute found")
# Check raw COB ticks
logger.info("\n=== Raw COB Ticks ===")
for symbol in ['ETH/USDT', 'BTC/USDT']:
if hasattr(dp, 'cob_raw_ticks') and symbol in dp.cob_raw_ticks:
raw_ticks = list(dp.cob_raw_ticks[symbol])
logger.info(f"{symbol}: {len(raw_ticks)} raw ticks")
if raw_ticks:
latest = raw_ticks[-1]
logger.info(f" Latest tick keys: {list(latest.keys())}")
if 'timestamp' in latest:
logger.info(f" Latest timestamp: {latest['timestamp']}")
else:
logger.info(f"{symbol}: No raw ticks")
# Monitor for 30 seconds to see if data comes in
logger.info("\n=== Monitoring for 30 seconds ===")
initial_counts = {}
for symbol in ['ETH/USDT', 'BTC/USDT']:
if hasattr(dp, 'cob_raw_ticks') and symbol in dp.cob_raw_ticks:
initial_counts[symbol] = len(dp.cob_raw_ticks[symbol])
else:
initial_counts[symbol] = 0
time.sleep(30)
logger.info("After 30 seconds:")
for symbol in ['ETH/USDT', 'BTC/USDT']:
if hasattr(dp, 'cob_raw_ticks') and symbol in dp.cob_raw_ticks:
current_count = len(dp.cob_raw_ticks[symbol])
new_ticks = current_count - initial_counts[symbol]
logger.info(f"{symbol}: +{new_ticks} new ticks (total: {current_count})")
else:
logger.info(f"{symbol}: No raw ticks available")
# Check if Enhanced WebSocket has latest data
logger.info("\n=== Enhanced WebSocket Latest Data ===")
try:
if hasattr(dp, 'enhanced_cob_websocket') and dp.enhanced_cob_websocket:
for symbol in ['ETH/USDT', 'BTC/USDT']:
if hasattr(dp.enhanced_cob_websocket, 'latest_cob_data'):
latest_data = dp.enhanced_cob_websocket.latest_cob_data.get(symbol)
if latest_data:
logger.info(f"{symbol}: Latest WebSocket data available")
logger.info(f" Keys: {list(latest_data.keys())}")
if 'bids' in latest_data and 'asks' in latest_data:
logger.info(f" Bids: {len(latest_data['bids'])}, Asks: {len(latest_data['asks'])}")
else:
logger.info(f"{symbol}: No latest WebSocket data")
except Exception as e:
logger.error(f"Error checking Enhanced WebSocket data: {e}")
# Clean shutdown
logger.info("\n=== Shutting Down ===")
dp.stop_automatic_data_maintenance()
logger.info("WebSocket COB data test completed")
if __name__ == "__main__":
test_websocket_cob_data()