コード例 #1
0
ファイル: health_check_test.php プロジェクト: jamesmcq/elis
 /**
  * Test ETL bugs fixed with ELIS-7815 & ELIS-7845
  */
 public function test_noetlerrorswithproblemlogdata()
 {
     global $DB;
     $dataset = $this->createCsvDataSet(array('log' => elis::file('elisprogram/tests/fixtures/mdl_log_elis7845_1500.csv')));
     $this->loadDataSet($dataset);
     elis::$config->eliscore_etl->last_run = 0;
     elis::$config->eliscore_etl->state = '';
     // Create existing record (NOT first)!
     $DB->insert_record('eliscore_etl_modactivity', (object) array('userid' => 409, 'courseid' => 382, 'cmid' => 12127, 'hour' => 1319659200, 'duration' => 1));
     // Run until complete.
     $prevdone = 0;
     $prevtogo = 1501;
     $prevstart = 0;
     $etlobj = new eliscore_etl_useractivity(0, false);
     do {
         $realtime = time();
         ob_start();
         $etlobj->cron();
         ob_end_clean();
         $lasttime = (int) $etlobj->state['starttime'];
         $recordsdone = $DB->count_records_select('log', "time < {$lasttime}");
         $recordstogo = $DB->count_records_select('log', "time >= {$lasttime}");
         /*
          * Uncomment to track progress.
          * echo "\n Done = {$recordsdone} ({$prevdone}), Togo = {$recordstogo} ({$prev_togo}),
          * starttime = {$lasttime} ({$prev_start})\n";
          */
         if (!$lasttime || !$recordstogo) {
             break;
         }
         $this->assertTrue($recordsdone >= $prevdone);
         $this->assertTrue($recordstogo <= $prevtogo);
         $this->assertTrue($lasttime > $prevstart);
         $prevdone = $recordsdone;
         $prevtogo = $recordstogo;
         $prevstart = $lasttime;
     } while (true);
     $etluacnt = $DB->count_records('eliscore_etl_useractivity');
     $etlumacnt = $DB->count_records('eliscore_etl_modactivity');
     $this->assertEquals(342, $etluacnt);
     $this->assertEquals(225, $etlumacnt);
 }
コード例 #2
0
ファイル: etl.php プロジェクト: jamesmcq/elis
/**
 * Run the ETL user activity cron.
 *
 * @param string $taskname The task name
 * @param int    $duration The length of time in seconds the cron is to run for
 * @param object $etlobj The ETL user activity object
 */
function user_activity_etl_cron($taskname = '', $duration = 0, &$etlobj = null)
{
    if ($etlobj === null) {
        $etlobj = new eliscore_etl_useractivity($duration);
    }
    // error_log("user_activity_etl_cron('{$taskname}', {$duration}, etlobj)");
    $etlobj->cron();
}
コード例 #3
0
ファイル: eliscore_etl_test.php プロジェクト: jamesmcq/elis
 /**
  * Test setting the blocked value of ETL scheduled task.
  * @uses $DB
  */
 public function test_set_etl_task_blocked()
 {
     global $DB;
     $now = time();
     $etlobj = new eliscore_etl_useractivity();
     $etlobj->set_etl_task_blocked($now);
     $blocked = $DB->get_field('local_eliscore_sched_tasks', 'blocked', array('plugin' => 'eliscore_etl'));
     $this->assertEquals($blocked, $now);
     $etlobj->set_etl_task_blocked(0);
     $blocked = $DB->get_field('local_eliscore_sched_tasks', 'blocked', array('plugin' => 'eliscore_etl'));
     $this->assertEquals($blocked, 0);
 }