/**
  * 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');
 }
示例#2
0
 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');
 }