/** * WorkerTest? * @testdox Worker option exitAfterNJobs: NULL means never exit, positive integer will exit after N jobs */ function testWorkerOptionExitAfterNJobs() { // create a queuestore $q = new JQStore_Array(); $this->assertEquals(0, $q->count('test')); // Add jobs foreach (range(1, 10) as $i) { $q->enqueue(new SampleJob()); } $this->assertEquals(10, $q->count()); $this->assertEquals(10, $q->count('test')); $this->assertEquals(10, $q->count('test', JQManagedJob::STATUS_QUEUED)); SampleJobCounter::reset(); // Start a worker to run 1 job $w = new JQWorker($q, array('queueName' => 'test', 'exitAfterNJobs' => 1, 'exitIfNoJobs' => true, 'silent' => true, 'enableJitter' => false)); $w->start(); $this->assertEquals(1, SampleJobCounter::count()); $this->assertEquals(9, $q->count('test')); // Start a worker to run 2 jobs $w = new JQWorker($q, array('queueName' => 'test', 'exitAfterNJobs' => 2, 'exitIfNoJobs' => true, 'silent' => true, 'enableJitter' => false)); $w->start(); $this->assertEquals(3, SampleJobCounter::count()); $this->assertEquals(7, $q->count('test')); // Start a worker to run remaining $w = new JQWorker($q, array('queueName' => 'test', 'exitAfterNJobs' => NULL, 'exitIfNoJobs' => true, 'silent' => true, 'enableJitter' => false)); $w->start(); $this->assertEquals(10, SampleJobCounter::count()); $this->assertEquals(0, $q->count('test')); }