cob integration (wip)

This commit is contained in:
Dobromir Popov
2025-06-19 01:12:10 +03:00
parent 2bc78af888
commit 2ef7ed011d
6 changed files with 1011 additions and 98 deletions

View File

@ -1,55 +1,103 @@
#!/usr/bin/env python3
"""
Simple test for the scalping dashboard with dynamic throttling
Simple Dashboard Test - Isolate dashboard startup issues
"""
import requests
import time
def test_dashboard():
"""Test dashboard basic functionality"""
base_url = "http://127.0.0.1:8051"
print("Testing Scalping Dashboard with Dynamic Throttling...")
import os
# Fix OpenMP library conflicts before importing other modules
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
os.environ['OMP_NUM_THREADS'] = '4'
import sys
import logging
from pathlib import Path
# Add project root to path
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))
# Setup basic logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
def test_dashboard_startup():
"""Test dashboard creation and startup"""
try:
# Test main page
response = requests.get(base_url, timeout=5)
print(f"Main page: {response.status_code}")
logger.info("=" * 50)
logger.info("TESTING DASHBOARD STARTUP")
logger.info("=" * 50)
# Test imports first
logger.info("Step 1: Testing imports...")
from core.config import get_config, setup_logging
from core.data_provider import DataProvider
from core.orchestrator import TradingOrchestrator
from core.trading_executor import TradingExecutor
logger.info("✓ Core imports successful")
from web.dashboard import TradingDashboard
logger.info("✓ Dashboard import successful")
# Test configuration
logger.info("Step 2: Testing configuration...")
setup_logging()
config = get_config()
logger.info("✓ Configuration loaded")
# Test core component creation
logger.info("Step 3: Testing core component creation...")
data_provider = DataProvider()
logger.info("✓ DataProvider created")
orchestrator = TradingOrchestrator(data_provider=data_provider)
logger.info("✓ TradingOrchestrator created")
trading_executor = TradingExecutor()
logger.info("✓ TradingExecutor created")
# Test dashboard creation
logger.info("Step 4: Testing dashboard creation...")
dashboard = TradingDashboard(
data_provider=data_provider,
orchestrator=orchestrator,
trading_executor=trading_executor
)
logger.info("✓ TradingDashboard created successfully")
# Test dashboard startup
logger.info("Step 5: Testing dashboard server startup...")
logger.info("Dashboard will start on http://127.0.0.1:8052")
logger.info("Press Ctrl+C to stop the test")
# Run the dashboard
dashboard.app.run(
host='127.0.0.1',
port=8052,
debug=False,
use_reloader=False
)
if response.status_code == 200:
print("✅ Dashboard is running successfully!")
print("✅ Unicode encoding issues fixed")
print("✅ Dynamic throttling implemented")
print("✅ Charts should now display properly")
print("\nDynamic Throttling Features:")
print("• Adaptive update frequency (500ms - 2000ms)")
print("• Performance-based throttling (0-5 levels)")
print("• Automatic optimization based on callback duration")
print("• Fallback to last known state when throttled")
print("• Real-time performance monitoring")
return True
else:
print(f"❌ Dashboard returned status {response.status_code}")
return False
except requests.exceptions.ConnectionError:
print("❌ Cannot connect to dashboard")
return False
except Exception as e:
print(f"❌ Error: {e}")
logger.error(f"❌ Dashboard test failed: {e}")
import traceback
logger.error(traceback.format_exc())
return False
return True
if __name__ == "__main__":
success = test_dashboard()
if success:
print("\n🎉 SCALPING DASHBOARD FIXED!")
print("The dashboard now has:")
print("1. Fixed Unicode encoding issues")
print("2. Proper Dash callback structure")
print("3. Dynamic throttling for optimal performance")
print("4. Adaptive update frequency")
print("5. Performance monitoring and optimization")
else:
print("\n❌ Dashboard still has issues")
try:
success = test_dashboard_startup()
if success:
logger.info("✓ Dashboard test completed successfully")
else:
logger.error("❌ Dashboard test failed")
sys.exit(1)
except KeyboardInterrupt:
logger.info("Dashboard test interrupted by user")
except Exception as e:
logger.error(f"Fatal error in dashboard test: {e}")
sys.exit(1)