111 lines
4.5 KiB
Python
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() |