/** * @test */ public function scheduleJobAndRunCron() { $sameRequest = false; if ($sameRequest) { // dispatch event $event = new Varien_Event_Observer(array('include_groups' => array($this->groups['groupA']))); $observer = new Aoe_Scheduler_Model_Observer(); $observer->dispatch($event); } else { $this->exec('cd ' . Mage::getBaseDir() . '/shell && /usr/bin/php scheduler.php --action cron --mode always --includeGroups ' . $this->groups['groupA']); } $schedulesJobWithGroupA = Mage::getModel('cron/schedule')->getCollection()->addFieldToFilter('job_code', $this->jobs['jobWithGroupA']->getJobCode()); $this->assertCount(1, $schedulesJobWithGroupA); foreach ($schedulesJobWithGroupA as $schedule) { /* @var $schedule Aoe_Scheduler_Model_Schedule */ $this->assertEquals(Aoe_Scheduler_Model_Schedule::STATUS_SUCCESS, $schedule->getStatus()); } $schedulesJobWithGroupB = Mage::getModel('cron/schedule')->getCollection()->addFieldToFilter('job_code', $this->jobs['jobWithGroupB']->getJobCode()); $this->assertCount(0, $schedulesJobWithGroupB); $schedulesJobWithGroupAandB = Mage::getModel('cron/schedule')->getCollection()->addFieldToFilter('job_code', $this->jobs['jobWithGroupAandB']->getJobCode()); $this->assertCount(1, $schedulesJobWithGroupAandB); foreach ($schedulesJobWithGroupAandB as $schedule) { /* @var $schedule Aoe_Scheduler_Model_Schedule */ $this->assertEquals(Aoe_Scheduler_Model_Schedule::STATUS_SUCCESS, $schedule->getStatus()); } }
/** * @test */ public function scheduleJobAndRunCron() { foreach ($this->schedules as $schedule) { /* @var $schedule Aoe_Scheduler_Model_Schedule */ $this->assertEquals(Aoe_Scheduler_Model_Schedule::STATUS_PENDING, $schedule->refresh()->getStatus()); // echo "Job code: {$schedule->getJobCode()}, Id: {$schedule->getId()}, Groups: " . $schedule->getJob()->getGroups() . "\n"; } // check if the new jobs show up in the "groups to jobs map" $helper = Mage::helper('aoe_scheduler'); /* @var $helper Aoe_Scheduler_Helper_Data */ $map = $helper->getGroupsToJobsMap(); foreach ($this->groups as $group) { $this->assertArrayHasKey($group, $map); } $this->assertTrue(in_array($this->schedules['jobWithGroupA']->getJobCode(), $map[$this->groups['groupA']])); $this->assertTrue(in_array($this->schedules['jobWithGroupB']->getJobCode(), $map[$this->groups['groupB']])); $this->assertTrue(in_array($this->schedules['jobWithGroupAandB']->getJobCode(), $map[$this->groups['groupA']])); $this->assertTrue(in_array($this->schedules['jobWithGroupAandB']->getJobCode(), $map[$this->groups['groupB']])); $includeJobs = $helper->addGroupJobs(array(), array($this->groups['groupA'])); $this->assertTrue(in_array($this->schedules['jobWithGroupA']->getJobCode(), $includeJobs)); $this->assertTrue(in_array($this->schedules['jobWithGroupAandB']->getJobCode(), $includeJobs)); $includeJobs = $helper->addGroupJobs(array(), array($this->groups['groupB'])); $this->assertTrue(in_array($this->schedules['jobWithGroupB']->getJobCode(), $includeJobs)); $this->assertTrue(in_array($this->schedules['jobWithGroupAandB']->getJobCode(), $includeJobs)); $sameRequest = false; if ($sameRequest) { // dispatch event $event = new Varien_Event_Observer(array('include_groups' => array($this->groups['groupA']))); $observer = new Aoe_Scheduler_Model_Observer(); $observer->dispatch($event); } else { $this->exec('cd ' . Mage::getBaseDir() . '/shell && /usr/bin/php scheduler.php --action cron --mode default --includeGroups ' . $this->groups['groupA']); } //$this->exec('cd ' . Mage::getBaseDir() . '/shell && /usr/bin/php scheduler.php --action wait'); $this->assertEquals(Aoe_Scheduler_Model_Schedule::STATUS_SUCCESS, $this->schedules['jobWithGroupA']->refresh()->getStatus()); $this->assertEquals(Aoe_Scheduler_Model_Schedule::STATUS_PENDING, $this->schedules['jobWithGroupB']->refresh()->getStatus()); $this->assertEquals(Aoe_Scheduler_Model_Schedule::STATUS_SUCCESS, $this->schedules['jobWithGroupAandB']->refresh()->getStatus()); }