public function allowConsistencyCheck() { return Opus_Job::getCountForLabel(Opus_Job_Worker_ConsistencyCheck::LABEL) == 0; }
public function testCheckconsistencyActionResult() { $this->enableAsyncIndexmaintenanceMode(); $this->assertEquals(0, Opus_Job::getCountForLabel(Opus_Job_Worker_ConsistencyCheck::LABEL), 'missing cleanup of jobs table'); $this->getRequest()->setMethod('POST'); $this->dispatch('/admin/indexmaintenance/checkconsistency'); $this->assertResponseCode(302); $this->assertResponseLocationHeader($this->getResponse(), '/admin/indexmaintenance'); $this->assertEquals(1, Opus_Job::getCountForLabel(Opus_Job_Worker_ConsistencyCheck::LABEL), 'consistency check job was not stored in database'); /* * check if job was scheduled for execution */ $this->resetResponse(); $this->resetRequest(); $this->dispatch('/admin/indexmaintenance/index'); $this->assertResponseCode(200, 'foo'); $baseUrl = $this->getRequest()->getBaseUrl(); $body = $this->getResponse()->getBody(); $this->assertContains('div class="opprogress"', $body); $this->assertNotContains("action=\"{$baseUrl}/admin/indexmaintenance/checkconsistency\"", $body); // TODO $this->assertContains("action=\"$baseUrl/admin/indexmaintenance/checkfulltexts\"", $body); // TODO $this->assertContains("action=\"$baseUrl/admin/indexmaintenance/optimizeindex\"", $body); /* * run job immediately and check for result */ $jobrunner = new Opus_Job_Runner(); $jobrunner->setLogger(Zend_Registry::get('Zend_Log')); $worker = new Opus_Job_Worker_ConsistencyCheck(); $jobrunner->registerWorker($worker); $jobrunner->run(); $jobs = Opus_Job::getByLabels(array(Opus_Job_Worker_ConsistencyCheck::LABEL)); if (count($jobs) > 0) { $job = $jobs[0]; $message = 'at least one unexpected job found (Label: \'%s\', State: \'%s\', Data: \'%s\', Errors: \'%s\\, SHA1 Hash: \'%s\')'; $label = $job->getLabel(); $state = $job->getState(); $data = $job->getData(); $errors = $job->getErrors(); $hash = $job->getSha1Id(); $this->fail(sprintf($message, $label, $state, $data, $errors, $hash)); } $this->assertEquals(0, Opus_Job::getCountForLabel(Opus_Job_Worker_ConsistencyCheck::LABEL), 'consistency check job was not removed from database after execution'); $this->resetResponse(); $this->resetRequest(); $this->dispatch('/admin/indexmaintenance/index'); $this->assertResponseCode(200, 'bar'); $baseUrl = $this->getRequest()->getBaseUrl(); $body = $this->getResponse()->getBody(); $this->assertNotContains('div class="opprogress"', $body); $this->assertContains('pre class="opoutput"', $body); $this->assertContains("action=\"{$baseUrl}/admin/indexmaintenance/checkconsistency\"", $body); // TODO $this->assertContains("action=\"$baseUrl/admin/indexmaintenance/checkfulltexts\"", $body); // TODO $this->assertContains("action=\"$baseUrl/admin/indexmaintenance/optimizeindex\"", $body); }
private function runJobImmediately() { $this->assertEquals(1, Opus_Job::getCountForLabel(Opus_Job_Worker_ConsistencyCheck::LABEL)); $jobrunner = new Opus_Job_Runner(); $jobrunner->setLogger(Zend_Registry::get('Zend_Log')); $worker = new Opus_Job_Worker_ConsistencyCheck(); $jobrunner->registerWorker($worker); $jobrunner->run(); $this->assertEquals(0, Opus_Job::getCountForLabel(Opus_Job_Worker_ConsistencyCheck::LABEL)); }