/** * The constructor method. */ function Test_OX_Dal_Maintenance_Statistics_rejectEmptyVarConversions() { $this->UnitTestCase(); // Prepare the MSE DAL for use in the tests $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $this->oDal = $oFactory->factory(); }
/** * The constructor method. */ function __construct() { parent::__construct(); // Prepare the MSE DAL for use in the tests $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $this->oDal = $oFactory->factory(); }
/** * The constructor method. */ function __construct() { parent::__construct(); // Prepare the database connection for use in the tests $this->oDbh = OA_DB::singleton(); // Prepare the MSE DAL for use in the tests $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $this->oDal = $oFactory->factory(); }
/** * The constructor method. */ function Test_OX_Dal_Maintenance_Statistics_migrateRawData_Complex() { $this->UnitTestCase(); // Prepare the database connection for use in the tests $this->oDbh = OA_DB::singleton(); // Prepare the MSE DAL for use in the tests $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $this->oDal = $oFactory->factory(); }
/** * Summarise the data from the bucket tables into the stats tables. * * @param <type> $oStartDate * @param <type> $oEndDate */ public function summarise($oStartDate, $oEndDate) { // $oComponent =& OX_Component::factory('deliveryLog', 'oxLogCountry', 'logImpressionCountry'); // $statisticsTableName = $GLOBALS['_MAX']['CONF']['table']['prefix'] . // $oComponent->getStatisticsName(); // $aMigrationMaps = array( // $oComponent->getStatisticsMigration()); $aRunComponents = $this->prepareMaps($this->locateComponents()); // TODO: make it work for a range of dates $aDates = array('start' => $oStartDate, 'end' => $oEndDate); // Prepare the DAL object $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDalMaintenanceStatistics = $oFactory->factory(); $oNowDate = new Date(); foreach ($aRunComponents as $statisticsTable => $aMaps) { $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTable, $aMaps, $aDates); } }
/** * A method to test the summariseBucketsRawSupplementary() method. */ function testSummariseBucketsRawSupplementary() { $aConf =& $GLOBALS['_MAX']['CONF']; $aConf['maintenance']['operationInterval'] = 60; // Prepare standard test parameters $statisticsTableName = $aConf['table']['prefix'] . 'data_intermediate_ad_variable_value'; $aMigrationDetails = array('method' => 'rawSupplementary', 'masterTable' => $aConf['table']['prefix'] . 'data_intermediate_ad_connection', 'masterTablePrimaryKeys' => array(0 => 'data_intermediate_ad_connection_id'), 'bucketTablePrimaryKeys' => array(0 => 'data_intermediate_ad_connection_id'), 'masterTableKeys' => array(0 => 'server_raw_tracker_impression_id', 1 => 'server_raw_ip'), 'bucketTableKeys' => array(0 => 'server_conv_id', 1 => 'server_ip'), 'masterDateTimeColumn' => 'tracker_date_time', 'bucketTable' => $aConf['table']['prefix'] . 'data_bkt_a_var', 'source' => array(0 => 'tracker_variable_id', 1 => 'value'), 'destination' => array(0 => 'tracker_variable_id', 1 => 'value')); $aDates = array('start' => new Date('2008-08-21 09:00:00'), 'end' => new Date('2008-08-21 09:59:59')); // Prepare the DAL object $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDalMaintenanceStatistics = $oFactory->factory(); // Test 1: Test with an incorrect method name in the mapping array $savedValue = $aMigrationDetails['method']; $aMigrationDetails['method'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with migration map method 'foo' != 'rawSupplementary'."); $aMigrationDetails['method'] = $savedValue; // Test 2: Test with a different number of masterTablePrimaryKeys and bucketTablePrimaryKeys columns $savedValue = $aMigrationDetails['masterTablePrimaryKeys'][0]; unset($aMigrationDetails['masterTablePrimaryKeys'][0]); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with different number of 'masterTablePrimaryKeys' and 'bucketTablePrimaryKeys' columns."); $aMigrationDetails['masterTablePrimaryKeys'][0] = $savedValue; // Test 3: Test with a different number of masterTableKeys and bucketTableKeys columns $savedValue = $aMigrationDetails['masterTableKeys'][1]; unset($aMigrationDetails['masterTableKeys'][1]); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with different number of 'masterTableKeys' and 'bucketTableKeys' columns."); $aMigrationDetails['masterTableKeys'][1] = $savedValue; // Test 4: Test with a different number of source and destination columns $savedValue = $aMigrationDetails['destination'][1]; unset($aMigrationDetails['destination'][1]); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with different number of 'source' and 'destination' columns."); $aMigrationDetails['destination'][1] = $savedValue; // Test 5: Test with date parameters that are not really dates $savedValue = $aDates['start']; $aDates['start'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid start/end date parameters -- not Date objects."); $aDates['start'] = $savedValue; $savedValue = $aDates['end']; $aDates['end'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid start/end date parameters -- not Date objects."); $aDates['end'] = $savedValue; // Test 6: Test with invalid start/end dates $savedValue = $aDates['start']; $aDates['start'] = new Date('2008-08-21 08:00:00'); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid start/end date parameters -- not operation interval bounds."); $aDates['start'] = $savedValue; $savedValue = $aDates['end']; $aDates['end'] = new Date('2008-08-22 09:59:59'); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid start/end date parameters -- not operation interval bounds."); $aDates['end'] = $savedValue; // Test 7: Test with an invalid statistics table name $savedValue = $statisticsTableName; $statisticsTableName = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid statistics table 'foo'."); $statisticsTableName = $savedValue; // Test 8: Test with an invalid master statistics table name $savedValue = $aMigrationDetails['masterTable']; $aMigrationDetails['masterTable'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid master table 'foo'."); $aMigrationDetails['masterTable'] = $savedValue; // Test 9: Test with no data_bkt_a_var table in the database $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid bucket table '{$aConf['table']['prefix']}data_bkt_a_var'."); // Install the openXDeliveryLog plugin, which will create the // data_bkt_a table required for testing TestEnv::installPluginPackage('openXDeliveryLog', false); // Test 10: Test with all tables present, but no data $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 0); // Insert a conversion into the data_intermediate_ad_connection table // in the incorrect operation interval $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 1; $oData_intermediate_ad_connection->server_raw_ip = 'localhost'; $oData_intermediate_ad_connection->tracker_id = 2; $oData_intermediate_ad_connection->tracker_date_time = '2008-08-21 08:15:00'; $oData_intermediate_ad_connection->connection_date_time = '2008-08-21 07:15:00'; $oData_intermediate_ad_connection->ad_id = 3; $oData_intermediate_ad_connection->zone_id = 4; $oData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $oData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $oData_intermediate_ad_connection->connection_window = 3600; $oData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $oData_intermediate_ad_connection->inside_window = 1; $conversionId = DataGenerator::generateOne($oData_intermediate_ad_connection); // Test 11: Test with data in the incorrect operation interval $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 0); // Insert two conversions into the data_intermediate_ad_connection table // in the correct operation interval $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 2; $oData_intermediate_ad_connection->server_raw_ip = 'localhost'; $oData_intermediate_ad_connection->tracker_id = 2; $oData_intermediate_ad_connection->tracker_date_time = '2008-08-21 09:15:00'; $oData_intermediate_ad_connection->connection_date_time = '2008-08-21 08:15:00'; $oData_intermediate_ad_connection->ad_id = 3; $oData_intermediate_ad_connection->zone_id = 4; $oData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $oData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $oData_intermediate_ad_connection->connection_window = 3600; $oData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $oData_intermediate_ad_connection->inside_window = 1; $conversionId1 = DataGenerator::generateOne($oData_intermediate_ad_connection); $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 3; $oData_intermediate_ad_connection->server_raw_ip = 'localhost'; $oData_intermediate_ad_connection->tracker_id = 9; $oData_intermediate_ad_connection->tracker_date_time = '2008-08-21 09:16:00'; $oData_intermediate_ad_connection->connection_date_time = '2008-08-21 08:16:00'; $oData_intermediate_ad_connection->ad_id = 6; $oData_intermediate_ad_connection->zone_id = 7; $oData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $oData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_VIEW; $oData_intermediate_ad_connection->connection_window = 3600; $oData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $oData_intermediate_ad_connection->inside_window = 1; $conversionId2 = DataGenerator::generateOne($oData_intermediate_ad_connection); // Test 12: Test with data in the correct operation interval, but // no supplementary data $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 0); // Add some supplementary data for the conversions above! $oData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var'); $oData_bkt_a_var->server_conv_id = 2; $oData_bkt_a_var->server_ip = 'localhost'; $oData_bkt_a_var->tracker_variable_id = 99; $oData_bkt_a_var->value = 'foo'; DataGenerator::generateOne($oData_bkt_a_var); $oData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var'); $oData_bkt_a_var->server_conv_id = 2; $oData_bkt_a_var->server_ip = 'localhost'; $oData_bkt_a_var->tracker_variable_id = 100; $oData_bkt_a_var->value = '156.99'; DataGenerator::generateOne($oData_bkt_a_var); $oData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var'); $oData_bkt_a_var->server_conv_id = 3; $oData_bkt_a_var->server_ip = 'localhost'; $oData_bkt_a_var->tracker_variable_id = 15; $oData_bkt_a_var->value = '123456789'; DataGenerator::generateOne($oData_bkt_a_var); // Test 12: Test with data in the correct operation interval $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 3); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId1; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 2); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId1; $oData_intermediate_ad_variable_value->tracker_variable_id = 99; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_variable_value->fetch(); $this->assertEqual($oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id, $conversionId1); $this->assertEqual($oData_intermediate_ad_variable_value->tracker_variable_id, 99); $this->assertEqual($oData_intermediate_ad_variable_value->value, 'foo'); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId1; $oData_intermediate_ad_variable_value->tracker_variable_id = 100; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_variable_value->fetch(); $this->assertEqual($oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id, $conversionId1); $this->assertEqual($oData_intermediate_ad_variable_value->tracker_variable_id, 100); $this->assertEqual($oData_intermediate_ad_variable_value->value, '156.99'); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId2; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId2; $oData_intermediate_ad_variable_value->tracker_variable_id = 15; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_variable_value->fetch(); $this->assertEqual($oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id, $conversionId2); $this->assertEqual($oData_intermediate_ad_variable_value->tracker_variable_id, 15); $this->assertEqual($oData_intermediate_ad_variable_value->value, '123456789'); // Clean up generated data DataGenerator::cleanUp(); // Also clean up the data migrated into the statistics table $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId1; $oData_intermediate_ad_variable_value->find(); $oData_intermediate_ad_variable_value->delete(); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId2; $oData_intermediate_ad_variable_value->find(); $oData_intermediate_ad_variable_value->delete(); // Uninstall the installed plugin TestEnv::uninstallPluginPackage('openXDeliveryLog', false); // Restore the test environment configuration TestEnv::restoreConfig(); }
/** * A method to test the sending of emails from the * manageCampaigns() method - tests the sending of * the "campaign about to expire" emails. */ function testManageCampaignsEmailsPlacementToExpire() { // Set the date format global $date_format; $date_format = '%Y-%m-%d'; // Set now as 1 week before $oDateNow = new Date('2008-01-10'); $oServiceLocator =& OA_ServiceLocator::instance(); $oServiceLocator->register('now', $oDateNow); // Insert the required preference values for dealing with email warnings $warnEmailAdminPreferenceId = $this->_createPreference('warn_email_admin', OA_ACCOUNT_ADMIN); $warnEmailAdminPreferenceImpressionLimitId = $this->_createPreference('warn_email_admin_impression_limit', OA_ACCOUNT_ADMIN); $warnEmailAdminPreferenceDayLimitId = $this->_createPreference('warn_email_admin_day_limit', OA_ACCOUNT_ADMIN); $this->_createPreference('warn_email_manager', OA_ACCOUNT_MANAGER); $this->_createPreference('warn_email_manager_impression_limit', OA_ACCOUNT_MANAGER); $this->_createPreference('warn_email_manager_day_limit', OA_ACCOUNT_MANAGER); $this->_createPreference('warn_email_advertiser', OA_ACCOUNT_ADVERTISER); $this->_createPreference('warn_email_advertiser_impression_limit', OA_ACCOUNT_ADVERTISER); $this->_createPreference('warn_email_advertiser_day_limit', OA_ACCOUNT_ADVERTISER); // Create the required accounts & set the various ID values $aValues = $this->_createAccounts(); $adminAccountId = $aValues['adminAccount']; $advertiserClientId = $aValues['advertiserClient']; // Create a currently running placement with 100 impressions // remaining and set to expire on 2008-01-13 $aData = array('clientid' => $advertiserClientId, 'status' => OA_ENTITY_STATUS_RUNNING, 'views' => '100', 'expire_time' => '2008-01-13 23:59:59'); $campaignId = $this->_insertPlacement($aData); // Reset now $oServiceLocator->remove('now'); // Insert a banner for the placement $aData = array('campaignid' => $campaignId); $adId = $this->_insertAd($aData); // Create an instance of the mocked OA_Email class, and set // expectations on how the class' methods should be called // based on the above Mock::generate('OA_Email'); $oEmailMock = new MockOA_Email($this); $oEmailMock->expectOnce('sendCampaignImpendingExpiryEmail'); // Register the mocked OA_Email class in the service locator $oServiceLocator =& OA_ServiceLocator::instance(); $oServiceLocator->register('OA_Email', $oEmailMock); // Run the manageCampaigns() method and ensure that the correct // calls to OA_Email were made $oDate = new Date('2008-01-11 23:00:01'); $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDalMaintenanceStatistics = $oFactory->factory(); $report = $oDalMaintenanceStatistics->manageCampaigns($oDate); $oEmailMock->tally(); // Now set the preference that states that the admin account // wants to get email warnings $this->_insertPreference($adminAccountId, $warnEmailAdminPreferenceId, 'true'); // Create a new instance of the mocked OA_Email class, and set // expectations on how the class' methods should be called // based on the above $oEmailMock = new MockOA_Email($this); $oEmailMock->expectOnce('sendCampaignImpendingExpiryEmail'); // Register the mocked OA_Email class in the service locator $oServiceLocator =& OA_ServiceLocator::instance(); $oServiceLocator->register('OA_Email', $oEmailMock); // Run the manageCampaigns() method and ensure that the correct // calls to OA_Email were made $oDate = new Date('2008-01-11 23:00:01'); $oDalMaintenanceStatistics = $oFactory->factory(); $report = $oDalMaintenanceStatistics->manageCampaigns($oDate); $oEmailMock->tally(); // Now set the preference that states that the admin account // wants to get email warnings if there are less than 50 // impressions remaining $this->_insertPreference($adminAccountId, $warnEmailAdminPreferenceImpressionLimitId, '50'); // Create a new instance of the mocked OA_Email class, and set // expectations on how the class' methods should be called // based on the above $oEmailMock = new MockOA_Email($this); $oEmailMock->expectOnce('sendCampaignImpendingExpiryEmail'); // Register the mocked OA_Email class in the service locator $oServiceLocator =& OA_ServiceLocator::instance(); $oServiceLocator->register('OA_Email', $oEmailMock); // Run the manageCampaigns() method and ensure that the correct // calls to OA_Email were made $oDate = new Date('2008-01-11 23:00:01'); $oDalMaintenanceStatistics = $oFactory->factory(); $report = $oDalMaintenanceStatistics->manageCampaigns($oDate); $oEmailMock->tally(); // Delivery 60 impressions out of the 100, so that only 40 remain // (i.e. less than the 50 limit set above) $aData = array('operation_interval_id' => 25, 'interval_start' => '2008-01-11 22:00:00', 'interval_end' => '2008-01-11 22:59:59', 'hour' => 0, 'ad_id' => $adId, 'impressions' => 60); $this->_insertDataIntermediateAd($aData); // Create a new instance of the mocked OA_Email class, and set // expectations on how the class' methods should be called // based on the above $oEmailMock = new MockOA_Email($this); $oEmailMock->expectOnce('sendCampaignImpendingExpiryEmail', array($oDate, "{$campaignId}")); // Register the mocked OA_Email class in the service locator $oServiceLocator =& OA_ServiceLocator::instance(); $oServiceLocator->register('OA_Email', $oEmailMock); // Run the manageCampaigns() method and ensure that the correct // calls to OA_Email were made $oDate = new Date('2008-01-11 23:00:01'); $oDalMaintenanceStatistics = $oFactory->factory(); $report = $oDalMaintenanceStatistics->manageCampaigns($oDate); $oEmailMock->tally(); // Clean up DataGenerator::cleanUp(); }
} } } else { $plugin = null; $data_summary_table = 'data_summary_ad_hourly'; } // Update "data_intermediate_ad" table $dalData_intermediate_ad = OA_Dal::factoryDAL('data_intermediate_ad'); $dalData_intermediate_ad->addConversion($operation, $basketValue, $numItems, $ad_id, $creative_id, $zone_id, $opDay, $opHour); // Update "$data_summary_table" table $dalData_intermediate_ad->addConversion($operation, $basketValue, $numItems, $ad_id, $creative_id, $zone_id, $opDay, $opHour, $data_summary_table); // Update finance info $oServiceLocator =& OA_ServiceLocator::instance(); $oDal =& $oServiceLocator->get('OX_Dal_Maintenance_Statistics'); if (!$oDal) { $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDal = $oFactory->factory(); } $oStartDate = new Date($oConnectionDate->format('%Y-%m-%d %H:00:00')); $oEndDate = new Date($oConnectionDate->format('%Y-%m-%d %H:00:00')); $oDal->_saveSummaryUpdateWithFinanceInfo($oStartDate, $oEndDate, $data_summary_table); if (!is_null($plugin)) { $plugin->serviceLocatorRemove(); } } } } if ($modified) { // Clear cache include_once 'Cache/Lite.php'; $options = array('cacheDir' => MAX_CACHE);
/** * The method to run the Maintenance Statistics Engine process. * * @static */ function run() { OA::switchLogIdent('maintenance'); // Get the configuration $aConf = $GLOBALS['_MAX']['CONF']; // Log the start of the process OA::debug('Running Maintenance Statistics Engine', PEAR_LOG_INFO); // Set longer time out, and ignore user abort if (!ini_get('safe_mode')) { @set_time_limit($aConf['maintenance']['timeLimitScripts']); @ignore_user_abort(true); } // Run the following code as the "Maintenance" user OA_Permission::switchToSystemProcessUser('Maintenance'); // Ensure the the current time is registered with the OA_ServiceLocator $oServiceLocator =& OA_ServiceLocator::instance(); $oDate =& $oServiceLocator->get('now'); if (!$oDate) { // Record the current time, and register with the OA_ServiceLocator $oDate = new Date(); $oServiceLocator->register('now', $oDate); } $this->aComponents = OX_Component::getListOfRegisteredComponentsForHook('addMaintenanceStatisticsTask'); // addMaintenanceStatisticsTask hook if (!empty($this->aComponents) && is_array($this->aComponents)) { foreach ($this->aComponents as $componentId) { if ($obj = OX_Component::factoryByComponentIdentifier($componentId)) { $obj->beforeMse(); } } } // Initialise the task runner object, for storing/running the tasks $this->oTaskRunner = new OA_Task_Runner(); // Register this object as the controlling class for the process, // so that tasks run by the task runner can locate this class to // update the report, etc. $oServiceLocator =& OA_ServiceLocator::instance(); $oServiceLocator->register('Maintenance_Statistics_Controller', $this); // Create and register an instance of the OA_Dal_Maintenance_Statistics DAL // class for the following tasks to use if (!$oServiceLocator->get('OX_Dal_Maintenance_Statistics')) { $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDal = $oFactory->factory(); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); } // Add the task to set the update requirements $oSetUpdateRequirements = new OX_Maintenance_Statistics_Task_SetUpdateRequirements(); $this->oTaskRunner->addTask($oSetUpdateRequirements); // Add the task to migrate the bucket data into the statistics tables $oSummariseIntermediate = new OX_Maintenance_Statistics_Task_MigrateBucketData(); $this->oTaskRunner->addTask($oSummariseIntermediate); // Add the task to handle the de-duplication and rejection of empty conversions $oDeDuplicateConversions = new OX_Maintenance_Statistics_Task_DeDuplicateConversions(); $this->oTaskRunner->addTask($oDeDuplicateConversions); // Add the task to handle the updating of "intermediate" statistics with // conversion information, as a legacy issue until all code obtains // conversion data from the standard conversion statistics tables $oManageConversions = new OX_Maintenance_Statistics_Task_ManageConversions(); $this->oTaskRunner->addTask($oManageConversions); // Add the task to summarise the intermediate statistics into final form $oSummariseFinal = new OX_Maintenance_Statistics_Task_SummariseFinal(); $this->oTaskRunner->addTask($oSummariseFinal); // Add the task to log the completion of the task $oLogCompletion = new OX_Maintenance_Statistics_Task_LogCompletion(); $this->oTaskRunner->addTask($oLogCompletion); // Add the task to manage (enable/disable) campaigns $oManageCampaigns = new OX_Maintenance_Statistics_Task_ManageCampaigns(); $this->oTaskRunner->addTask($oManageCampaigns); // addMaintenanceStatisticsTask hook if (!empty($this->aComponents) && is_array($this->aComponents)) { foreach ($this->aComponents as $componentId) { if ($obj = OX_Component::factoryByComponentIdentifier($componentId)) { $this->oTaskRunner->addTask($obj->addMaintenanceStatisticsTask(), $obj->getExistingClassName(), $obj->getOrder()); } } } // Run the MSE process tasks $this->oTaskRunner->runTasks(); // addMaintenanceStatisticsTask hook if (!empty($this->aComponents) && is_array($this->aComponents)) { foreach ($this->aComponents as $componentId) { if ($obj = OX_Component::factoryByComponentIdentifier($componentId)) { $obj->afterMse(); } } } // Return to the "normal" user OA_Permission::switchToSystemProcessUser(); // Log the end of the process OA::debug('Maintenance Statistics Engine Completed (Started at ' . $oDate->format('%Y-%m-%d %H:%M:%S') . ' ' . $oDate->tz->getShortName() . ')', PEAR_LOG_INFO); OA::switchLogIdent(); }
/** * Tests the saveSummary() method. * * Requirements: * Test 1: Test with no data. * Test 2: Test a single day summarisation. * Test 3: Test multi-day summarisation. */ function testSaveSummary() { $aConf =& $GLOBALS['_MAX']['CONF']; $oDbh =& OA_DB::singleton(); $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDalMaintenanceStatistics = $oFactory->factory(); // Test 1 $start = new Date('2004-06-06 12:00:00'); $end = new Date('2004-06-06 12:29:59'); $aActionTypes = array('types' => array(0 => 'request', 1 => 'impression', 2 => 'click'), 'connections' => array(1 => MAX_CONNECTION_AD_IMPRESSION, 2 => MAX_CONNECTION_AD_CLICK)); $oDalMaintenanceStatistics->saveSummary($start, $end, $aActionTypes, 'data_intermediate_ad', 'data_summary_ad_hourly'); $query = "\n SELECT\n COUNT(*) AS number\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true); $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['number'], 0); // Test 2 // Insert the test data $this->_insertTestSaveSummaryPlacement(); $this->_insertTestSaveSummaryAd(); $this->_insertTestSaveSummaryZone(); $query = "\n INSERT INTO\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_intermediate_ad'], true) . "\n (\n date_time, operation_interval, operation_interval_id, interval_start, interval_end,\n ad_id, creative_id, zone_id, impressions, clicks, conversions, total_basket_value, total_num_items\n )\n VALUES\n (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $aTypes = array('timestamp', 'integer', 'integer', 'timestamp', 'timestamp', 'integer', 'integer', 'integer', 'integer', 'integer', 'integer', 'integer', 'integer'); $st = $oDbh->prepare($query, $aTypes, MDB2_PREPARE_MANIP); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 1, 1, 1, 1, 1, 1, 1, 0); $rows = $st->execute($aData); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 1, 2, 1, 1, 1, 1, 1, 0); $rows = $st->execute($aData); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 1, 2, 1, 1, 1, 1, 1, 0); $rows = $st->execute($aData); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 2, 1, 1, 1, 1, 0, 0, 0); $rows = $st->execute($aData); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 3, 1, 2, 1, 1, 0, 0, 0); $rows = $st->execute($aData); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 4, 1, 3, 1, 1, 5, 0, 0); $rows = $st->execute($aData); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 4, 1, 4, 1, 1, 5, 0, 0); $rows = $st->execute($aData); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 4, 1, 5, 1, 1, 5, 100, 1); $rows = $st->execute($aData); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 4, 1, 6, 1, 1, 5, 100, 3); $rows = $st->execute($aData); // Test $start = new Date('2004-06-06 18:00:00'); $end = new Date('2004-06-06 18:29:59'); $oDalMaintenanceStatistics->saveSummary($start, $end, $aActionTypes, 'data_intermediate_ad', 'data_summary_ad_hourly'); $query = "\n SELECT\n COUNT(*) AS number\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true); $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['number'], 8); $query = "\n SELECT\n *\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true) . "\n WHERE\n ad_id = 1\n AND creative_id = 1"; $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['date_time'], '2004-06-06 18:00:00'); $this->assertEqual($aRow['zone_id'], 1); $this->assertEqual($aRow['impressions'], 1); $this->assertEqual($aRow['clicks'], 1); $this->assertEqual($aRow['conversions'], 1); $this->assertEqual($aRow['total_basket_value'], 1); $this->assertEqual($aRow['total_revenue'], 5); $query = "\n SELECT\n *\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true) . "\n WHERE\n ad_id = 1\n AND creative_id = 2"; $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['date_time'], '2004-06-06 18:00:00'); $this->assertEqual($aRow['zone_id'], 1); $this->assertEqual($aRow['impressions'], 2); $this->assertEqual($aRow['clicks'], 2); $this->assertEqual($aRow['conversions'], 2); $this->assertEqual($aRow['total_basket_value'], 2); $this->assertEqual($aRow['total_revenue'], 10); $query = "\n SELECT\n *\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true) . "\n WHERE\n ad_id = 2"; $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['date_time'], '2004-06-06 18:00:00'); $this->assertEqual($aRow['creative_id'], 1); $this->assertEqual($aRow['zone_id'], 1); $this->assertEqual($aRow['impressions'], 1); $this->assertEqual($aRow['clicks'], 1); $this->assertEqual($aRow['conversions'], 0); $this->assertEqual($aRow['total_basket_value'], 0); $this->assertEqual($aRow['total_revenue'], 2); $query = "\n SELECT\n *\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true) . "\n WHERE\n ad_id = 3"; $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['date_time'], '2004-06-06 18:00:00'); $this->assertEqual($aRow['creative_id'], 1); $this->assertEqual($aRow['zone_id'], 2); $this->assertEqual($aRow['impressions'], 1); $this->assertEqual($aRow['clicks'], 1); $this->assertEqual($aRow['conversions'], 0); $this->assertEqual($aRow['total_basket_value'], 0); $this->assertEqual($aRow['total_revenue'], 0); $query = "\n SELECT\n *\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true) . "\n WHERE\n ad_id = 4\n ORDER BY\n zone_id"; $rc = $oDbh->query($query); $this->assertEqual($rc->numRows(), 4); $aRow = $rc->fetchRow(); $this->assertEqual($aRow['date_time'], '2004-06-06 18:00:00'); $this->assertEqual($aRow['creative_id'], 1); $this->assertEqual($aRow['zone_id'], 3); $this->assertEqual($aRow['impressions'], 1); $this->assertEqual($aRow['clicks'], 1); $this->assertEqual($aRow['conversions'], 5); $this->assertEqual($aRow['total_basket_value'], 0); $this->assertEqual($aRow['total_revenue'], 20); $aRow = $rc->fetchRow(); $this->assertEqual($aRow['date_time'], '2004-06-06 18:00:00'); $this->assertEqual($aRow['creative_id'], 1); $this->assertEqual($aRow['zone_id'], 4); $this->assertEqual($aRow['impressions'], 1); $this->assertEqual($aRow['clicks'], 1); $this->assertEqual($aRow['conversions'], 5); $this->assertEqual($aRow['total_basket_value'], 0); $this->assertEqual($aRow['total_revenue'], 20); $aRow = $rc->fetchRow(); $this->assertEqual($aRow['date_time'], '2004-06-06 18:00:00'); $this->assertEqual($aRow['creative_id'], 1); $this->assertEqual($aRow['zone_id'], 5); $this->assertEqual($aRow['impressions'], 1); $this->assertEqual($aRow['clicks'], 1); $this->assertEqual($aRow['conversions'], 5); $this->assertEqual($aRow['total_basket_value'], 100); $this->assertEqual($aRow['total_revenue'], 20); $aRow = $rc->fetchRow(); $this->assertEqual($aRow['date_time'], '2004-06-06 18:00:00'); $this->assertEqual($aRow['creative_id'], 1); $this->assertEqual($aRow['zone_id'], 6); $this->assertEqual($aRow['impressions'], 1); $this->assertEqual($aRow['clicks'], 1); $this->assertEqual($aRow['conversions'], 5); $this->assertEqual($aRow['total_basket_value'], 100); $this->assertEqual($aRow['total_revenue'], 20); TestEnv::restoreEnv(); // Test 3 // Insert the test data $this->_insertTestSaveSummaryPlacement(); $this->_insertTestSaveSummaryAd(); $this->_insertTestSaveSummaryZone(); $aData = array('2004-06-06 18:00:00', 30, 36, '2004-06-06 18:00:00', '2004-06-06 18:29:59', 1, 1, 1, 1, 1, 1, 1); $rows = $st->execute($aData); $aData = array('2004-06-07 18:00:00', 30, 36, '2004-06-07 18:00:00', '2004-06-07 18:29:59', 1, 2, 1, 1, 1, 1, 1); $rows = $st->execute($aData); $aData = array('2004-06-07 18:00:00', 30, 36, '2004-06-07 18:00:00', '2004-06-07 18:29:59', 1, 2, 1, 1, 1, 1, 1); $rows = $st->execute($aData); $aData = array('2004-06-08 18:00:00', 30, 36, '2004-06-08 18:00:00', '2004-06-08 18:29:59', 2, 1, 1, 1, 1, 0, 0); $rows = $st->execute($aData); // Test $start = new Date('2004-06-06 18:00:00'); $end = new Date('2004-06-08 18:29:59'); $oDalMaintenanceStatistics->saveSummary($start, $end, $aActionTypes, 'data_intermediate_ad', 'data_summary_ad_hourly'); $query = "\n SELECT\n COUNT(*) AS number\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true); $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['number'], 3); $query = "\n SELECT\n *\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true) . "\n WHERE\n ad_id = 1\n AND creative_id = 1"; $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['date_time'], '2004-06-06 18:00:00'); $this->assertEqual($aRow['zone_id'], 1); $this->assertEqual($aRow['impressions'], 1); $this->assertEqual($aRow['clicks'], 1); $this->assertEqual($aRow['conversions'], 1); $this->assertEqual($aRow['total_basket_value'], 1); $this->assertEqual($aRow['total_revenue'], 5); $query = "\n SELECT\n *\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true) . "\n WHERE\n ad_id = 1\n AND creative_id = 2"; $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['date_time'], '2004-06-07 18:00:00'); $this->assertEqual($aRow['zone_id'], 1); $this->assertEqual($aRow['impressions'], 2); $this->assertEqual($aRow['clicks'], 2); $this->assertEqual($aRow['conversions'], 2); $this->assertEqual($aRow['total_basket_value'], 2); $this->assertEqual($aRow['total_revenue'], 10); $query = "\n SELECT\n *\n FROM\n " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['data_summary_ad_hourly'], true) . "\n WHERE\n ad_id = 2"; $aRow = $oDbh->queryRow($query); $this->assertEqual($aRow['date_time'], '2004-06-08 18:00:00'); $this->assertEqual($aRow['creative_id'], 1); $this->assertEqual($aRow['zone_id'], 1); $this->assertEqual($aRow['impressions'], 1); $this->assertEqual($aRow['clicks'], 1); $this->assertEqual($aRow['conversions'], 0); $this->assertEqual($aRow['total_basket_value'], 0); $this->assertEqual($aRow['total_revenue'], 2); TestEnv::restoreEnv(); TestEnv::restoreConfig(); }
/** * Test the creation. */ function testCreate() { $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $classname = $oFactory->deriveClassName(); $this->assertEqual($classname, 'OX_Dal_Maintenance_Statistics_' . ucfirst(strtolower($this->dbType))); }
/** * A method to test the summariseBucketsAggregate() method. */ function testSummariseBucketsAggregate() { $aConf =& $GLOBALS['_MAX']['CONF']; $aConf['maintenance']['operationInterval'] = 60; // Prepare standard test parameters $statisticsTableName = $aConf['table']['prefix'] . 'data_intermediate_ad'; $aMigrationMaps = array(0 => array('method' => 'aggregate', 'bucketTable' => $aConf['table']['prefix'] . 'data_bkt_r', 'dateTimeColumn' => 'interval_start', 'groupSource' => array(0 => 'interval_start', 1 => 'creative_id', 2 => 'zone_id'), 'groupDestination' => array(0 => 'date_time', 1 => 'ad_id', 2 => 'zone_id'), 'sumSource' => array(0 => 'count'), 'sumDestination' => array(0 => 'requests'), 'sumDefault' => array(0 => 0)), 1 => array('method' => 'aggregate', 'bucketTable' => $aConf['table']['prefix'] . 'data_bkt_m', 'dateTimeColumn' => 'interval_start', 'groupSource' => array(0 => 'interval_start', 1 => 'creative_id', 2 => 'zone_id'), 'groupDestination' => array(0 => 'date_time', 1 => 'ad_id', 2 => 'zone_id'), 'sumSource' => array(0 => 'count'), 'sumDestination' => array(0 => 'impressions'), 'sumDefault' => array(0 => 0)), 2 => array('method' => 'aggregate', 'bucketTable' => $aConf['table']['prefix'] . 'data_bkt_c', 'dateTimeColumn' => 'interval_start', 'groupSource' => array(0 => 'interval_start', 1 => 'creative_id', 2 => 'zone_id'), 'groupDestination' => array(0 => 'date_time', 1 => 'ad_id', 2 => 'zone_id'), 'sumSource' => array(0 => 'count'), 'sumDestination' => array(0 => 'clicks'), 'sumDefault' => array(0 => 0))); $aDates = array('start' => new Date('2008-08-21 09:00:00'), 'end' => new Date('2008-08-21 09:59:59')); // Prepare the DAL object $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDalMaintenanceStatistics = $oFactory->factory(); $oNowDate = new Date(); $aExtras = array('operation_interval' => $aConf['maintenance']['operationInterval'], 'operation_interval_id' => OX_OperationInterval::convertDateToOperationIntervalID($aDates['start']), 'interval_start' => $oDalMaintenanceStatistics->oDbh->quote($aDates['start']->format('%Y-%m-%d %H:%M:%S'), 'timestamp') . $oDalMaintenanceStatistics->timestampCastString, 'interval_end' => $oDalMaintenanceStatistics->oDbh->quote($aDates['end']->format('%Y-%m-%d %H:%M:%S'), 'timestamp') . $oDalMaintenanceStatistics->timestampCastString, 'creative_id' => 0, 'updated' => $oDalMaintenanceStatistics->oDbh->quote($oNowDate->format('%Y-%m-%d %H:%M:%S'), 'timestamp') . $oDalMaintenanceStatistics->timestampCastString); // Test 1: Test with an incorrect method name in the mapping array $savedValue = $aMigrationMaps[0]['method']; $aMigrationMaps[0]['method'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with migration map index '0' having method 'foo' != 'aggregate'."); $aMigrationMaps[0]['method'] = $savedValue; // Test 2: Test with a different number of groupSource and groupDestination columns $savedValue = $aMigrationMaps[0]['groupSource'][1]; unset($aMigrationMaps[0]['groupSource'][1]); $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with migration map index '0' having different number of 'groupSource' and 'groupDestination' columns."); $aMigrationMaps[0]['groupSource'][1] = $savedValue; // Test 3: Test with a different number of sumSource and sumDestination columns $savedValue = $aMigrationMaps[1]['sumSource'][0]; unset($aMigrationMaps[1]['sumSource'][0]); $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with migration map index '1' having different number of 'sumSource' and 'sumDestination' columns."); $aMigrationMaps[1]['sumSource'][0] = $savedValue; // Test 4: Test with a different number of sumSource and sumDefault columns $savedValue = $aMigrationMaps[2]['sumDefault'][0]; unset($aMigrationMaps[2]['sumDefault'][0]); $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with migration map index '2' having different number of 'sumSource' and 'sumDefault' columns."); $aMigrationMaps[2]['sumDefault'][0] = $savedValue; // Test 5: Test with a different groupDestination sets $savedValue = $aMigrationMaps[2]['groupDestination'][0]; $aMigrationMaps[2]['groupDestination'][0] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with migration map indexes '0' and '2' having different 'groupDestination' arrays."); $aMigrationMaps[2]['groupDestination'][0] = $savedValue; // Test 6: Test with date parameters that are not really dates $savedValue = $aDates['start']; $aDates['start'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with invalid start/end date parameters -- not Date objects."); $aDates['start'] = $savedValue; $savedValue = $aDates['end']; $aDates['end'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with invalid start/end date parameters -- not Date objects."); $aDates['end'] = $savedValue; // Test 7: Test with invalid start/end dates $savedValue = $aDates['start']; $aDates['start'] = new Date('2008-08-21 08:00:00'); $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with invalid start/end date parameters -- not operation interval bounds."); $aDates['start'] = $savedValue; $savedValue = $aDates['end']; $aDates['end'] = new Date('2008-08-22 09:59:59'); $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with invalid start/end date parameters -- not operation interval bounds."); $aDates['end'] = $savedValue; // Test 8: Test with an invalid statistics table name $savedValue = $statisticsTableName; $statisticsTableName = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with invalid statistics table 'foo'."); $statisticsTableName = $savedValue; // Test 9: Test with no data_bkt_r table in the database $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsAggregate() called with migration map index '0' having invalid bucket table '{$aConf['table']['prefix']}data_bkt_r'."); // Install the openXDeliveryLog plugin, which will create the // data_bkt_r, data_bkt_m and data_bkt_c tables required for testing TestEnv::installPluginPackage('openXDeliveryLog', false); // Test 10: Test with all tables present, but no data $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertEqual($result, 0); // Insert some data into the data_bkt_r, data_bkt_m and // data_bkt_c tables in the incorrect operation interval $oData_bkt_r = OA_Dal::factoryDO('data_bkt_r'); $oData_bkt_r->interval_start = '2008-08-21 08:00:00'; $oData_bkt_r->creative_id = 1; $oData_bkt_r->zone_id = 2; $oData_bkt_r->count = 10; DataGenerator::generateOne($oData_bkt_r); $oData_bkt_m = OA_Dal::factoryDO('data_bkt_m'); $oData_bkt_m->interval_start = '2008-08-21 08:00:00'; $oData_bkt_m->creative_id = 1; $oData_bkt_m->zone_id = 2; $oData_bkt_m->count = 9; DataGenerator::generateOne($oData_bkt_m); $oData_bkt_c = OA_Dal::factoryDO('data_bkt_c'); $oData_bkt_c->interval_start = '2008-08-21 08:00:00'; $oData_bkt_c->creative_id = 1; $oData_bkt_c->zone_id = 2; $oData_bkt_c->count = 1; DataGenerator::generateOne($oData_bkt_c); // Test 11: Test with data in the incorrect operation interval $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertEqual($result, 0); // Insert some data into the data_bkt_r, data_bkt_m and // data_bkt_c tables in the incorrect operation interval $oData_bkt_r = OA_Dal::factoryDO('data_bkt_r'); $oData_bkt_r->interval_start = '2008-08-21 09:00:00'; $oData_bkt_r->creative_id = 1; $oData_bkt_r->zone_id = 2; $oData_bkt_r->count = 10; DataGenerator::generateOne($oData_bkt_r); $oData_bkt_m = OA_Dal::factoryDO('data_bkt_m'); $oData_bkt_m->interval_start = '2008-08-21 09:00:00'; $oData_bkt_m->creative_id = 1; $oData_bkt_m->zone_id = 2; $oData_bkt_m->count = 9; DataGenerator::generateOne($oData_bkt_m); $oData_bkt_c = OA_Dal::factoryDO('data_bkt_c'); $oData_bkt_c->interval_start = '2008-08-21 09:00:00'; $oData_bkt_c->creative_id = 1; $oData_bkt_c->zone_id = 2; $oData_bkt_c->count = 1; DataGenerator::generateOne($oData_bkt_c); // Test 12: Test with data in the correct operation interval $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertEqual($result, 1); $oData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $oData_intermediate_ad->find(); $rows = $oData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $oData_intermediate_ad->ad_id = 1; $oData_intermediate_ad->find(); $rows = $oData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad->fetch(); $this->assertEqual($oData_intermediate_ad->date_time, '2008-08-21 09:00:00'); $this->assertEqual($oData_intermediate_ad->operation_interval, $aConf['maintenance']['operationInterval']); $this->assertEqual($oData_intermediate_ad->operation_interval_id, OX_OperationInterval::convertDateToOperationIntervalID($aDates['start'])); $this->assertEqual($oData_intermediate_ad->interval_start, '2008-08-21 09:00:00'); $this->assertEqual($oData_intermediate_ad->interval_end, '2008-08-21 09:59:59'); $this->assertEqual($oData_intermediate_ad->ad_id, 1); $this->assertEqual($oData_intermediate_ad->creative_id, 0); $this->assertEqual($oData_intermediate_ad->zone_id, 2); $this->assertEqual($oData_intermediate_ad->requests, 10); $this->assertEqual($oData_intermediate_ad->impressions, 9); $this->assertEqual($oData_intermediate_ad->clicks, 1); // Clean up generated data DataGenerator::cleanUp(); // Insert some new data into the data_bkt_r, data_bkt_m and // data_bkt_c tables in the incorrect operation interval $oData_bkt_r = OA_Dal::factoryDO('data_bkt_r'); $oData_bkt_r->interval_start = '2008-08-21 09:00:00'; $oData_bkt_r->creative_id = 2; $oData_bkt_r->zone_id = 2; $oData_bkt_r->count = 10; DataGenerator::generateOne($oData_bkt_r); $oData_bkt_m = OA_Dal::factoryDO('data_bkt_m'); $oData_bkt_m->interval_start = '2008-08-21 09:00:00'; $oData_bkt_m->creative_id = 2; $oData_bkt_m->zone_id = 2; $oData_bkt_m->count = 9; DataGenerator::generateOne($oData_bkt_m); $oData_bkt_c = OA_Dal::factoryDO('data_bkt_c'); $oData_bkt_c->interval_start = '2008-08-21 09:00:00'; $oData_bkt_c->creative_id = 2; $oData_bkt_c->zone_id = 2; $oData_bkt_c->count = 1; DataGenerator::generateOne($oData_bkt_c); $oData_bkt_r = OA_Dal::factoryDO('data_bkt_r'); $oData_bkt_r->interval_start = '2008-08-21 09:00:00'; $oData_bkt_r->creative_id = 11; $oData_bkt_r->zone_id = 12; $oData_bkt_r->count = 10000; DataGenerator::generateOne($oData_bkt_r); $oData_bkt_m = OA_Dal::factoryDO('data_bkt_m'); $oData_bkt_m->interval_start = '2008-08-21 09:00:00'; $oData_bkt_m->creative_id = 11; $oData_bkt_m->zone_id = 12; $oData_bkt_m->count = 9960; DataGenerator::generateOne($oData_bkt_m); $oData_bkt_c = OA_Dal::factoryDO('data_bkt_c'); $oData_bkt_c->interval_start = '2008-08-21 09:00:00'; $oData_bkt_c->creative_id = 11; $oData_bkt_c->zone_id = 12; $oData_bkt_c->count = 500; DataGenerator::generateOne($oData_bkt_c); // Test 13: Test with new data in the correct operation interval $result = $oDalMaintenanceStatistics->summariseBucketsAggregate($statisticsTableName, $aMigrationMaps, $aDates, $aExtras); $this->assertEqual($result, 2); $oData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $oData_intermediate_ad->find(); $rows = $oData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 3); $oData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $oData_intermediate_ad->ad_id = 1; $oData_intermediate_ad->find(); $rows = $oData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad->fetch(); $this->assertEqual($oData_intermediate_ad->date_time, '2008-08-21 09:00:00'); $this->assertEqual($oData_intermediate_ad->operation_interval, $aConf['maintenance']['operationInterval']); $this->assertEqual($oData_intermediate_ad->operation_interval_id, OX_OperationInterval::convertDateToOperationIntervalID($aDates['start'])); $this->assertEqual($oData_intermediate_ad->interval_start, '2008-08-21 09:00:00'); $this->assertEqual($oData_intermediate_ad->interval_end, '2008-08-21 09:59:59'); $this->assertEqual($oData_intermediate_ad->ad_id, 1); $this->assertEqual($oData_intermediate_ad->creative_id, 0); $this->assertEqual($oData_intermediate_ad->zone_id, 2); $this->assertEqual($oData_intermediate_ad->requests, 10); $this->assertEqual($oData_intermediate_ad->impressions, 9); $this->assertEqual($oData_intermediate_ad->clicks, 1); $oData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $oData_intermediate_ad->ad_id = 2; $oData_intermediate_ad->find(); $rows = $oData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad->fetch(); $this->assertEqual($oData_intermediate_ad->date_time, '2008-08-21 09:00:00'); $this->assertEqual($oData_intermediate_ad->operation_interval, $aConf['maintenance']['operationInterval']); $this->assertEqual($oData_intermediate_ad->operation_interval_id, OX_OperationInterval::convertDateToOperationIntervalID($aDates['start'])); $this->assertEqual($oData_intermediate_ad->interval_start, '2008-08-21 09:00:00'); $this->assertEqual($oData_intermediate_ad->interval_end, '2008-08-21 09:59:59'); $this->assertEqual($oData_intermediate_ad->ad_id, 2); $this->assertEqual($oData_intermediate_ad->creative_id, 0); $this->assertEqual($oData_intermediate_ad->zone_id, 2); $this->assertEqual($oData_intermediate_ad->requests, 10); $this->assertEqual($oData_intermediate_ad->impressions, 9); $this->assertEqual($oData_intermediate_ad->clicks, 1); $oData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $oData_intermediate_ad->ad_id = 11; $oData_intermediate_ad->find(); $rows = $oData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad->fetch(); $this->assertEqual($oData_intermediate_ad->date_time, '2008-08-21 09:00:00'); $this->assertEqual($oData_intermediate_ad->operation_interval, $aConf['maintenance']['operationInterval']); $this->assertEqual($oData_intermediate_ad->operation_interval_id, OX_OperationInterval::convertDateToOperationIntervalID($aDates['start'])); $this->assertEqual($oData_intermediate_ad->interval_start, '2008-08-21 09:00:00'); $this->assertEqual($oData_intermediate_ad->interval_end, '2008-08-21 09:59:59'); $this->assertEqual($oData_intermediate_ad->ad_id, 11); $this->assertEqual($oData_intermediate_ad->creative_id, 0); $this->assertEqual($oData_intermediate_ad->zone_id, 12); $this->assertEqual($oData_intermediate_ad->requests, 10000); $this->assertEqual($oData_intermediate_ad->impressions, 9960); $this->assertEqual($oData_intermediate_ad->clicks, 500); // Clean up generated data DataGenerator::cleanUp(); // Also clean up the data migrated into the statistics table $oData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $oData_intermediate_ad->data_intermediate_ad_id = 1; $oData_intermediate_ad->find(); $oData_intermediate_ad->delete(); $oData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $oData_intermediate_ad->data_intermediate_ad_id = 2; $oData_intermediate_ad->find(); $oData_intermediate_ad->delete(); $oData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $oData_intermediate_ad->data_intermediate_ad_id = 3; $oData_intermediate_ad->find(); $oData_intermediate_ad->delete(); // Uninstall the installed plugin TestEnv::uninstallPluginPackage('openXDeliveryLog', false); // Restore the test environment configuration TestEnv::restoreConfig(); }
/** * A method to test the main run() method. */ function testRun() { $aConf =& $GLOBALS['_MAX']['CONF']; $aConf['maintenance']['operationInterval'] = 60; $oServiceLocator =& OA_ServiceLocator::instance(); $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDalMaintenanceStatsticsClassName = $oFactory->deriveClassName(); // Test 1: Run, with the migration required but with no plugins installed $oNowDate = new Date('2008-08-28 09:01:00'); $oServiceLocator->register('now', $oNowDate); $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oMaintenanceStatistics->updateIntermediate = true; $oMaintenanceStatistics->oLastDateIntermediate = new Date('2008-08-28 07:59:59'); $oMaintenanceStatistics->oUpdateIntermediateToDate = new Date('2008-08-28 08:59:59'); Mock::generatePartial($oDalMaintenanceStatsticsClassName, 'MockOX_Dal_Maintenance_Statistics_Test_1', array('summariseBucketsRaw', 'summariseBucketsRawSupplementary', 'summariseBucketsAggregate', 'migrateRawRequests', 'migrateRawImpressions', 'migrateRawClicks')); $oDal = new MockOX_Dal_Maintenance_Statistics_Test_1($this); $oDal->expectNever('summariseBucketsRaw'); $oDal->expectNever('summariseBucketsRawSupplementary'); $oDal->expectNever('summariseBucketsAggregate'); $oDal->expectNever('migrateRawRequests'); $oDal->expectNever('migrateRawImpressions'); $oDal->expectNever('migrateRawClicks'); $oDal->OX_Dal_Maintenance_Statistics(); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); $oSummariseIntermediate = new OX_Maintenance_Statistics_Task_MigrateBucketData(); $oSummariseIntermediate->run(); $oDal =& $oServiceLocator->get('OX_Dal_Maintenance_Statistics'); $oDal->tally(); // Create the "application_variable" table required for installing the plugin $oTables =& OA_DB_Table_Core::singleton(); $oTables->createTable('application_variable'); // Setup the default OpenX delivery logging plugin for the next test TestEnv::installPluginPackage('openXDeliveryLog', false); // Test 2: Run, with plugins installed, but with the migration not required $oNowDate = new Date('2008-08-28 09:01:00'); $oServiceLocator->register('now', $oNowDate); $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oMaintenanceStatistics->updateIntermediate = false; $oServiceLocator->register('Maintenance_Statistics_Controller', $oMaintenanceStatistics); Mock::generatePartial($oDalMaintenanceStatsticsClassName, 'MockOX_Dal_Maintenance_Statistics_Test_2', array('summariseBucketsRaw', 'summariseBucketsRawSupplementary', 'summariseBucketsAggregate', 'migrateRawRequests', 'migrateRawImpressions', 'migrateRawClicks')); $oDal = new MockOX_Dal_Maintenance_Statistics_Test_2($this); $oDal->expectNever('summariseBucketsRaw'); $oDal->expectNever('summariseBucketsRawSupplementary'); $oDal->expectNever('summariseBucketsAggregate'); $oDal->expectNever('migrateRawRequests'); $oDal->expectNever('migrateRawImpressions'); $oDal->expectNever('migrateRawClicks'); $oDal->OX_Dal_Maintenance_Statistics(); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); $oSummariseIntermediate = new OX_Maintenance_Statistics_Task_MigrateBucketData(); $oSummariseIntermediate->run(); $oDal =& $oServiceLocator->get('OX_Dal_Maintenance_Statistics'); $oDal->tally(); // Test 3: Run, with plugins installed and with the migration required for a single // operation interval $oNowDate = new Date('2008-08-28 09:01:00'); $oServiceLocator->register('now', $oNowDate); $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oMaintenanceStatistics->updateIntermediate = true; $oMaintenanceStatistics->oLastDateIntermediate = new Date('2008-08-28 07:59:59'); $oMaintenanceStatistics->oUpdateIntermediateToDate = new Date('2008-08-28 08:59:59'); $oServiceLocator->register('Maintenance_Statistics_Controller', $oMaintenanceStatistics); Mock::generatePartial($oDalMaintenanceStatsticsClassName, 'MockOX_Dal_Maintenance_Statistics_Test_3', array('summariseBucketsRaw', 'summariseBucketsRawSupplementary', 'summariseBucketsAggregate', 'migrateRawRequests', 'migrateRawImpressions', 'migrateRawClicks')); $oDal = new MockOX_Dal_Maintenance_Statistics_Test_3($this); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogConversion', 'logConversion'); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectOnce('summariseBucketsRaw', array($aConf['table']['prefix'] . 'data_intermediate_ad_connection', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogConversion', 'logConversionVariable'); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectOnce('summariseBucketsRawSupplementary', array($aConf['table']['prefix'] . 'data_intermediate_ad_variable_value', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $aMap = array(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogClick', 'logClick'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogImpression', 'logImpression'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogRequest', 'logRequest'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectOnce('summariseBucketsAggregate', array($aConf['table']['prefix'] . 'data_intermediate_ad', $aMap, array('start' => $oStartDate, 'end' => $oEndDate), array('operation_interval' => '60', 'operation_interval_id' => OX_OperationInterval::convertDateToOperationIntervalID($oStartDate), 'interval_start' => "'2008-08-28 08:00:00'", 'interval_end' => "'2008-08-28 08:59:59'", 'creative_id' => 0, 'updated' => "'2008-08-28 09:01:00'"))); $oDal->expectNever('migrateRawRequests'); $oDal->expectNever('migrateRawImpressions'); $oDal->expectNever('migrateRawClicks'); $oDal->OX_Dal_Maintenance_Statistics(); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); $oSummariseIntermediate = new OX_Maintenance_Statistics_Task_MigrateBucketData(); $oSummariseIntermediate->run(); $oDal =& $oServiceLocator->get('OX_Dal_Maintenance_Statistics'); $oDal->tally(); // Test 4: Run, with plugins installed and with the migration required for a single // operation interval + migration of raw data set to occur $doApplication_variable = OA_Dal::factoryDO('application_variable'); $doApplication_variable->name = 'mse_process_raw'; $doApplication_variable->value = '1'; $doApplication_variable->insert(); $oNowDate = new Date('2008-08-28 09:01:00'); $oServiceLocator->register('now', $oNowDate); $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oMaintenanceStatistics->updateIntermediate = true; $oMaintenanceStatistics->oLastDateIntermediate = new Date('2008-08-28 07:59:59'); $oMaintenanceStatistics->oUpdateIntermediateToDate = new Date('2008-08-28 08:59:59'); $oServiceLocator->register('Maintenance_Statistics_Controller', $oMaintenanceStatistics); Mock::generatePartial($oDalMaintenanceStatsticsClassName, 'MockOX_Dal_Maintenance_Statistics_Test_4', array('summariseBucketsRaw', 'summariseBucketsRawSupplementary', 'summariseBucketsAggregate', 'migrateRawRequests', 'migrateRawImpressions', 'migrateRawClicks')); $oDal = new MockOX_Dal_Maintenance_Statistics_Test_4($this); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogConversion', 'logConversion'); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectOnce('summariseBucketsRaw', array($aConf['table']['prefix'] . 'data_intermediate_ad_connection', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogConversion', 'logConversionVariable'); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectOnce('summariseBucketsRawSupplementary', array($aConf['table']['prefix'] . 'data_intermediate_ad_variable_value', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $aMap = array(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogClick', 'logClick'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogImpression', 'logImpression'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogRequest', 'logRequest'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectOnce('summariseBucketsAggregate', array($aConf['table']['prefix'] . 'data_intermediate_ad', $aMap, array('start' => $oStartDate, 'end' => $oEndDate), array('operation_interval' => '60', 'operation_interval_id' => OX_OperationInterval::convertDateToOperationIntervalID($oStartDate), 'interval_start' => "'2008-08-28 08:00:00'", 'interval_end' => "'2008-08-28 08:59:59'", 'creative_id' => 0, 'updated' => "'2008-08-28 09:01:00'"))); $oDal->expectOnce('migrateRawRequests', array($oStartDate, $oEndDate)); $oDal->expectOnce('migrateRawImpressions', array($oStartDate, $oEndDate)); $oDal->expectOnce('migrateRawClicks', array($oStartDate, $oEndDate)); $oDal->OX_Dal_Maintenance_Statistics(); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); $oSummariseIntermediate = new OX_Maintenance_Statistics_Task_MigrateBucketData(); $oSummariseIntermediate->run(); $oDal =& $oServiceLocator->get('OX_Dal_Maintenance_Statistics'); $oDal->tally(); $doApplication_variable = OA_Dal::factoryDO('application_variable'); $doApplication_variable->name = 'mse_process_raw'; $doApplication_variable->value = '1'; $doApplication_variable->find(); $rows = $doApplication_variable->getRowCount(); $this->assertEqual($rows, 0); // Test 5: Run, with plugins installed and with the migration required for multiple // operation intervals $oNowDate = new Date('2008-08-28 11:01:00'); $oServiceLocator->register('now', $oNowDate); $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oMaintenanceStatistics->updateIntermediate = true; $oMaintenanceStatistics->oLastDateIntermediate = new Date('2008-08-28 07:59:59'); $oMaintenanceStatistics->oUpdateIntermediateToDate = new Date('2008-08-28 10:59:59'); $oServiceLocator->register('Maintenance_Statistics_Controller', $oMaintenanceStatistics); Mock::generatePartial($oDalMaintenanceStatsticsClassName, 'MockOX_Dal_Maintenance_Statistics_Test_5', array('summariseBucketsRaw', 'summariseBucketsRawSupplementary', 'summariseBucketsAggregate', 'migrateRawRequests', 'migrateRawImpressions', 'migrateRawClicks')); $oDal = new MockOX_Dal_Maintenance_Statistics_Test_5($this); $oDal->expectCallCount('summariseBucketsRaw', 3); $oDal->expectCallCount('summariseBucketsRawSupplementary', 3); $oDal->expectCallCount('summariseBucketsAggregate', 3); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogConversion', 'logConversion'); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(0, 'summariseBucketsRaw', array($aConf['table']['prefix'] . 'data_intermediate_ad_connection', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oStartDate = new Date('2008-08-28 08:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 10:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(1, 'summariseBucketsRaw', array($aConf['table']['prefix'] . 'data_intermediate_ad_connection', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oStartDate = new Date('2008-08-28 09:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 11:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(2, 'summariseBucketsRaw', array($aConf['table']['prefix'] . 'data_intermediate_ad_connection', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogConversion', 'logConversionVariable'); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(0, 'summariseBucketsRawSupplementary', array($aConf['table']['prefix'] . 'data_intermediate_ad_variable_value', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oStartDate = new Date('2008-08-28 08:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 10:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(1, 'summariseBucketsRawSupplementary', array($aConf['table']['prefix'] . 'data_intermediate_ad_variable_value', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oStartDate = new Date('2008-08-28 09:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 11:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(2, 'summariseBucketsRawSupplementary', array($aConf['table']['prefix'] . 'data_intermediate_ad_variable_value', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $aMap = array(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogClick', 'logClick'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogImpression', 'logImpression'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogRequest', 'logRequest'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(0, 'summariseBucketsAggregate', array($aConf['table']['prefix'] . 'data_intermediate_ad', $aMap, array('start' => $oStartDate, 'end' => $oEndDate), array('operation_interval' => '60', 'operation_interval_id' => OX_OperationInterval::convertDateToOperationIntervalID($oStartDate), 'interval_start' => "'2008-08-28 08:00:00'", 'interval_end' => "'2008-08-28 08:59:59'", 'creative_id' => 0, 'updated' => "'2008-08-28 11:01:00'"))); $oStartDate = new Date('2008-08-28 08:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 10:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(1, 'summariseBucketsAggregate', array($aConf['table']['prefix'] . 'data_intermediate_ad', $aMap, array('start' => $oStartDate, 'end' => $oEndDate), array('operation_interval' => '60', 'operation_interval_id' => OX_OperationInterval::convertDateToOperationIntervalID($oStartDate), 'interval_start' => "'2008-08-28 09:00:00'", 'interval_end' => "'2008-08-28 09:59:59'", 'creative_id' => 0, 'updated' => "'2008-08-28 11:01:00'"))); $oStartDate = new Date('2008-08-28 09:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 11:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(2, 'summariseBucketsAggregate', array($aConf['table']['prefix'] . 'data_intermediate_ad', $aMap, array('start' => $oStartDate, 'end' => $oEndDate), array('operation_interval' => '60', 'operation_interval_id' => OX_OperationInterval::convertDateToOperationIntervalID($oStartDate), 'interval_start' => "'2008-08-28 10:00:00'", 'interval_end' => "'2008-08-28 10:59:59'", 'creative_id' => 0, 'updated' => "'2008-08-28 11:01:00'"))); $oDal->expectNever('migrateRawRequests'); $oDal->expectNever('migrateRawImpressions'); $oDal->expectNever('migrateRawClicks'); $oDal->OX_Dal_Maintenance_Statistics(); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); $oSummariseIntermediate = new OX_Maintenance_Statistics_Task_MigrateBucketData(); $oSummariseIntermediate->run(); $oDal =& $oServiceLocator->get('OX_Dal_Maintenance_Statistics'); $oDal->tally(); // Test 6: Run, with plugins installed and with the migration required for multiple // operation intervals + migration of raw data set to occur $doApplication_variable = OA_Dal::factoryDO('application_variable'); $doApplication_variable->name = 'mse_process_raw'; $doApplication_variable->value = '1'; $doApplication_variable->insert(); $oNowDate = new Date('2008-08-28 11:01:00'); $oServiceLocator->register('now', $oNowDate); $oMaintenanceStatistics = new OX_Maintenance_Statistics(); $oMaintenanceStatistics->updateIntermediate = true; $oMaintenanceStatistics->oLastDateIntermediate = new Date('2008-08-28 07:59:59'); $oMaintenanceStatistics->oUpdateIntermediateToDate = new Date('2008-08-28 10:59:59'); $oServiceLocator->register('Maintenance_Statistics_Controller', $oMaintenanceStatistics); Mock::generatePartial($oDalMaintenanceStatsticsClassName, 'MockOX_Dal_Maintenance_Statistics_Test_6', array('summariseBucketsRaw', 'summariseBucketsRawSupplementary', 'summariseBucketsAggregate', 'migrateRawRequests', 'migrateRawImpressions', 'migrateRawClicks')); $oDal = new MockOX_Dal_Maintenance_Statistics_Test_6($this); $oDal->expectCallCount('summariseBucketsRaw', 3); $oDal->expectCallCount('summariseBucketsRawSupplementary', 3); $oDal->expectCallCount('summariseBucketsAggregate', 3); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogConversion', 'logConversion'); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(0, 'summariseBucketsRaw', array($aConf['table']['prefix'] . 'data_intermediate_ad_connection', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oStartDate = new Date('2008-08-28 08:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 10:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(1, 'summariseBucketsRaw', array($aConf['table']['prefix'] . 'data_intermediate_ad_connection', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oStartDate = new Date('2008-08-28 09:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 11:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(2, 'summariseBucketsRaw', array($aConf['table']['prefix'] . 'data_intermediate_ad_connection', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogConversion', 'logConversionVariable'); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(0, 'summariseBucketsRawSupplementary', array($aConf['table']['prefix'] . 'data_intermediate_ad_variable_value', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oStartDate = new Date('2008-08-28 08:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 10:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(1, 'summariseBucketsRawSupplementary', array($aConf['table']['prefix'] . 'data_intermediate_ad_variable_value', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $oStartDate = new Date('2008-08-28 09:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 11:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(2, 'summariseBucketsRawSupplementary', array($aConf['table']['prefix'] . 'data_intermediate_ad_variable_value', $oComponent->getStatisticsMigration(), array('start' => $oStartDate, 'end' => $oEndDate))); $aMap = array(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogClick', 'logClick'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogImpression', 'logImpression'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oComponent =& OX_Component::factory('deliveryLog', 'oxLogRequest', 'logRequest'); $aMap[get_class($oComponent)] = $oComponent->getStatisticsMigration(); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(0, 'summariseBucketsAggregate', array($aConf['table']['prefix'] . 'data_intermediate_ad', $aMap, array('start' => $oStartDate, 'end' => $oEndDate), array('operation_interval' => '60', 'operation_interval_id' => OX_OperationInterval::convertDateToOperationIntervalID($oStartDate), 'interval_start' => "'2008-08-28 08:00:00'", 'interval_end' => "'2008-08-28 08:59:59'", 'creative_id' => 0, 'updated' => "'2008-08-28 11:01:00'"))); $oStartDate = new Date('2008-08-28 08:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 10:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(1, 'summariseBucketsAggregate', array($aConf['table']['prefix'] . 'data_intermediate_ad', $aMap, array('start' => $oStartDate, 'end' => $oEndDate), array('operation_interval' => '60', 'operation_interval_id' => OX_OperationInterval::convertDateToOperationIntervalID($oStartDate), 'interval_start' => "'2008-08-28 09:00:00'", 'interval_end' => "'2008-08-28 09:59:59'", 'creative_id' => 0, 'updated' => "'2008-08-28 11:01:00'"))); $oStartDate = new Date('2008-08-28 09:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 11:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(2, 'summariseBucketsAggregate', array($aConf['table']['prefix'] . 'data_intermediate_ad', $aMap, array('start' => $oStartDate, 'end' => $oEndDate), array('operation_interval' => '60', 'operation_interval_id' => OX_OperationInterval::convertDateToOperationIntervalID($oStartDate), 'interval_start' => "'2008-08-28 10:00:00'", 'interval_end' => "'2008-08-28 10:59:59'", 'creative_id' => 0, 'updated' => "'2008-08-28 11:01:00'"))); $oStartDate = new Date('2008-08-28 07:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 09:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(0, 'migrateRawRequests', array($oStartDate, $oEndDate)); $oDal->expectAt(0, 'migrateRawImpressions', array($oStartDate, $oEndDate)); $oDal->expectAt(0, 'migrateRawClicks', array($oStartDate, $oEndDate)); $oStartDate = new Date('2008-08-28 08:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 10:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(1, 'migrateRawRequests', array($oStartDate, $oEndDate)); $oDal->expectAt(1, 'migrateRawImpressions', array($oStartDate, $oEndDate)); $oDal->expectAt(1, 'migrateRawClicks', array($oStartDate, $oEndDate)); $oStartDate = new Date('2008-08-28 09:59:59'); $oStartDate->addSeconds(1); $oEndDate = new Date('2008-08-28 11:00:00'); $oEndDate->subtractSeconds(1); $oDal->expectAt(2, 'migrateRawRequests', array($oStartDate, $oEndDate)); $oDal->expectAt(2, 'migrateRawImpressions', array($oStartDate, $oEndDate)); $oDal->expectAt(2, 'migrateRawClicks', array($oStartDate, $oEndDate)); $oDal->OX_Dal_Maintenance_Statistics(); $oServiceLocator->register('OX_Dal_Maintenance_Statistics', $oDal); $oSummariseIntermediate = new OX_Maintenance_Statistics_Task_MigrateBucketData(); $oSummariseIntermediate->run(); $oDal =& $oServiceLocator->get('OX_Dal_Maintenance_Statistics'); $oDal->tally(); $doApplication_variable = OA_Dal::factoryDO('application_variable'); $doApplication_variable->name = 'mse_process_raw'; $doApplication_variable->value = '1'; $doApplication_variable->find(); $rows = $doApplication_variable->getRowCount(); $this->assertEqual($rows, 0); // Uninstall the installed plugins TestEnv::uninstallPluginPackage('openXDeliveryLog', false); // Reset the testing environment TestEnv::restoreEnv(); }
/** * The method to test the manageConversions() method. */ function testManageConversions() { // Test 0: Test that there is no data in the data_intermediate_ad table $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $doData_intermediate_ad->find(); $rows = $doData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 0); // Insert a variable tracker with no special purpose // Hacks the DB_DataObject so that the DataGenerator will not override // the NULL value that should be inserted into the database with an // auto generated value... $doVariables = OA_Dal::factoryDO('variables'); $doVariables->defaultValues['purpose'] = OX_DATAOBJECT_NULL; $variableId1 = DataGenerator::generateOne($doVariables); // Insert a basket value variable tracker $doVariables = OA_Dal::factoryDO('variables'); $doVariables->purpose = 'basket_value'; $variableId2 = DataGenerator::generateOne($doVariables); // Insert a number of items variable tracker $doVariables = OA_Dal::factoryDO('variables'); $doVariables->purpose = 'num_items'; $variableId3 = DataGenerator::generateOne($doVariables); // Test 1: Test with no data $aConf =& $GLOBALS['_MAX']['CONF']; $oDbh =& OA_DB::singleton(); $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDalMaintenanceStatistics = $oFactory->factory(); // Test 1 $oStart = new Date('2004-06-06 12:00:00'); $oEnd = new Date('2004-06-06 12:59:59'); $oDalMaintenanceStatistics->manageConversions($oStart, $oEnd); $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $doData_intermediate_ad->find(); $rows = $doData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 0); // Test 2: Test with data that is outside the range to manage $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 1; $doData_intermediate_ad_connection->server_raw_ip = 'singleDB'; $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 11:10:00'; $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 11:05:00'; $doData_intermediate_ad_connection->tracker_id = 500; $doData_intermediate_ad_connection->ad_id = 600; $doData_intermediate_ad_connection->zone_id = 100; $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $doData_intermediate_ad_connection->connection_window = 3600; $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $doData_intermediate_ad_connection->inside_window = 1; $connectionId1 = DataGenerator::generateOne($doData_intermediate_ad_connection); $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId1; $doData_intermediate_ad_variable_value->tracker_variable_id = $variableId1; $doData_intermediate_ad_variable_value->value = '12345'; DataGenerator::generateOne($doData_intermediate_ad_variable_value); $oStart = new Date('2004-06-06 12:00:00'); $oEnd = new Date('2004-06-06 12:59:59'); $oDalMaintenanceStatistics->manageConversions($oStart, $oEnd); $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $doData_intermediate_ad->find(); $rows = $doData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 0); // Test 3: Test with data that is inside the range to manage, // but with no corresponding data_intermediate_ad rows $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 2; $doData_intermediate_ad_connection->server_raw_ip = 'singleDB'; $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:10:00'; $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:05:00'; $doData_intermediate_ad_connection->tracker_id = 500; $doData_intermediate_ad_connection->ad_id = 600; $doData_intermediate_ad_connection->zone_id = 100; $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $doData_intermediate_ad_connection->connection_window = 3600; $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $doData_intermediate_ad_connection->inside_window = 1; $connectionId2 = DataGenerator::generateOne($doData_intermediate_ad_connection); $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 3; $doData_intermediate_ad_connection->server_raw_ip = 'singleDB'; $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:15:00'; $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:10:00'; $doData_intermediate_ad_connection->tracker_id = 500; $doData_intermediate_ad_connection->ad_id = 600; $doData_intermediate_ad_connection->zone_id = 100; $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $doData_intermediate_ad_connection->connection_window = 3600; $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $doData_intermediate_ad_connection->inside_window = 1; $connectionId3 = DataGenerator::generateOne($doData_intermediate_ad_connection); $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId3; $doData_intermediate_ad_variable_value->tracker_variable_id = $variableId1; $doData_intermediate_ad_variable_value->value = 'foo'; DataGenerator::generateOne($doData_intermediate_ad_variable_value); $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 4; $doData_intermediate_ad_connection->server_raw_ip = 'singleDB'; $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:15:00'; $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:10:00'; $doData_intermediate_ad_connection->tracker_id = 500; $doData_intermediate_ad_connection->ad_id = 600; $doData_intermediate_ad_connection->zone_id = 100; $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $doData_intermediate_ad_connection->connection_window = 3600; $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $doData_intermediate_ad_connection->inside_window = 1; $connectionId4 = DataGenerator::generateOne($doData_intermediate_ad_connection); $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId4; $doData_intermediate_ad_variable_value->tracker_variable_id = $variableId2; $doData_intermediate_ad_variable_value->value = '15.67'; DataGenerator::generateOne($doData_intermediate_ad_variable_value); $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 5; $doData_intermediate_ad_connection->server_raw_ip = 'singleDB'; $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:15:00'; $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:10:00'; $doData_intermediate_ad_connection->tracker_id = 501; $doData_intermediate_ad_connection->ad_id = 601; $doData_intermediate_ad_connection->zone_id = 101; $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $doData_intermediate_ad_connection->connection_window = 3600; $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $doData_intermediate_ad_connection->inside_window = 1; $connectionId5 = DataGenerator::generateOne($doData_intermediate_ad_connection); $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId5; $doData_intermediate_ad_variable_value->tracker_variable_id = $variableId3; $doData_intermediate_ad_variable_value->value = '37'; DataGenerator::generateOne($doData_intermediate_ad_variable_value); $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 6; $doData_intermediate_ad_connection->server_raw_ip = 'singleDB'; $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:15:00'; $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:10:00'; $doData_intermediate_ad_connection->tracker_id = 500; $doData_intermediate_ad_connection->ad_id = 600; $doData_intermediate_ad_connection->zone_id = 100; $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $doData_intermediate_ad_connection->connection_window = 3600; $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $doData_intermediate_ad_connection->inside_window = 1; $connectionId6 = DataGenerator::generateOne($doData_intermediate_ad_connection); $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId6; $doData_intermediate_ad_variable_value->tracker_variable_id = $variableId2; $doData_intermediate_ad_variable_value->value = '20'; DataGenerator::generateOne($doData_intermediate_ad_variable_value); $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId6; $doData_intermediate_ad_variable_value->tracker_variable_id = $variableId3; $doData_intermediate_ad_variable_value->value = '3'; DataGenerator::generateOne($doData_intermediate_ad_variable_value); $oStart = new Date('2004-06-06 12:00:00'); $oEnd = new Date('2004-06-06 12:59:59'); $oDalMaintenanceStatistics->manageConversions($oStart, $oEnd); $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $doData_intermediate_ad->find(); $rows = $doData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 2); $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $doData_intermediate_ad->ad_id = 600; $doData_intermediate_ad->find(); $rows = $doData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 1); $doData_intermediate_ad->fetch(); $this->assertEqual($doData_intermediate_ad->date_time, '2004-06-06 12:00:00'); $this->assertEqual($doData_intermediate_ad->operation_interval, 60); $this->assertEqual($doData_intermediate_ad->operation_interval_id, 12); $this->assertEqual($doData_intermediate_ad->interval_start, '2004-06-06 12:00:00'); $this->assertEqual($doData_intermediate_ad->interval_end, '2004-06-06 12:59:59'); $this->assertEqual($doData_intermediate_ad->ad_id, 600); $this->assertEqual($doData_intermediate_ad->zone_id, 100); $this->assertEqual($doData_intermediate_ad->requests, 0); $this->assertEqual($doData_intermediate_ad->impressions, 0); $this->assertEqual($doData_intermediate_ad->clicks, 0); $this->assertEqual($doData_intermediate_ad->conversions, 4); $this->assertEqual($doData_intermediate_ad->total_basket_value, 35.67); $this->assertEqual($doData_intermediate_ad->total_num_items, 3); $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $doData_intermediate_ad->ad_id = 601; $doData_intermediate_ad->find(); $rows = $doData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 1); $doData_intermediate_ad->fetch(); $this->assertEqual($doData_intermediate_ad->date_time, '2004-06-06 12:00:00'); $this->assertEqual($doData_intermediate_ad->operation_interval, 60); $this->assertEqual($doData_intermediate_ad->operation_interval_id, 12); $this->assertEqual($doData_intermediate_ad->interval_start, '2004-06-06 12:00:00'); $this->assertEqual($doData_intermediate_ad->interval_end, '2004-06-06 12:59:59'); $this->assertEqual($doData_intermediate_ad->ad_id, 601); $this->assertEqual($doData_intermediate_ad->zone_id, 101); $this->assertEqual($doData_intermediate_ad->requests, 0); $this->assertEqual($doData_intermediate_ad->impressions, 0); $this->assertEqual($doData_intermediate_ad->clicks, 0); $this->assertEqual($doData_intermediate_ad->conversions, 1); $this->assertEqual($doData_intermediate_ad->total_basket_value, 0); $this->assertEqual($doData_intermediate_ad->total_num_items, 37); // Clean Up DataGenerator::cleanUp(); // Re-insert a number of items variable tracker $doVariables = OA_Dal::factoryDO('variables'); $doVariables->purpose = 'num_items'; $variableId4 = DataGenerator::generateOne($doVariables); // Test 4: Test with data that is inside the range to manage, // with corresponding data_intermediate_ad rows $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 7; $doData_intermediate_ad_connection->server_raw_ip = 'singleDB'; $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:15:00'; $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:10:00'; $doData_intermediate_ad_connection->tracker_id = 501; $doData_intermediate_ad_connection->ad_id = 601; $doData_intermediate_ad_connection->zone_id = 101; $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $doData_intermediate_ad_connection->connection_window = 3600; $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $doData_intermediate_ad_connection->inside_window = 1; $connectionId7 = DataGenerator::generateOne($doData_intermediate_ad_connection); $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId7; $doData_intermediate_ad_variable_value->tracker_variable_id = $variableId4; $doData_intermediate_ad_variable_value->value = '3'; DataGenerator::generateOne($doData_intermediate_ad_variable_value); $oStart = new Date('2004-06-06 12:00:00'); $oEnd = new Date('2004-06-06 12:59:59'); $oDalMaintenanceStatistics->manageConversions($oStart, $oEnd); $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $doData_intermediate_ad->find(); $rows = $doData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 2); $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $doData_intermediate_ad->ad_id = 600; $doData_intermediate_ad->find(); $rows = $doData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 1); $doData_intermediate_ad->fetch(); $this->assertEqual($doData_intermediate_ad->date_time, '2004-06-06 12:00:00'); $this->assertEqual($doData_intermediate_ad->operation_interval, 60); $this->assertEqual($doData_intermediate_ad->operation_interval_id, 12); $this->assertEqual($doData_intermediate_ad->interval_start, '2004-06-06 12:00:00'); $this->assertEqual($doData_intermediate_ad->interval_end, '2004-06-06 12:59:59'); $this->assertEqual($doData_intermediate_ad->ad_id, 600); $this->assertEqual($doData_intermediate_ad->zone_id, 100); $this->assertEqual($doData_intermediate_ad->requests, 0); $this->assertEqual($doData_intermediate_ad->impressions, 0); $this->assertEqual($doData_intermediate_ad->clicks, 0); $this->assertEqual($doData_intermediate_ad->conversions, 4); $this->assertEqual($doData_intermediate_ad->total_basket_value, 35.67); $this->assertEqual($doData_intermediate_ad->total_num_items, 3); $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad'); $doData_intermediate_ad->ad_id = 601; $doData_intermediate_ad->find(); $rows = $doData_intermediate_ad->getRowCount(); $this->assertEqual($rows, 1); $doData_intermediate_ad->fetch(); $this->assertEqual($doData_intermediate_ad->date_time, '2004-06-06 12:00:00'); $this->assertEqual($doData_intermediate_ad->operation_interval, 60); $this->assertEqual($doData_intermediate_ad->operation_interval_id, 12); $this->assertEqual($doData_intermediate_ad->interval_start, '2004-06-06 12:00:00'); $this->assertEqual($doData_intermediate_ad->interval_end, '2004-06-06 12:59:59'); $this->assertEqual($doData_intermediate_ad->ad_id, 601); $this->assertEqual($doData_intermediate_ad->zone_id, 101); $this->assertEqual($doData_intermediate_ad->requests, 0); $this->assertEqual($doData_intermediate_ad->impressions, 0); $this->assertEqual($doData_intermediate_ad->clicks, 0); $this->assertEqual($doData_intermediate_ad->conversions, 2); $this->assertEqual($doData_intermediate_ad->total_basket_value, 0); $this->assertEqual($doData_intermediate_ad->total_num_items, 40); // Clean Up DataGenerator::cleanUp(); }
/** * A method to test the summariseBucketsRaw() method. */ function testSummariseBucketsRaw() { $aConf =& $GLOBALS['_MAX']['CONF']; $aConf['maintenance']['operationInterval'] = 60; // Prepare standard test parameters $statisticsTableName = $aConf['table']['prefix'] . 'data_intermediate_ad_connection'; $aMigrationDetails = array('method' => 'raw', 'bucketTable' => $aConf['table']['prefix'] . 'data_bkt_a', 'dateTimeColumn' => 'date_time', 'source' => array(0 => 'server_conv_id', 1 => 'server_ip', 2 => 'tracker_id', 3 => 'date_time', 4 => 'action_date_time', 5 => 'creative_id', 6 => 'zone_id', 7 => 'ip_address', 8 => 'action', 9 => 'window', 10 => 'status'), 'destination' => array(0 => 'server_raw_tracker_impression_id', 1 => 'server_raw_ip', 2 => 'tracker_id', 3 => 'tracker_date_time', 4 => 'connection_date_time', 5 => 'ad_id', 6 => 'zone_id', 7 => 'tracker_ip_address', 8 => 'connection_action', 9 => 'connection_window', 10 => 'connection_status'), 'extrasDestination' => array(11 => 'creative_id', 12 => 'inside_window'), 'extrasValue' => array(11 => '0', 12 => '1')); $aDates = array('start' => new Date('2008-08-21 09:00:00'), 'end' => new Date('2008-08-21 09:59:59')); // Prepare the DAL object $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDalMaintenanceStatistics = $oFactory->factory(); // Test 1: Test with an incorrect method name in the mapping array $savedValue = $aMigrationDetails['method']; $aMigrationDetails['method'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRaw() called with migration map method 'foo' != 'raw'."); $aMigrationDetails['method'] = $savedValue; // Test 2: Test with a different number of source and destination columns $savedValue = $aMigrationDetails['destination'][1]; unset($aMigrationDetails['destination'][1]); $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRaw() called with different number of 'source' and 'destination' columns."); $aMigrationDetails['destination'][1] = $savedValue; // Test 3: Test with a different number of extrasDestination and extrasValue columns $savedValue = $aMigrationDetails['extrasDestination'][11]; unset($aMigrationDetails['extrasDestination'][11]); $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRaw() called with different number of 'extrasDestination' and 'extrasValue' columns."); $aMigrationDetails['extrasDestination'][11] = $savedValue; // Test 4: Test with date parameters that are not really dates $savedValue = $aDates['start']; $aDates['start'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRaw() called with invalid start/end date parameters -- not Date objects."); $aDates['start'] = $savedValue; $savedValue = $aDates['end']; $aDates['end'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRaw() called with invalid start/end date parameters -- not Date objects."); $aDates['end'] = $savedValue; // Test 5: Test with invalid start/end dates $savedValue = $aDates['start']; $aDates['start'] = new Date('2008-08-21 08:00:00'); $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRaw() called with invalid start/end date parameters -- not operation interval bounds."); $aDates['start'] = $savedValue; $savedValue = $aDates['end']; $aDates['end'] = new Date('2008-08-22 09:59:59'); $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRaw() called with invalid start/end date parameters -- not operation interval bounds."); $aDates['end'] = $savedValue; // Test 6: Test with an invalid statistics table name $savedValue = $statisticsTableName; $statisticsTableName = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRaw() called with invalid statistics table 'foo'."); $statisticsTableName = $savedValue; // Test 7: Test with no data_bkt_a table in the database $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRaw() called with invalid bucket table '{$aConf['table']['prefix']}data_bkt_a'."); // Install the openXDeliveryLog plugin, which will create the // data_bkt_a table required for testing TestEnv::installPluginPackage('openXDeliveryLog', false); // Test 8: Test with all tables present, but no data $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 0); // Insert some data into the data_bkt_a table in the incorrect // operation interval $oData_bkt_a = OA_Dal::factoryDO('data_bkt_a'); $oData_bkt_a->server_conv_id = 1; $oData_bkt_a->server_ip = 'localhost'; $oData_bkt_a->tracker_id = 2; $oData_bkt_a->date_time = '2008-08-21 08:15:00'; $oData_bkt_a->action_date_time = '2008-08-21 07:15:00'; $oData_bkt_a->creative_id = 3; $oData_bkt_a->zone_id = 4; $oData_bkt_a->ip_address = '127.0.0.1'; $oData_bkt_a->action = MAX_CONNECTION_AD_CLICK; $oData_bkt_a->window = 3600; $oData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED; $conversionId = DataGenerator::generateOne($oData_bkt_a); // Test 9: Test with data in the incorrect operation interval $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 0); // Insert some data into the data_bkt_a table in the correct // operation interval $oData_bkt_a = OA_Dal::factoryDO('data_bkt_a'); $oData_bkt_a->server_conv_id = 2; $oData_bkt_a->server_ip = 'localhost'; $oData_bkt_a->tracker_id = 2; $oData_bkt_a->date_time = '2008-08-21 09:15:00'; $oData_bkt_a->action_date_time = '2008-08-21 08:15:00'; $oData_bkt_a->creative_id = 3; $oData_bkt_a->zone_id = 4; $oData_bkt_a->ip_address = '127.0.0.1'; $oData_bkt_a->action = MAX_CONNECTION_AD_CLICK; $oData_bkt_a->window = 3600; $oData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED; $conversionId = DataGenerator::generateOne($oData_bkt_a); // Test 10: Test with data in the correct operation interval $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 1); $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->find(); $rows = $oData_intermediate_ad_connection->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 2; $oData_intermediate_ad_connection->server_raw_ip = 'localhost'; $oData_intermediate_ad_connection->find(); $rows = $oData_intermediate_ad_connection->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_connection->fetch(); $this->assertEqual($oData_intermediate_ad_connection->data_intermediate_ad_connection_id, 1); $this->assertEqual($oData_intermediate_ad_connection->server_raw_tracker_impression_id, 2); $this->assertEqual($oData_intermediate_ad_connection->server_raw_ip, 'localhost'); $this->assertEqual($oData_intermediate_ad_connection->tracker_id, 2); $this->assertEqual($oData_intermediate_ad_connection->tracker_date_time, '2008-08-21 09:15:00'); $this->assertEqual($oData_intermediate_ad_connection->connection_date_time, '2008-08-21 08:15:00'); $this->assertEqual($oData_intermediate_ad_connection->ad_id, 3); $this->assertEqual($oData_intermediate_ad_connection->zone_id, 4); $this->assertEqual($oData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1'); $this->assertEqual($oData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK); $this->assertEqual($oData_intermediate_ad_connection->connection_window, 3600); $this->assertEqual($oData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED); $this->assertEqual($oData_intermediate_ad_connection->inside_window, 1); // Clean up generated data DataGenerator::cleanUp(); // Insert some (new) data into the data_bkt_a table in the // correct operation interval $oData_bkt_a = OA_Dal::factoryDO('data_bkt_a'); $oData_bkt_a->server_conv_id = 3; $oData_bkt_a->server_ip = 'localhost'; $oData_bkt_a->tracker_id = 5; $oData_bkt_a->date_time = '2008-08-21 09:30:00'; $oData_bkt_a->action_date_time = '2008-08-21 08:59:00'; $oData_bkt_a->creative_id = 8; $oData_bkt_a->zone_id = 9; $oData_bkt_a->ip_address = '127.0.0.1'; $oData_bkt_a->action = MAX_CONNECTION_AD_IMPRESSION; $oData_bkt_a->window = 1920; $oData_bkt_a->status = MAX_CONNECTION_STATUS_PENDING; $conversionId = DataGenerator::generateOne($oData_bkt_a); // Test 11: Test again with data in the correct operation interval $result = $oDalMaintenanceStatistics->summariseBucketsRaw($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 1); $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->find(); $rows = $oData_intermediate_ad_connection->getRowCount(); $this->assertEqual($rows, 2); $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 2; $oData_intermediate_ad_connection->server_raw_ip = 'localhost'; $oData_intermediate_ad_connection->find(); $rows = $oData_intermediate_ad_connection->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_connection->fetch(); $this->assertEqual($oData_intermediate_ad_connection->data_intermediate_ad_connection_id, 1); $this->assertEqual($oData_intermediate_ad_connection->server_raw_tracker_impression_id, 2); $this->assertEqual($oData_intermediate_ad_connection->server_raw_ip, 'localhost'); $this->assertEqual($oData_intermediate_ad_connection->tracker_id, 2); $this->assertEqual($oData_intermediate_ad_connection->tracker_date_time, '2008-08-21 09:15:00'); $this->assertEqual($oData_intermediate_ad_connection->connection_date_time, '2008-08-21 08:15:00'); $this->assertEqual($oData_intermediate_ad_connection->ad_id, 3); $this->assertEqual($oData_intermediate_ad_connection->zone_id, 4); $this->assertEqual($oData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1'); $this->assertEqual($oData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK); $this->assertEqual($oData_intermediate_ad_connection->connection_window, 3600); $this->assertEqual($oData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED); $this->assertEqual($oData_intermediate_ad_connection->inside_window, 1); $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 3; $oData_intermediate_ad_connection->server_raw_ip = 'localhost'; $oData_intermediate_ad_connection->find(); $rows = $oData_intermediate_ad_connection->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_connection->fetch(); $this->assertEqual($oData_intermediate_ad_connection->data_intermediate_ad_connection_id, 2); $this->assertEqual($oData_intermediate_ad_connection->server_raw_tracker_impression_id, 3); $this->assertEqual($oData_intermediate_ad_connection->server_raw_ip, 'localhost'); $this->assertEqual($oData_intermediate_ad_connection->tracker_id, 5); $this->assertEqual($oData_intermediate_ad_connection->tracker_date_time, '2008-08-21 09:30:00'); $this->assertEqual($oData_intermediate_ad_connection->connection_date_time, '2008-08-21 08:59:00'); $this->assertEqual($oData_intermediate_ad_connection->ad_id, 8); $this->assertEqual($oData_intermediate_ad_connection->zone_id, 9); $this->assertEqual($oData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1'); $this->assertEqual($oData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_IMPRESSION); $this->assertEqual($oData_intermediate_ad_connection->connection_window, 1920); $this->assertEqual($oData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_PENDING); $this->assertEqual($oData_intermediate_ad_connection->inside_window, 1); // Clean up generated data DataGenerator::cleanUp(); // Also clean up the data migrated into the statistics table $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 2; $oData_intermediate_ad_connection->find(); $oData_intermediate_ad_connection->delete(); $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 3; $oData_intermediate_ad_connection->find(); $oData_intermediate_ad_connection->delete(); // Uninstall the installed plugin TestEnv::uninstallPluginPackage('openXDeliveryLog', false); // Restore the test environment configuration TestEnv::restoreConfig(); }