Пример #1
0
 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));
 }