/** * A method to test the run() method. */ function testRun() { $oServiceLocator =& OA_ServiceLocator::instance(); $aTypes = array('types' => array(0 => 'request', 1 => 'impression', 2 => 'click'), 'connections' => array(1 => MAX_CONNECTION_AD_IMPRESSION, 2 => MAX_CONNECTION_AD_CLICK)); // Mock the DAL, and set expectations Mock::generate('OX_Dal_Maintenance_Statistics'); $oDal = new MockOX_Dal_Maintenance_Statistics($this); $oDal->expectNever('saveSummary'); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); // Set the controller class $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oServiceLocator->register('Maintenance_Statistics_Controller', $oMaintenanceStatistics); // Test $oSummariseFinal = new OX_Maintenance_Statistics_Task_SummariseFinal(); $oSummariseFinal->oController->updateIntermediate = false; $oSummariseFinal->oController->updateFinal = false; $oSummariseFinal->run(); $oDal->tally(); // Prepare the dates $olastDateIntermediate = new Date('2006-03-09 10:59:59'); $oStartDate = new Date(); $oStartDate->copy($olastDateIntermediate); $oStartDate->addSeconds(1); $oUpdateIntermediateToDate = new Date('2006-03-09 11:59:59'); // Mock the DAL, and set expectations Mock::generate('OX_Dal_Maintenance_Statistics'); $oDal = new MockOX_Dal_Maintenance_Statistics($this); $oDal->expectNever('saveSummary'); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); // Set the controller class $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oServiceLocator->register('Maintenance_Statistics_Controller', $oMaintenanceStatistics); // Test $oSummariseFinal = new OX_Maintenance_Statistics_Task_SummariseFinal(); $oSummariseFinal->oController->updateIntermediate = true; $oSummariseFinal->oController->oLastDateIntermediate = $olastDateIntermediate; $oSummariseFinal->oController->oUpdateIntermediateToDate = $oUpdateIntermediateToDate; $oSummariseFinal->oController->updateFinal = false; $oSummariseFinal->run(); $oDal->tally(); // Prepare the dates $olastDateFinal = new Date('2006-03-09 10:59:59'); $oStartDate = new Date(); $oStartDate->copy($olastDateFinal); $oStartDate->addSeconds(1); $oUpdateFinalToDate = new Date('2006-03-09 11:59:59'); // Mock the DAL, and set expectations Mock::generate('OX_Dal_Maintenance_Statistics'); $oDal = new MockOX_Dal_Maintenance_Statistics($this); $oDal->expectOnce('saveSummary', array($oStartDate, $oUpdateFinalToDate, $aTypes, 'data_intermediate_ad', 'data_summary_ad_hourly')); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); // Set the controller class $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oServiceLocator->register('Maintenance_Statistics_Controller', $oMaintenanceStatistics); // Test $oSummariseFinal = new OX_Maintenance_Statistics_Task_SummariseFinal(); $oSummariseFinal->oController->updateIntermediate = false; $oSummariseFinal->oController->updateFinal = true; $oSummariseFinal->oController->oLastDateFinal = $olastDateFinal; $oSummariseFinal->oController->oUpdateFinalToDate = $oUpdateFinalToDate; $oSummariseFinal->run(); $oDal->tally(); // Prepare the dates $olastDateIntermediate = new Date('2006-03-09 10:59:59'); $oStartDate = new Date(); $oStartDate->copy($olastDateIntermediate); $oStartDate->addSeconds(1); $oUpdateIntermediateToDate = new Date('2006-03-09 11:59:59'); $olastDateFinal = new Date('2006-03-09 10:59:59'); $oStartDate = new Date(); $oStartDate->copy($olastDateFinal); $oStartDate->addSeconds(1); $oUpdateFinalToDate = new Date('2006-03-09 11:59:59'); // Mock the DAL, and set expectations Mock::generate('OX_Dal_Maintenance_Statistics'); $oDal = new MockOX_Dal_Maintenance_Statistics($this); $oDal->expectOnce('saveSummary', array($oStartDate, $oUpdateFinalToDate, $aTypes, 'data_intermediate_ad', 'data_summary_ad_hourly')); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); // Set the controller class $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oServiceLocator->register('Maintenance_Statistics_Controller', $oMaintenanceStatistics); // Test $oSummariseFinal = new OX_Maintenance_Statistics_Task_SummariseFinal(); $oSummariseFinal->oController->updateIntermediate = true; $oSummariseFinal->oController->oLastDateIntermediate = $olastDateIntermediate; $oSummariseFinal->oController->oUpdateIntermediateToDate = $oUpdateIntermediateToDate; $oSummariseFinal->oController->updateFinal = true; $oSummariseFinal->oController->oLastDateFinal = $olastDateFinal; $oSummariseFinal->oController->oUpdateFinalToDate = $oUpdateFinalToDate; $oSummariseFinal->run(); $oDal->tally(); }
$oStoreStartDate = new Date(); $oStoreStartDate->copy($oOIStart); $oStoreEndDate = new Date(); $oStoreEndDate->copy($oOIEnd); $aRunHours[] = array('start' => $oStoreStartDate, 'end' => $oStoreEndDate); $oOIEnd->addSeconds(60 * 60); $oOIStart->addSeconds(60 * 60); } // Create and register an instance of the OA_Dal_Maintenance_Statistics DAL class for the following tasks to use $oServiceLocator =& OA_ServiceLocator::instance(); if (!$oServiceLocator->get('OX_Dal_Maintenance_Statistics')) { $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDal = $oFactory->factory(); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); } $oMigrator->aRunDates = $aRunDates; $oMigrator->oController->updateIntermediate = true; echo "Starting migration task...<br />\n"; $result = $oMigrator->run(); echo "Finished! \$result = " . $result . "<br />\n"; // OK, so now we (should?) have moved the orphaned stats from the bucket tables over to the intermediate tables // We should now wipe out the data_summary table (gulp) and call summariseFinal() for the affected intervals $oDbh = OA_DB::singleton(); $oMigratorFinal = new OX_Maintenance_Statistics_Task_SummariseFinal(); foreach ($aRunHours as $aDates) { echo "Recomputing data_summary_ad_hourly totals from " . $aDates['start']->format('%Y-%m-%d %H:%M:%S') . " -> " . $aDates['end']->format('%Y-%m-%d %H:%M:%S') . "<br />\n"; $query = "DELETE FROM " . $oDbh->quoteIdentifier($conf['table']['prefix'] . 'data_summary_ad_hourly', true) . " WHERE date_time >= '" . $aDates['start']->format('%Y-%m-%d %H:%M:%S') . "' AND date_time <= '" . $aDates['end']->format('%Y-%m-%d %H:%M:%S') . "'"; $oDbh->exec($query); $oMigratorFinal->_saveSummary($aDates['start'], $aDates['end']); } echo "\n\nThe " . basename(__FILE__) . " script has completed running!\n\n";