/** * Test creating Jobs to run close to a specified time, and strtotime parsing. * @return null */ public function testNotBefore() { $this->assertTrue($this->QueuedTask->createJob('task1', null, '+ 1 Min')); $this->assertTrue($this->QueuedTask->createJob('task1', null, '+ 1 Day')); $this->assertTrue($this->QueuedTask->createJob('task1', null, '2009-07-01 12:00:00')); $data = $this->QueuedTask->find('all'); $this->assertEqual($data[0]['TestQueuedTask']['notbefore'], date('Y-m-d H:i:s', strtotime('+ 1 Min'))); $this->assertEqual($data[1]['TestQueuedTask']['notbefore'], date('Y-m-d H:i:s', strtotime('+ 1 Day'))); $this->assertEqual($data[2]['TestQueuedTask']['notbefore'], '2009-07-01 12:00:00'); }
public function testRequestGroup() { $capabilities = ['task1' => ['name' => 'task1', 'timeout' => 1, 'retries' => 2, 'rate' => 0]]; // create an ungrouped task $this->assertTrue((bool) $this->QueuedTask->createJob('task1', 1)); //create a Grouped Task $this->assertTrue((bool) $this->QueuedTask->createJob('task1', 2, null, 'testgroup')); // Fetching without group should completely ignore the Group field. $this->QueuedTask->clearKey(); $tmp = $this->QueuedTask->requestJob($capabilities); $this->assertEquals($tmp['jobtype'], 'task1'); $this->assertEquals(1, unserialize($tmp['data'])); $this->QueuedTask->clearKey(); $tmp = $this->QueuedTask->requestJob($capabilities); $this->assertEquals($tmp['jobtype'], 'task1'); $this->assertEquals(2, unserialize($tmp['data'])); // well, lets tra that Again, while limiting by Group // create an ungrouped task $this->assertTrue((bool) $this->QueuedTask->createJob('task1', 3)); //create a Grouped Task $this->assertTrue((bool) $this->QueuedTask->createJob('task1', 4, null, 'testgroup', 'Job number 4')); $this->assertTrue((bool) $this->QueuedTask->createJob('task1', 5, null, null, 'Job number 5')); $this->assertTrue((bool) $this->QueuedTask->createJob('task1', 6, null, 'testgroup', 'Job number 6')); // we should only get tasks 4 and 6, in that order, when requesting inside the group $this->QueuedTask->clearKey(); $tmp = $this->QueuedTask->requestJob($capabilities, 'testgroup'); $this->assertEquals($tmp['jobtype'], 'task1'); $this->assertEquals(unserialize($tmp['data']), 4); $this->QueuedTask->clearKey(); $tmp = $this->QueuedTask->requestJob($capabilities, 'testgroup'); $this->assertEquals($tmp['jobtype'], 'task1'); $this->assertEquals(6, unserialize($tmp['data'])); // use FindProgress on the testgroup: $progress = $this->QueuedTask->find('progress', ['conditions' => ['group' => 'testgroup']]); $this->assertEquals(3, count($progress)); $this->assertNull($progress[0]['reference']); $this->assertEquals($progress[0]['status'], 'IN_PROGRESS'); $this->assertEquals($progress[1]['reference'], 'Job number 4'); $this->assertEquals($progress[1]['status'], 'IN_PROGRESS'); $this->assertEquals($progress[2]['reference'], 'Job number 6'); $this->assertEquals($progress[2]['status'], 'IN_PROGRESS'); }