/** * Set the current queue to finished * Will archive the task after execution * @param string id (optional) * @param mixed result to save back * @return boolean success */ private function __setFinished($id = null, $result = null) { if ($id) { $this->id = $id; } if (!$this->exists()) { return $this->__errorAndExit("QueueTask {$this->id} not found."); } $save_result = json_encode($result); $this->saveField('status', 3); $this->saveField('result', $save_result); $this->saveField('end_time', microtime(true)); $this->saveField('executed', $this->str2datetime()); QueueUtil::writeLog('Finished Execution on Task: ' . $this->id . "\nTook: " . $this->field('execution_time') . "\nResult:\n\n" . $save_result); if (QueueUtil::getConfig('archiveAfterExecute')) { $this->archive($this->id); } return true; }
public function test_typeValidateAllowed() { QueueUtil::getConfig('allowedTypes'); QueueUtil::$configs['allowedTypes'] = array(1, 2); $data = array('QueueTask' => array('type' => 3, 'command' => '/url/to/queue')); $count = $this->QueueTask->find('count'); $result = $this->QueueTask->save($data); $this->assertFalse($result); $this->assertEqual($this->QueueTask->find('count'), $count); $this->assertTrue(!empty($this->QueueTask->validationErrors['type'])); //But a valid type works $data = array('QueueTask' => array('type' => 1, 'command' => 'Model::action()')); $result = $this->QueueTask->save($data); $this->assertTrue(!empty($result)); $this->assertEqual($this->QueueTask->find('count'), $count + 1); $this->assertTrue(empty($this->QueueTask->validationErrors['type'])); }