Beispiel #1
0
 /**
  * Test method for testing the delete old database entries function
  *
  * @covers \Liebig\Cron\Cron::setDeleteDatabaseEntriesAfter
  * @covers \Liebig\Cron\Cron::run
  */
 public function testDeleteOldDatabaseEntries()
 {
     $manager1 = new \Liebig\Cron\Models\Manager();
     $date1 = new \DateTime();
     date_sub($date1, date_interval_create_from_date_string('240 hours'));
     $manager1->rundate = $date1;
     $manager1->runtime = 0.01;
     $this->assertNotNull($manager1->save());
     $newError1 = new \Liebig\Cron\Models\Job();
     $newError1->name = "test1";
     $newError1->return = "test1 fails";
     $newError1->runtime = 0.001;
     $newError1->cron_manager_id = $manager1->id;
     $this->assertNotNull($newError1->save());
     $newError2 = new \Liebig\Cron\Models\Job();
     $newError2->name = "test2";
     $newError2->return = "test2 fails";
     $newError2->runtime = 0.002;
     $newError2->cron_manager_id = $manager1->id;
     $this->assertNotNull($newError2->save());
     $manager2 = new \Liebig\Cron\Models\Manager();
     $date2 = new \DateTime();
     date_sub($date2, date_interval_create_from_date_string('240 hours'));
     $manager2->rundate = $date2;
     $manager2->runtime = 0.02;
     $this->assertNotNull($manager2->save());
     $newError3 = new \Liebig\Cron\Models\Job();
     $newError3->name = "test3";
     $newError3->return = "tes31 fails";
     $newError3->runtime = 0.003;
     $newError3->cron_manager_id = $manager2->id;
     $this->assertNotNull($newError3->save());
     $manager3 = new \Liebig\Cron\Models\Manager();
     $date3 = new \DateTime();
     date_sub($date3, date_interval_create_from_date_string('10 hours'));
     $manager3->rundate = $date3;
     $manager3->runtime = 0.03;
     $this->assertNotNull($manager3->save());
     $newError4 = new \Liebig\Cron\Models\Job();
     $newError4->name = "test4";
     $newError4->return = "test4 fails";
     $newError4->runtime = 0.004;
     $newError4->cron_manager_id = $manager3->id;
     $this->assertNotNull($newError4->save());
     $newError5 = new \Liebig\Cron\Models\Job();
     $newError5->name = "test5";
     $newError5->return = "test5 fails";
     $newError5->runtime = 0.005;
     $newError5->cron_manager_id = $manager3->id;
     $this->assertNotNull($newError5->save());
     $this->assertEquals(3, \Liebig\Cron\Models\Manager::count());
     $this->assertEquals(5, \Liebig\Cron\Models\Job::count());
     Cron::setDeleteDatabaseEntriesAfter(240);
     Cron::run();
     $this->assertEquals(2, \Liebig\Cron\Models\Manager::count());
     $this->assertEquals(2, \Liebig\Cron\Models\Job::count());
     Cron::setDeleteDatabaseEntriesAfter(0);
     $manager4 = new \Liebig\Cron\Models\Manager();
     $date4 = new \DateTime();
     date_sub($date4, date_interval_create_from_date_string('2400 hours'));
     $manager4->rundate = $date4;
     $manager4->runtime = 0.04;
     $this->assertNotNull($manager4->save());
     $newError6 = new \Liebig\Cron\Models\Job();
     $newError6->name = "test6";
     $newError6->return = "test6 fails";
     $newError6->runtime = 0.006;
     $newError6->cron_manager_id = $manager4->id;
     $this->assertNotNull($newError6->save());
     $newError7 = new \Liebig\Cron\Models\Job();
     $newError7->name = "test7";
     $newError7->return = "test7 fails";
     $newError7->runtime = 0.007;
     $newError7->cron_manager_id = $manager3->id;
     $this->assertNotNull($newError7->save());
     Cron::run();
     $this->assertEquals(4, \Liebig\Cron\Models\Manager::count());
     $this->assertEquals(4, \Liebig\Cron\Models\Job::count());
 }
Beispiel #2
0
 /**
  * Save cron jobs from an array to the database
  *
  * @static
  * @param  array $jobArray This array holds all the ran cron jobs which should be logged to database - entry structure has to be job['name'], job['return'], job['runtime']
  * @param  int $managerId The id of the saved manager database object which cares about the jobs
  */
 private static function saveJobsFromArrayToDatabase($jobArray, $managerId)
 {
     foreach ($jobArray as $job) {
         $jobEntry = new \Liebig\Cron\Models\Job();
         $jobEntry->name = $job['name'];
         // Get the type of the returned value
         $returnType = gettype($job['return']);
         // If the type is NULL there was no error running this job - insert empty string
         if ($returnType === 'NULL') {
             $jobEntry->return = '';
             // If the type is boolean save the value as string
         } else {
             if ($returnType === 'boolean') {
                 if ($job['return']) {
                     $jobEntry->return = 'true';
                 } else {
                     $jobEntry->return = 'false';
                 }
                 // If the type is integer, double or string we can cast it to String and save it to the database object
             } else {
                 if ($returnType === 'integer' || $returnType === 'double' || $returnType === 'string') {
                     $jobEntry->return = (string) $job['return'];
                 } else {
                     $jobEntry->return = 'Return object type is ' . $returnType;
                 }
             }
         }
         $jobEntry->runtime = $job['runtime'];
         $jobEntry->cron_manager_id = $managerId;
         $jobEntry->save();
     }
 }