bootstrapWorker(); $scheduler = $container->get(SchedulerService::class); $queue = $container->get(Queue::class); echo "āœ… Framework bootstrapped successfully\n"; echo "āœ… SchedulerService retrieved\n"; echo "āœ… Queue service retrieved\n\n"; // Test 1: Create a test job object $testJob = new class { public function handle(): void { echo "šŸ”„ Queue Job executed at " . date('Y-m-d H:i:s') . "\n"; file_put_contents('/tmp/queue-job-executed.txt', date('Y-m-d H:i:s') . "\n", FILE_APPEND); } public function getType(): string { return 'test-queue-job'; } public function toArray(): array { return ['type' => $this->getType(), 'created_at' => date('c')]; } }; // Test 2: Schedule a task that queues a job echo "šŸ“‹ Test 1: Scheduling task that queues background jobs\n"; echo "----------------------------------------------------\n"; $intervalSchedule = IntervalSchedule::every(Duration::fromSeconds(15)); $scheduler->schedule('queue-dispatcher', $intervalSchedule, function() use ($queue, $testJob) { echo "šŸ“¤ Scheduler dispatching job to queue at " . date('Y-m-d H:i:s') . "\n"; $jobPayload = JobPayload::immediate($testJob); $queue->push($jobPayload); return ['status' => 'job_queued', 'timestamp' => time()]; }); echo "āœ… Scheduled task that dispatches to queue\n\n"; // Test 3: Check if there are due scheduler tasks echo "šŸ“‹ Test 2: Checking due scheduler tasks\n"; echo "--------------------------------------\n"; $dueTasks = $scheduler->getDueTasks(); echo "šŸ“Š Due scheduler tasks: " . count($dueTasks) . "\n"; if (count($dueTasks) > 0) { echo "āœ… Found due tasks, executing...\n"; $results = $scheduler->executeDueTasks(); foreach ($results as $result) { echo " • Task: {$result->taskId}\n"; echo " Success: " . ($result->success ? 'Yes' : 'No') . "\n"; if ($result->result) { echo " Result: " . json_encode($result->result) . "\n"; } } } else { echo "ā„¹ļø No scheduler tasks due right now\n"; } echo "\n"; // Test 4: Check queue status echo "šŸ“‹ Test 3: Checking queue status\n"; echo "-------------------------------\n"; // Try to get queue statistics (if available) echo "šŸ“Š Queue Status:\n"; // Check if there are any jobs in queue try { // This might not exist, but let's see what queue methods are available $reflection = new ReflectionClass($queue); $methods = $reflection->getMethods(ReflectionMethod::IS_PUBLIC); echo "šŸ“‹ Available Queue Methods:\n"; foreach ($methods as $method) { if (!$method->isConstructor() && !$method->isDestructor()) { echo " • {$method->getName()}\n"; } } } catch (Exception $e) { echo "āš ļø Could not inspect queue methods: " . $e->getMessage() . "\n"; } echo "\n"; // Test 5: Try to process queue (if method exists) echo "šŸ“‹ Test 4: Attempting to process queue\n"; echo "-------------------------------------\n"; try { // Check if queue has a process method if (method_exists($queue, 'process')) { echo "āœ… Queue has process method, attempting to process jobs...\n"; $queue->process(); } elseif (method_exists($queue, 'work')) { echo "āœ… Queue has work method, attempting to work queue...\n"; $queue->work(); } elseif (method_exists($queue, 'pop')) { echo "āœ… Queue has pop method, attempting to pop job...\n"; $jobPayload = $queue->pop(); if ($jobPayload) { echo "āœ… Found job payload, executing job...\n"; $job = $jobPayload->job; if (method_exists($job, 'handle')) { $job->handle(); } else { echo "āš ļø Job object doesn't have handle method\n"; } } else { echo "ā„¹ļø No jobs in queue\n"; } } else { echo "āš ļø Queue doesn't have standard processing methods\n"; } } catch (Exception $e) { echo "āŒ Queue processing failed: " . $e->getMessage() . "\n"; } echo "\n"; // Test 6: Integration results echo "šŸ“Š Integration Test Results:\n"; echo "===========================\n"; echo "āœ… Scheduler can schedule tasks\n"; echo "āœ… Scheduler can execute due tasks\n"; echo "āœ… Queue service is accessible\n"; // Check if integration file was created if (file_exists('/tmp/queue-job-executed.txt')) { echo "āœ… Queue job execution verified (log file created)\n"; $content = file_get_contents('/tmp/queue-job-executed.txt'); echo "šŸ“„ Job execution log:\n"; echo $content; } else { echo "āš ļø No queue job execution detected\n"; } } catch (Exception $e) { echo "āŒ Integration test failed: " . $e->getMessage() . "\n"; echo "Stack trace:\n" . $e->getTraceAsString() . "\n"; exit(1); } echo "\nšŸŽÆ Scheduler + Queue integration test completed!\n";