bootstrapWorker(); // Use worker bootstrap for testing echo " ✓ Framework bootstrapped\n\n"; // Manually initialize ML Model Management (since discovery might not have run) echo " → Manually registering ML Model Management services...\n"; $mlInitializer = new \App\Framework\MachineLearning\ModelManagement\MLModelManagementInitializer($container); $mlInitializer->initialize(); echo " ✓ ML Model Management initialized\n\n"; // Test Model Registry echo "2. Testing Model Registry...\n"; $registry = $container->get(ModelRegistry::class); echo " ✓ ModelRegistry retrieved from container\n"; echo " Type: " . get_class($registry) . "\n\n"; // Test N+1 Detection Adapter echo "3. Testing N+1 Detection Model Adapter...\n"; try { $n1Adapter = $container->get(NPlusOneModelAdapter::class); echo " ✓ NPlusOneModelAdapter retrieved\n"; // Try to get metadata (will work if auto-registered) $metadata = $n1Adapter->getModelMetadata(); if ($metadata !== null) { echo " ✓ Model already registered: {$metadata->modelName} v{$metadata->version->toString()}\n"; echo " - Model Type: {$metadata->modelType->value}\n"; echo " - Configuration keys: " . implode(', ', array_keys($metadata->configuration)) . "\n"; } else { echo " ℹ Model not yet registered (auto-registration may be disabled)\n"; // Try manual registration echo " → Attempting manual registration...\n"; $metadata = $n1Adapter->registerCurrentModel(); echo " ✓ Model registered: {$metadata->modelName} v{$metadata->version->toString()}\n"; } } catch (\Throwable $e) { echo " ✗ N+1 Adapter error: " . $e->getMessage() . "\n"; echo " (This is expected if N+1 ML is not enabled)\n"; } echo "\n"; // Test WAF Behavioral Adapter echo "4. Testing WAF Behavioral Model Adapter...\n"; try { $wafAdapter = $container->get(WafBehavioralModelAdapter::class); echo " ✓ WafBehavioralModelAdapter retrieved\n"; $metadata = $wafAdapter->getModelMetadata(); if ($metadata !== null) { echo " ✓ Model already registered: {$metadata->modelName} v{$metadata->version->toString()}\n"; echo " - Model Type: {$metadata->modelType->value}\n"; echo " - Configuration keys: " . implode(', ', array_keys($metadata->configuration)) . "\n"; } else { echo " ℹ Model not yet registered\n"; echo " → Attempting manual registration...\n"; $metadata = $wafAdapter->registerCurrentModel(); echo " ✓ Model registered: {$metadata->modelName} v{$metadata->version->toString()}\n"; } } catch (\Throwable $e) { echo " ✗ WAF Adapter error: " . $e->getMessage() . "\n"; echo " (This is expected if WAF ML is not enabled)\n"; } echo "\n"; // Test Queue Anomaly Adapter echo "5. Testing Queue Anomaly Model Adapter...\n"; try { $queueAdapter = $container->get(QueueAnomalyModelAdapter::class); echo " ✓ QueueAnomalyModelAdapter retrieved\n"; $metadata = $queueAdapter->getModelMetadata(); if ($metadata !== null) { echo " ✓ Model already registered: {$metadata->modelName} v{$metadata->version->toString()}\n"; echo " - Model Type: {$metadata->modelType->value}\n"; echo " - Configuration keys: " . implode(', ', array_keys($metadata->configuration)) . "\n"; } else { echo " ℹ Model not yet registered\n"; echo " → Attempting manual registration...\n"; $metadata = $queueAdapter->registerCurrentModel(); echo " ✓ Model registered: {$metadata->modelName} v{$metadata->version->toString()}\n"; } } catch (\Throwable $e) { echo " ✗ Queue Adapter error: " . $e->getMessage() . "\n"; echo " (This is expected if Queue ML is not enabled)\n"; } echo "\n"; // Test ML Monitoring Scheduler echo "6. Testing ML Monitoring Scheduler...\n"; try { $scheduler = $container->get(MLMonitoringScheduler::class); echo " ✓ MLMonitoringScheduler retrieved\n"; echo " Type: " . get_class($scheduler) . "\n"; } catch (\Throwable $e) { echo " ✗ Scheduler error: " . $e->getMessage() . "\n"; } echo "\n"; // Test Model Registry functionality echo "7. Testing Model Registry Operations...\n"; try { $productionModels = $registry->getProductionModels(); echo " ✓ getProductionModels() works\n"; echo " - Production models count: " . count($productionModels) . "\n"; if (count($productionModels) > 0) { foreach ($productionModels as $model) { echo " - {$model->modelName} v{$model->version->toString()} ({$model->modelType->value})\n"; } } } catch (\Throwable $e) { echo " ✗ Registry operations error: " . $e->getMessage() . "\n"; } echo "\n"; echo "=== All Tests Completed ===\n"; echo "✓ Integration test successful\n"; } catch (\Throwable $e) { echo "\n!!! FATAL ERROR !!!\n"; echo "Error: " . $e->getMessage() . "\n"; echo "File: " . $e->getFile() . ":" . $e->getLine() . "\n"; echo "\nStack trace:\n" . $e->getTraceAsString() . "\n"; exit(1); }