/** * Test `started` manual callback */ public function testStoppedManual() { $this->TaskClient->add('ls', '', array('-l')); $task = $this->TaskServer->getPending(); $this->TaskServer->stopped($task, true); $startedTask = $this->TaskClient->find('first', array('conditions' => array('id' => $task['id']))); $this->assertEqual($startedTask['Task']['status'], TaskType::STOPPED); }
/** * Test task restarting * * @param array $task * @param int $taskId * @param array $newTask * @param string $exception * @dataProvider restartProvider */ public function testRestart(array $task, $taskId, array $newTask, $exception) { if ($exception) { $this->expectException($exception); } if ($task) { $this->assertTrue((bool) $this->TaskClient->save($task), 'Can\'t save task for test'); } $newTaskId = $this->TaskClient->restart($taskId); if (!$newTask) { $this->assertFalse($newTaskId); } else { $this->assertNotEquals($taskId, $newTask); $this->assertEqual($newTask, $this->TaskClient->find('first', array('fields' => array('id', 'process_id', 'server_id', 'command', 'path', 'arguments', 'hash', 'status', 'code', 'code_string', 'stdout', 'stderr', 'details', 'timeout', 'scheduled', 'started', 'stopped', 'errored', 'runtime', 'waittime'), 'conditions' => array('id' => $newTaskId), 'contain' => array('DependsOnTask' => array('fields' => array('id', 'process_id', 'server_id', 'command', 'path', 'arguments', 'hash', 'status', 'code', 'code_string', 'stdout', 'stderr', 'details', 'timeout', 'scheduled')))))); } }
/** * Approximate runtime of the command * * @param string $command * @return int */ public function approximateRuntime($command) { $tasks = $this->Task->find('list', array('conditions' => array('command' => $command, 'status' => TaskType::FINISHED, 'runtime >' => 0), 'fields' => array('id', 'runtime'), 'limit' => Configure::read('Task.approximateLimit'), 'order' => array('id' => 'DESC'))); return $tasks ? (int) round(array_sum($tasks) / count($tasks)) : 0; }