integration of (legacy) training systems, initialize, train, show on the UI

This commit is contained in:
Dobromir Popov
2025-07-05 00:33:03 +03:00
parent 5ca7493708
commit d260e73f9a
10 changed files with 647 additions and 151 deletions

View File

@ -0,0 +1,144 @@
#!/usr/bin/env python3
"""
Test Enhanced Training Integration
This script tests the integration of EnhancedRealtimeTrainingSystem
into the TradingOrchestrator to ensure it works correctly.
"""
import sys
import os
import logging
import asyncio
from datetime import datetime
# Add project root to path
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from core.orchestrator import TradingOrchestrator
from core.data_provider import DataProvider
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
async def test_enhanced_training_integration():
"""Test the enhanced training system integration"""
try:
logger.info("=" * 60)
logger.info("TESTING ENHANCED TRAINING INTEGRATION")
logger.info("=" * 60)
# 1. Initialize orchestrator with enhanced training
logger.info("1. Initializing orchestrator with enhanced training...")
data_provider = DataProvider()
orchestrator = TradingOrchestrator(
data_provider=data_provider,
enhanced_rl_training=True
)
# 2. Check if training system is available
logger.info("2. Checking training system availability...")
training_available = hasattr(orchestrator, 'enhanced_training_system')
training_enabled = getattr(orchestrator, 'training_enabled', False)
logger.info(f" - Training system attribute: {'✅ Available' if training_available else '❌ Missing'}")
logger.info(f" - Training enabled: {'✅ Yes' if training_enabled else '❌ No'}")
# 3. Test training system initialization
if training_available and orchestrator.enhanced_training_system:
logger.info("3. Testing training system methods...")
# Test getting training statistics
stats = orchestrator.get_enhanced_training_stats()
logger.info(f" - Training stats retrieved: {len(stats)} fields")
logger.info(f" - Training enabled in stats: {stats.get('training_enabled', False)}")
logger.info(f" - System available: {stats.get('system_available', False)}")
# Test starting training
start_result = orchestrator.start_enhanced_training()
logger.info(f" - Start training result: {'✅ Success' if start_result else '❌ Failed'}")
if start_result:
# Let it run for a few seconds
logger.info(" - Letting training run for 5 seconds...")
await asyncio.sleep(5)
# Get updated stats
updated_stats = orchestrator.get_enhanced_training_stats()
logger.info(f" - Updated stats: {updated_stats.get('is_training', False)}")
# Stop training
stop_result = orchestrator.stop_enhanced_training()
logger.info(f" - Stop training result: {'✅ Success' if stop_result else '❌ Failed'}")
else:
logger.warning("3. Training system not available - checking fallback behavior...")
# Test methods when training system is not available
stats = orchestrator.get_enhanced_training_stats()
logger.info(f" - Fallback stats: {stats}")
start_result = orchestrator.start_enhanced_training()
logger.info(f" - Fallback start result: {start_result}")
# 4. Test dashboard connection method
logger.info("4. Testing dashboard connection method...")
try:
orchestrator.set_training_dashboard(None) # Test with None
logger.info(" - Dashboard connection method: ✅ Available")
except Exception as e:
logger.error(f" - Dashboard connection method error: {e}")
# 5. Summary
logger.info("=" * 60)
logger.info("INTEGRATION TEST SUMMARY")
logger.info("=" * 60)
if training_available and training_enabled:
logger.info("✅ ENHANCED TRAINING INTEGRATION SUCCESSFUL")
logger.info(" - Training system properly integrated")
logger.info(" - All methods available and functional")
logger.info(" - Ready for real-time training")
elif training_available:
logger.info("⚠️ ENHANCED TRAINING PARTIALLY INTEGRATED")
logger.info(" - Training system available but not enabled")
logger.info(" - Check EnhancedRealtimeTrainingSystem import")
else:
logger.info("❌ ENHANCED TRAINING INTEGRATION FAILED")
logger.info(" - Training system not properly integrated")
logger.info(" - Methods missing or non-functional")
return training_available and training_enabled
except Exception as e:
logger.error(f"Error in integration test: {e}")
import traceback
logger.error(traceback.format_exc())
return False
async def main():
"""Main test function"""
try:
success = await test_enhanced_training_integration()
if success:
logger.info("🎉 All tests passed! Enhanced training integration is working.")
return 0
else:
logger.warning("⚠️ Some tests failed. Check the integration.")
return 1
except KeyboardInterrupt:
logger.info("Test interrupted by user")
return 0
except Exception as e:
logger.error(f"Fatal error in test: {e}")
return 1
if __name__ == "__main__":
exit_code = asyncio.run(main())
sys.exit(exit_code)