function tearDown()
 {
     // Uninstall the openXDeliveryLog plugin
     TestEnv::uninstallPluginPackage('openXDeliveryLimitations', false);
     // Clean up the testing environment
     TestEnv::restoreEnv();
 }
 /**
  * A method to test the MAX_Delivery_log_logVariableValues() function.
  */
 function test_MAX_Delivery_log_logVariableValues()
 {
     $aConf =& $GLOBALS['_MAX']['CONF'];
     $aConf['maintenance']['operationInterval'] = 60;
     $GLOBALS['_MAX']['NOW'] = time();
     $oNowDate = new Date($GLOBALS['_MAX']['NOW']);
     // Test to ensure that the openXDeliveryLog plugin's data bucket
     // table does not exist
     $oTable = new OA_DB_Table();
     $tableExists = $oTable->extistsTable($aConf['table']['prefix'] . 'data_bkt_a_var');
     $this->assertFalse($tableExists);
     // Test calling the main logging function without any plugins installed,
     // to ensure that this does not result in any kind of error
     $aVariables = array(55 => array('variable_id' => 55, 'tracker_id' => 1, 'name' => 'fooVar', 'type' => 'string', 'variablecode' => ''), 66 => array('variable_id' => 66, 'tracker_id' => 1, 'name' => 'barVar', 'type' => 'string', 'variablecode' => ''));
     $_GET['fooVar'] = 'foo';
     $_GET['barVar'] = 'bar';
     MAX_Delivery_log_logVariableValues($aVariables, 1, 1, 'singleDB');
     // Install the openXDeliveryLog plugin
     TestEnv::installPluginPackage('openXDeliveryLog', false);
     // Test to ensure that the openXDeliveryLog plugin's data bucket
     // table now does exist
     $tableExists = $oTable->extistsTable($aConf['table']['prefix'] . 'data_bkt_a_var');
     $this->assertTrue($tableExists);
     // Ensure that there are is nothing logged in the data bucket table
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->find();
     $rows = $doData_bkt_a_var->getRowCount();
     $this->assertEqual($rows, 0);
     // Call the variable value logging function
     MAX_Delivery_log_logVariableValues($aVariables, 1, 1, 'singleDB');
     // Ensure that the data was logged correctly
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->find();
     $rows = $doData_bkt_a_var->getRowCount();
     $this->assertEqual($rows, 2);
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 1;
     $doData_bkt_a_var->server_raw_ip = 'singleDB';
     $doData_bkt_a_var->tracker_variable_id = 55;
     $doData_bkt_a_var->find();
     $rows = $doData_bkt_a_var->getRowCount();
     $this->assertEqual($rows, 1);
     $doData_bkt_a_var->fetch();
     $this->assertEqual($doData_bkt_a_var->value, 'foo');
     $this->assertEqual($doData_bkt_a_var->date_time, $oNowDate->format('%Y-%m-%d %H:%M:%S'));
     // Uninstall the openXDeliveryLog plugin
     TestEnv::uninstallPluginPackage('openXDeliveryLog', false);
     // Restore the test configuration file
     TestEnv::restoreConfig();
 }
 function tearDown()
 {
     // Uninstall
     TestEnv::uninstallPluginPackage('openXTests');
     DataGenerator::cleanUp();
 }
 /**
  * The complete end-to-end integration test for 60 minute operation intervals.
  */
 function testHourly()
 {
     $aConf =& $GLOBALS['_MAX']['CONF'];
     $aConf['maintenance']['operationInterval'] = 60;
     $aConf['log']['priority'] = 'PEAR_LOG_DEBUG';
     // Setup the default OpenX delivery logging plugin for the next test
     TestEnv::installPluginPackage('openXDeliveryLog', false);
     /**********************************************************************/
     // Test to ensure there are no entries in any of the system tables yet
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->find();
     $this->assertEqual($doUserlog->getRowCount(), 0);
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->find();
     $this->assertEqual($doLog_maintenance_statistics->getRowCount(), 0);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 0);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 0);
     $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad');
     $doData_intermediate_ad->find();
     $this->assertEqual($doData_intermediate_ad->getRowCount(), 0);
     $doData_summary_ad_hourly = OA_Dal::factoryDO('data_summary_ad_hourly');
     $doData_summary_ad_hourly->find();
     $this->assertEqual($doData_summary_ad_hourly->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_r');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_m');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_c');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     /**********************************************************************/
     // Prepare the current date/time for testing
     $oNowDate = new Date('2008-08-28 15:01:00');
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('now', $oNowDate);
     // Test 1: Run the MSE process with NO DATA
     $oMaintenanceStatisitcs = new OX_Maintenance_Statistics();
     $oMaintenanceStatisitcs->run();
     /**********************************************************************/
     // Test to ensure there are STILL no entries in any of the system tables
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->find();
     $this->assertEqual($doUserlog->getRowCount(), 0);
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->find();
     $this->assertEqual($doLog_maintenance_statistics->getRowCount(), 0);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 0);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 0);
     $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad');
     $doData_intermediate_ad->find();
     $this->assertEqual($doData_intermediate_ad->getRowCount(), 0);
     $doData_summary_ad_hourly = OA_Dal::factoryDO('data_summary_ad_hourly');
     $doData_summary_ad_hourly->find();
     $this->assertEqual($doData_summary_ad_hourly->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_r');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_m');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_c');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     /**********************************************************************/
     // Generate some tracker variables:
     //
     // - Tracker ID 1: Tracks no variables
     // - Tracker ID 2: Tracks a standard variable value
     // - Tracker ID 3: Tracks a de-duplicating variable value
     // - Tracker ID 4: Tracks a reject if empty variable value
     // - Tracker ID 5: Tracks a basket variable value and a number of
     //                 items variable value
     $doVariables = OA_Dal::factoryDO('variables');
     $doVariables->trackerid = 2;
     $doVariables->name = 'Normal Variable';
     $doVariables->insert();
     $doVariables = OA_Dal::factoryDO('variables');
     $doVariables->trackerid = 3;
     $doVariables->name = 'De-Duplicate Variable';
     $doVariables->is_unique = 1;
     $doVariables->unique_window = 86400;
     // One day
     $doVariables->insert();
     $doVariables = OA_Dal::factoryDO('variables');
     $doVariables->trackerid = 4;
     $doVariables->name = 'Reject if Empty Variable';
     $doVariables->reject_if_empty = 1;
     $doVariables->insert();
     $doVariables = OA_Dal::factoryDO('variables');
     $doVariables->trackerid = 5;
     $doVariables->name = 'Basket Value Variable';
     $doVariables->purpose = 'basket_value';
     $doVariables->insert();
     $doVariables = OA_Dal::factoryDO('variables');
     $doVariables->trackerid = 5;
     $doVariables->name = 'Number of Items Variable';
     $doVariables->purpose = 'num_items';
     $doVariables->insert();
     /**********************************************************************/
     // Generate some resonably standard request, impression, click and
     // conversion data:
     //
     // - For Creative ID 1, Zone ID 1:
     //     - 1000 R,  999 M, 5 C in the 14:00:00 - 15:00:00 interval
     //     - 1100 R, 1099 M, 8 C in the 15:00:00 - 16:00:00 interval
     //     - 7 Conversions in the 15:00 - 16:00 interval:
     //       - One normal, regular conversion, no variables
     //       - One normal, regular conversion, normal tracked variable
     //       - Two conversions duplicated on an "Order ID" variable
     //       - One conversion with a non-empty blocking variable
     //       - One conversion with an empty blocking variable
     //       - Two conversions with a basket value variable and a
     //         number of items variable
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_r');
     $doData_bkt_r->interval_start = '2008-08-28 14:00:00';
     $doData_bkt_r->creative_id = 1;
     $doData_bkt_r->zone_id = 1;
     $doData_bkt_r->count = 1000;
     $doData_bkt_r->insert();
     $doData_bkt_m = OA_Dal::factoryDO('data_bkt_m');
     $doData_bkt_m->interval_start = '2008-08-28 14:00:00';
     $doData_bkt_m->creative_id = 1;
     $doData_bkt_m->zone_id = 1;
     $doData_bkt_m->count = 999;
     $doData_bkt_m->insert();
     $doData_bkt_c = OA_Dal::factoryDO('data_bkt_c');
     $doData_bkt_c->interval_start = '2008-08-28 14:00:00';
     $doData_bkt_c->creative_id = 1;
     $doData_bkt_c->zone_id = 1;
     $doData_bkt_c->count = 5;
     $doData_bkt_c->insert();
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_r');
     $doData_bkt_r->interval_start = '2008-08-28 15:00:00';
     $doData_bkt_r->creative_id = 1;
     $doData_bkt_r->zone_id = 1;
     $doData_bkt_r->count = 1100;
     $doData_bkt_r->insert();
     $doData_bkt_m = OA_Dal::factoryDO('data_bkt_m');
     $doData_bkt_m->interval_start = '2008-08-28 15:00:00';
     $doData_bkt_m->creative_id = 1;
     $doData_bkt_m->zone_id = 1;
     $doData_bkt_m->count = 1099;
     $doData_bkt_m->insert();
     $doData_bkt_c = OA_Dal::factoryDO('data_bkt_c');
     $doData_bkt_c->interval_start = '2008-08-28 15:00:00';
     $doData_bkt_c->creative_id = 1;
     $doData_bkt_c->zone_id = 1;
     $doData_bkt_c->count = 8;
     $doData_bkt_c->insert();
     // The "normal" conversion, no variables
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 1;
     $doData_bkt_a->server_ip = 'localhost';
     $doData_bkt_a->tracker_id = 1;
     $doData_bkt_a->date_time = '2008-08-28 15:37:28';
     $doData_bkt_a->action_date_time = '2008-08-28 14:37:28';
     $doData_bkt_a->creative_id = 1;
     $doData_bkt_a->zone_id = 1;
     $doData_bkt_a->ip_address = '127.0.0.1';
     $doData_bkt_a->action = MAX_CONNECTION_AD_CLICK;
     $doData_bkt_a->window = 3600;
     $doData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED;
     $doData_bkt_a->insert();
     // The "normal" conversion, normal variable
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 2;
     $doData_bkt_a->server_ip = 'localhost';
     $doData_bkt_a->tracker_id = 2;
     $doData_bkt_a->date_time = '2008-08-28 15:37:28';
     $doData_bkt_a->action_date_time = '2008-08-28 14:37:28';
     $doData_bkt_a->creative_id = 1;
     $doData_bkt_a->zone_id = 1;
     $doData_bkt_a->ip_address = '127.0.0.1';
     $doData_bkt_a->action = MAX_CONNECTION_AD_CLICK;
     $doData_bkt_a->window = 3600;
     $doData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED;
     $doData_bkt_a->insert();
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 2;
     $doData_bkt_a_var->server_ip = 'localhost';
     $doData_bkt_a_var->tracker_variable_id = 1;
     $doData_bkt_a_var->value = 'foo';
     $doData_bkt_a_var->date_time = '2008-08-28 15:37:28';
     $doData_bkt_a_var->insert();
     // The duplicated conversions
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 3;
     $doData_bkt_a->server_ip = 'localhost';
     $doData_bkt_a->tracker_id = 3;
     $doData_bkt_a->date_time = '2008-08-28 15:47:11';
     $doData_bkt_a->action_date_time = '2008-08-28 14:47:11';
     $doData_bkt_a->creative_id = 1;
     $doData_bkt_a->zone_id = 1;
     $doData_bkt_a->ip_address = '127.0.0.1';
     $doData_bkt_a->action = MAX_CONNECTION_AD_CLICK;
     $doData_bkt_a->window = 3600;
     $doData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED;
     $doData_bkt_a->insert();
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 3;
     $doData_bkt_a_var->server_ip = 'localhost';
     $doData_bkt_a_var->tracker_variable_id = 2;
     $doData_bkt_a_var->value = '12345';
     $doData_bkt_a_var->date_time = '2008-08-28 15:47:11';
     $doData_bkt_a_var->insert();
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 4;
     $doData_bkt_a->server_ip = 'localhost';
     $doData_bkt_a->tracker_id = 3;
     $doData_bkt_a->date_time = '2008-08-28 15:47:21';
     $doData_bkt_a->action_date_time = '2008-08-28 14:47:21';
     $doData_bkt_a->creative_id = 1;
     $doData_bkt_a->zone_id = 1;
     $doData_bkt_a->ip_address = '127.0.0.1';
     $doData_bkt_a->action = MAX_CONNECTION_AD_CLICK;
     $doData_bkt_a->window = 3600;
     $doData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED;
     $doData_bkt_a->insert();
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 4;
     $doData_bkt_a_var->server_ip = 'localhost';
     $doData_bkt_a_var->tracker_variable_id = 2;
     $doData_bkt_a_var->value = '12345';
     $doData_bkt_a_var->date_time = '2008-08-28 15:47:21';
     $doData_bkt_a_var->insert();
     // The conversion with a non-empty logged value
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 5;
     $doData_bkt_a->server_ip = 'localhost';
     $doData_bkt_a->tracker_id = 4;
     $doData_bkt_a->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a->action_date_time = '2008-08-28 14:50:00';
     $doData_bkt_a->creative_id = 1;
     $doData_bkt_a->zone_id = 1;
     $doData_bkt_a->ip_address = '127.0.0.1';
     $doData_bkt_a->action = MAX_CONNECTION_AD_CLICK;
     $doData_bkt_a->window = 3600;
     $doData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED;
     $doData_bkt_a->insert();
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 5;
     $doData_bkt_a_var->server_ip = 'localhost';
     $doData_bkt_a_var->tracker_variable_id = 3;
     $doData_bkt_a_var->value = '12345';
     $doData_bkt_a_var->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a_var->insert();
     // The conversion with a empty logged value
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 6;
     $doData_bkt_a->server_ip = 'localhost';
     $doData_bkt_a->tracker_id = 4;
     $doData_bkt_a->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a->action_date_time = '2008-08-28 14:50:00';
     $doData_bkt_a->creative_id = 1;
     $doData_bkt_a->zone_id = 1;
     $doData_bkt_a->ip_address = '127.0.0.1';
     $doData_bkt_a->action = MAX_CONNECTION_AD_CLICK;
     $doData_bkt_a->window = 3600;
     $doData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED;
     $doData_bkt_a->insert();
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 6;
     $doData_bkt_a_var->server_ip = 'localhost';
     $doData_bkt_a_var->tracker_variable_id = 3;
     $doData_bkt_a_var->value = '';
     $doData_bkt_a_var->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a_var->insert();
     // The two conversions with basket values and numbers of items
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 7;
     $doData_bkt_a->server_ip = 'localhost';
     $doData_bkt_a->tracker_id = 5;
     $doData_bkt_a->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a->action_date_time = '2008-08-28 14:50:00';
     $doData_bkt_a->creative_id = 1;
     $doData_bkt_a->zone_id = 1;
     $doData_bkt_a->ip_address = '127.0.0.1';
     $doData_bkt_a->action = MAX_CONNECTION_AD_CLICK;
     $doData_bkt_a->window = 3600;
     $doData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED;
     $doData_bkt_a->insert();
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 7;
     $doData_bkt_a_var->server_ip = 'localhost';
     $doData_bkt_a_var->tracker_variable_id = 4;
     $doData_bkt_a_var->value = '129.99';
     $doData_bkt_a_var->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a_var->insert();
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 7;
     $doData_bkt_a_var->server_ip = 'localhost';
     $doData_bkt_a_var->tracker_variable_id = 5;
     $doData_bkt_a_var->value = '1';
     $doData_bkt_a_var->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a_var->insert();
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 8;
     $doData_bkt_a->server_ip = 'localhost';
     $doData_bkt_a->tracker_id = 5;
     $doData_bkt_a->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a->action_date_time = '2008-08-28 14:50:00';
     $doData_bkt_a->creative_id = 1;
     $doData_bkt_a->zone_id = 1;
     $doData_bkt_a->ip_address = '127.0.0.1';
     $doData_bkt_a->action = MAX_CONNECTION_AD_CLICK;
     $doData_bkt_a->window = 3600;
     $doData_bkt_a->status = MAX_CONNECTION_STATUS_APPROVED;
     $doData_bkt_a->insert();
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 8;
     $doData_bkt_a_var->server_ip = 'localhost';
     $doData_bkt_a_var->tracker_variable_id = 4;
     $doData_bkt_a_var->value = '0.99';
     $doData_bkt_a_var->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a_var->insert();
     $doData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_a_var->server_conv_id = 8;
     $doData_bkt_a_var->server_ip = 'localhost';
     $doData_bkt_a_var->tracker_variable_id = 5;
     $doData_bkt_a_var->value = '99';
     $doData_bkt_a_var->date_time = '2008-08-28 15:50:00';
     $doData_bkt_a_var->insert();
     /**********************************************************************/
     // Prepare the current date/time for testing
     $oNowDate = new Date('2008-08-28 16:01:00');
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('now', $oNowDate);
     // Test 2: Run the MSE process WITH data
     $oMaintenanceStatisitcs = new OX_Maintenance_Statistics();
     $oMaintenanceStatisitcs->run();
     /**********************************************************************/
     // Test to ensure the data has been migrated correctly, and
     // that the MSE has logged all required info correctly
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->find();
     $this->assertEqual($doUserlog->getRowCount(), 1);
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->find();
     $this->assertEqual($doLog_maintenance_statistics->getRowCount(), 1);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 8);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 9);
     $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad');
     $doData_intermediate_ad->find();
     $this->assertEqual($doData_intermediate_ad->getRowCount(), 2);
     $doData_summary_ad_hourly = OA_Dal::factoryDO('data_summary_ad_hourly');
     $doData_summary_ad_hourly->find();
     $this->assertEqual($doData_summary_ad_hourly->getRowCount(), 2);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_r');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_m');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_c');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     $doData_bkt_r = OA_Dal::factoryDO('data_bkt_a_var');
     $doData_bkt_r->find();
     $this->assertEqual($doData_bkt_r->getRowCount(), 0);
     // Test all of the details of the migrated data
     $log = "Maintenance Statistics Report\n=====================================\n\n- Maintenance start run time is 2008-08-28 16:01:00 UTC\n- Maintenance statistics last updated intermediate table statistics to 2008-08-28 13:59:59 UTC.\n- Current time must be after 2008-08-28 14:59:59 UTC for the next intermediate table update to happen\n- Maintenance statistics last updated final table statistics to 2008-08-28 13:59:59 UTC.\n- Current time must be after 2008-08-28 14:59:59 UTC for the next intermediate table update to happen\n- Maintenance statistics will be run.\n- The intermediate table statistics will be updated.\n- The final table statistics will be updated.\n\n- Migrating bucket-based logged data to the statistics tables.\n- Saving request, impression, click and conversion data into the final tables.\n- Updating the data_summary_ad_hourly table for data after 2008-08-28 14:00:00 UTC.\n- Logging the completion of the maintenance statistics run.";
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->find();
     $this->assertEqual($doUserlog->getRowCount(), 1);
     $doUserlog->fetch();
     $this->assertEqual($doUserlog->usertype, phpAds_userMaintenance);
     $this->assertEqual($doUserlog->userid, 0);
     $this->assertEqual($doUserlog->action, phpAds_actionBatchStatistics);
     $this->assertEqual($doUserlog->object, 0);
     $this->assertEqual($doUserlog->details, $log);
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->start_run = $oNowDate->format('%Y-%m-%d %H:%M:%S');
     $doLog_maintenance_statistics->find();
     $this->assertEqual($doLog_maintenance_statistics->getRowCount(), 1);
     $doLog_maintenance_statistics->fetch();
     $this->assertEqual($doLog_maintenance_statistics->adserver_run_type, OX_DAL_MAINTENANCE_STATISTICS_UPDATE_BOTH);
     $this->assertNull($doLog_maintenance_statistics->search_run_type);
     $this->assertNull($doLog_maintenance_statistics->tracker_run_type);
     $this->assertEqual($doLog_maintenance_statistics->updated_to, '2008-08-28 15:59:59');
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 1;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $this->assertNull($doData_intermediate_ad_connection->veiwer_id);
     $this->assertNull($doData_intermediate_ad_connection->veiwer_session_id);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_date_time, '2008-08-28 15:37:28');
     $this->assertEqual($doData_intermediate_ad_connection->connection_date_time, '2008-08-28 14:37:28');
     $this->assertEqual($doData_intermediate_ad_connection->tracker_id, 1);
     $this->assertEqual($doData_intermediate_ad_connection->ad_id, 1);
     $this->assertEqual($doData_intermediate_ad_connection->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad_connection->zone_id, 1);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->tracker_language);
     $this->assertNull($doData_intermediate_ad_connection->connection_language);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1');
     $this->assertNull($doData_intermediate_ad_connection->connection_ip_address);
     $this->assertNull($doData_intermediate_ad_connection->tracker_host_name);
     $this->assertNull($doData_intermediate_ad_connection->connection_host_name);
     $this->assertNull($doData_intermediate_ad_connection->tracker_country);
     $this->assertNull($doData_intermediate_ad_connection->connection_country);
     $this->assertNull($doData_intermediate_ad_connection->tracker_https);
     $this->assertNull($doData_intermediate_ad_connection->connection_https);
     $this->assertNull($doData_intermediate_ad_connection->tracker_domain);
     $this->assertNull($doData_intermediate_ad_connection->connection_domain);
     $this->assertNull($doData_intermediate_ad_connection->tracker_page);
     $this->assertNull($doData_intermediate_ad_connection->connection_page);
     $this->assertNull($doData_intermediate_ad_connection->tracker_query);
     $this->assertNull($doData_intermediate_ad_connection->connection_query);
     $this->assertNull($doData_intermediate_ad_connection->tracker_referer);
     $this->assertNull($doData_intermediate_ad_connection->connection_referer);
     $this->assertNull($doData_intermediate_ad_connection->tracker_search_term);
     $this->assertNull($doData_intermediate_ad_connection->connection_search_term);
     $this->assertNull($doData_intermediate_ad_connection->tracker_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->connection_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->tracker_os);
     $this->assertNull($doData_intermediate_ad_connection->connection_os);
     $this->assertNull($doData_intermediate_ad_connection->tracker_browser);
     $this->assertNull($doData_intermediate_ad_connection->connection_browser);
     $this->assertEqual($doData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_intermediate_ad_connection->connection_window, 3600);
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $this->assertEqual($doData_intermediate_ad_connection->inside_window, 1);
     $this->assertNull($doData_intermediate_ad_connection->comments);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 2;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $this->assertNull($doData_intermediate_ad_connection->veiwer_id);
     $this->assertNull($doData_intermediate_ad_connection->veiwer_session_id);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_date_time, '2008-08-28 15:37:28');
     $this->assertEqual($doData_intermediate_ad_connection->connection_date_time, '2008-08-28 14:37:28');
     $this->assertEqual($doData_intermediate_ad_connection->tracker_id, 2);
     $this->assertEqual($doData_intermediate_ad_connection->ad_id, 1);
     $this->assertEqual($doData_intermediate_ad_connection->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad_connection->zone_id, 1);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->tracker_language);
     $this->assertNull($doData_intermediate_ad_connection->connection_language);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1');
     $this->assertNull($doData_intermediate_ad_connection->connection_ip_address);
     $this->assertNull($doData_intermediate_ad_connection->tracker_host_name);
     $this->assertNull($doData_intermediate_ad_connection->connection_host_name);
     $this->assertNull($doData_intermediate_ad_connection->tracker_country);
     $this->assertNull($doData_intermediate_ad_connection->connection_country);
     $this->assertNull($doData_intermediate_ad_connection->tracker_https);
     $this->assertNull($doData_intermediate_ad_connection->connection_https);
     $this->assertNull($doData_intermediate_ad_connection->tracker_domain);
     $this->assertNull($doData_intermediate_ad_connection->connection_domain);
     $this->assertNull($doData_intermediate_ad_connection->tracker_page);
     $this->assertNull($doData_intermediate_ad_connection->connection_page);
     $this->assertNull($doData_intermediate_ad_connection->tracker_query);
     $this->assertNull($doData_intermediate_ad_connection->connection_query);
     $this->assertNull($doData_intermediate_ad_connection->tracker_referer);
     $this->assertNull($doData_intermediate_ad_connection->connection_referer);
     $this->assertNull($doData_intermediate_ad_connection->tracker_search_term);
     $this->assertNull($doData_intermediate_ad_connection->connection_search_term);
     $this->assertNull($doData_intermediate_ad_connection->tracker_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->connection_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->tracker_os);
     $this->assertNull($doData_intermediate_ad_connection->connection_os);
     $this->assertNull($doData_intermediate_ad_connection->tracker_browser);
     $this->assertNull($doData_intermediate_ad_connection->connection_browser);
     $this->assertEqual($doData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_intermediate_ad_connection->connection_window, 3600);
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $this->assertEqual($doData_intermediate_ad_connection->inside_window, 1);
     $this->assertNull($doData_intermediate_ad_connection->comments);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 3;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $this->assertNull($doData_intermediate_ad_connection->veiwer_id);
     $this->assertNull($doData_intermediate_ad_connection->veiwer_session_id);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_date_time, '2008-08-28 15:47:11');
     $this->assertEqual($doData_intermediate_ad_connection->connection_date_time, '2008-08-28 14:47:11');
     $this->assertEqual($doData_intermediate_ad_connection->tracker_id, 3);
     $this->assertEqual($doData_intermediate_ad_connection->ad_id, 1);
     $this->assertEqual($doData_intermediate_ad_connection->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad_connection->zone_id, 1);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->tracker_language);
     $this->assertNull($doData_intermediate_ad_connection->connection_language);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1');
     $this->assertNull($doData_intermediate_ad_connection->connection_ip_address);
     $this->assertNull($doData_intermediate_ad_connection->tracker_host_name);
     $this->assertNull($doData_intermediate_ad_connection->connection_host_name);
     $this->assertNull($doData_intermediate_ad_connection->tracker_country);
     $this->assertNull($doData_intermediate_ad_connection->connection_country);
     $this->assertNull($doData_intermediate_ad_connection->tracker_https);
     $this->assertNull($doData_intermediate_ad_connection->connection_https);
     $this->assertNull($doData_intermediate_ad_connection->tracker_domain);
     $this->assertNull($doData_intermediate_ad_connection->connection_domain);
     $this->assertNull($doData_intermediate_ad_connection->tracker_page);
     $this->assertNull($doData_intermediate_ad_connection->connection_page);
     $this->assertNull($doData_intermediate_ad_connection->tracker_query);
     $this->assertNull($doData_intermediate_ad_connection->connection_query);
     $this->assertNull($doData_intermediate_ad_connection->tracker_referer);
     $this->assertNull($doData_intermediate_ad_connection->connection_referer);
     $this->assertNull($doData_intermediate_ad_connection->tracker_search_term);
     $this->assertNull($doData_intermediate_ad_connection->connection_search_term);
     $this->assertNull($doData_intermediate_ad_connection->tracker_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->connection_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->tracker_os);
     $this->assertNull($doData_intermediate_ad_connection->connection_os);
     $this->assertNull($doData_intermediate_ad_connection->tracker_browser);
     $this->assertNull($doData_intermediate_ad_connection->connection_browser);
     $this->assertEqual($doData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_intermediate_ad_connection->connection_window, 3600);
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $this->assertEqual($doData_intermediate_ad_connection->inside_window, 1);
     $this->assertNull($doData_intermediate_ad_connection->comments);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 4;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $this->assertNull($doData_intermediate_ad_connection->veiwer_id);
     $this->assertNull($doData_intermediate_ad_connection->veiwer_session_id);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_date_time, '2008-08-28 15:47:21');
     $this->assertEqual($doData_intermediate_ad_connection->connection_date_time, '2008-08-28 14:47:21');
     $this->assertEqual($doData_intermediate_ad_connection->tracker_id, 3);
     $this->assertEqual($doData_intermediate_ad_connection->ad_id, 1);
     $this->assertEqual($doData_intermediate_ad_connection->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad_connection->zone_id, 1);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->tracker_language);
     $this->assertNull($doData_intermediate_ad_connection->connection_language);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1');
     $this->assertNull($doData_intermediate_ad_connection->connection_ip_address);
     $this->assertNull($doData_intermediate_ad_connection->tracker_host_name);
     $this->assertNull($doData_intermediate_ad_connection->connection_host_name);
     $this->assertNull($doData_intermediate_ad_connection->tracker_country);
     $this->assertNull($doData_intermediate_ad_connection->connection_country);
     $this->assertNull($doData_intermediate_ad_connection->tracker_https);
     $this->assertNull($doData_intermediate_ad_connection->connection_https);
     $this->assertNull($doData_intermediate_ad_connection->tracker_domain);
     $this->assertNull($doData_intermediate_ad_connection->connection_domain);
     $this->assertNull($doData_intermediate_ad_connection->tracker_page);
     $this->assertNull($doData_intermediate_ad_connection->connection_page);
     $this->assertNull($doData_intermediate_ad_connection->tracker_query);
     $this->assertNull($doData_intermediate_ad_connection->connection_query);
     $this->assertNull($doData_intermediate_ad_connection->tracker_referer);
     $this->assertNull($doData_intermediate_ad_connection->connection_referer);
     $this->assertNull($doData_intermediate_ad_connection->tracker_search_term);
     $this->assertNull($doData_intermediate_ad_connection->connection_search_term);
     $this->assertNull($doData_intermediate_ad_connection->tracker_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->connection_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->tracker_os);
     $this->assertNull($doData_intermediate_ad_connection->connection_os);
     $this->assertNull($doData_intermediate_ad_connection->tracker_browser);
     $this->assertNull($doData_intermediate_ad_connection->connection_browser);
     $this->assertEqual($doData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_intermediate_ad_connection->connection_window, 3600);
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_DUPLICATE);
     $this->assertEqual($doData_intermediate_ad_connection->inside_window, 1);
     $this->assertEqual($doData_intermediate_ad_connection->comments, 'Duplicate of conversion ID 3');
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 5;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $this->assertNull($doData_intermediate_ad_connection->veiwer_id);
     $this->assertNull($doData_intermediate_ad_connection->veiwer_session_id);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_date_time, '2008-08-28 15:50:00');
     $this->assertEqual($doData_intermediate_ad_connection->connection_date_time, '2008-08-28 14:50:00');
     $this->assertEqual($doData_intermediate_ad_connection->tracker_id, 4);
     $this->assertEqual($doData_intermediate_ad_connection->ad_id, 1);
     $this->assertEqual($doData_intermediate_ad_connection->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad_connection->zone_id, 1);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->tracker_language);
     $this->assertNull($doData_intermediate_ad_connection->connection_language);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1');
     $this->assertNull($doData_intermediate_ad_connection->connection_ip_address);
     $this->assertNull($doData_intermediate_ad_connection->tracker_host_name);
     $this->assertNull($doData_intermediate_ad_connection->connection_host_name);
     $this->assertNull($doData_intermediate_ad_connection->tracker_country);
     $this->assertNull($doData_intermediate_ad_connection->connection_country);
     $this->assertNull($doData_intermediate_ad_connection->tracker_https);
     $this->assertNull($doData_intermediate_ad_connection->connection_https);
     $this->assertNull($doData_intermediate_ad_connection->tracker_domain);
     $this->assertNull($doData_intermediate_ad_connection->connection_domain);
     $this->assertNull($doData_intermediate_ad_connection->tracker_page);
     $this->assertNull($doData_intermediate_ad_connection->connection_page);
     $this->assertNull($doData_intermediate_ad_connection->tracker_query);
     $this->assertNull($doData_intermediate_ad_connection->connection_query);
     $this->assertNull($doData_intermediate_ad_connection->tracker_referer);
     $this->assertNull($doData_intermediate_ad_connection->connection_referer);
     $this->assertNull($doData_intermediate_ad_connection->tracker_search_term);
     $this->assertNull($doData_intermediate_ad_connection->connection_search_term);
     $this->assertNull($doData_intermediate_ad_connection->tracker_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->connection_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->tracker_os);
     $this->assertNull($doData_intermediate_ad_connection->connection_os);
     $this->assertNull($doData_intermediate_ad_connection->tracker_browser);
     $this->assertNull($doData_intermediate_ad_connection->connection_browser);
     $this->assertEqual($doData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_intermediate_ad_connection->connection_window, 3600);
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $this->assertEqual($doData_intermediate_ad_connection->inside_window, 1);
     $this->assertNull($doData_intermediate_ad_connection->comments);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 6;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $this->assertNull($doData_intermediate_ad_connection->veiwer_id);
     $this->assertNull($doData_intermediate_ad_connection->veiwer_session_id);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_date_time, '2008-08-28 15:50:00');
     $this->assertEqual($doData_intermediate_ad_connection->connection_date_time, '2008-08-28 14:50:00');
     $this->assertEqual($doData_intermediate_ad_connection->tracker_id, 4);
     $this->assertEqual($doData_intermediate_ad_connection->ad_id, 1);
     $this->assertEqual($doData_intermediate_ad_connection->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad_connection->zone_id, 1);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->tracker_language);
     $this->assertNull($doData_intermediate_ad_connection->connection_language);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1');
     $this->assertNull($doData_intermediate_ad_connection->connection_ip_address);
     $this->assertNull($doData_intermediate_ad_connection->tracker_host_name);
     $this->assertNull($doData_intermediate_ad_connection->connection_host_name);
     $this->assertNull($doData_intermediate_ad_connection->tracker_country);
     $this->assertNull($doData_intermediate_ad_connection->connection_country);
     $this->assertNull($doData_intermediate_ad_connection->tracker_https);
     $this->assertNull($doData_intermediate_ad_connection->connection_https);
     $this->assertNull($doData_intermediate_ad_connection->tracker_domain);
     $this->assertNull($doData_intermediate_ad_connection->connection_domain);
     $this->assertNull($doData_intermediate_ad_connection->tracker_page);
     $this->assertNull($doData_intermediate_ad_connection->connection_page);
     $this->assertNull($doData_intermediate_ad_connection->tracker_query);
     $this->assertNull($doData_intermediate_ad_connection->connection_query);
     $this->assertNull($doData_intermediate_ad_connection->tracker_referer);
     $this->assertNull($doData_intermediate_ad_connection->connection_referer);
     $this->assertNull($doData_intermediate_ad_connection->tracker_search_term);
     $this->assertNull($doData_intermediate_ad_connection->connection_search_term);
     $this->assertNull($doData_intermediate_ad_connection->tracker_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->connection_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->tracker_os);
     $this->assertNull($doData_intermediate_ad_connection->connection_os);
     $this->assertNull($doData_intermediate_ad_connection->tracker_browser);
     $this->assertNull($doData_intermediate_ad_connection->connection_browser);
     $this->assertEqual($doData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_intermediate_ad_connection->connection_window, 3600);
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_DISAPPROVED);
     $this->assertEqual($doData_intermediate_ad_connection->inside_window, 1);
     $this->assertEqual($doData_intermediate_ad_connection->comments, 'Rejected because Reject if Empty Variable is empty');
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 7;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $this->assertNull($doData_intermediate_ad_connection->veiwer_id);
     $this->assertNull($doData_intermediate_ad_connection->veiwer_session_id);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_date_time, '2008-08-28 15:50:00');
     $this->assertEqual($doData_intermediate_ad_connection->connection_date_time, '2008-08-28 14:50:00');
     $this->assertEqual($doData_intermediate_ad_connection->tracker_id, 5);
     $this->assertEqual($doData_intermediate_ad_connection->ad_id, 1);
     $this->assertEqual($doData_intermediate_ad_connection->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad_connection->zone_id, 1);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->tracker_language);
     $this->assertNull($doData_intermediate_ad_connection->connection_language);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1');
     $this->assertNull($doData_intermediate_ad_connection->connection_ip_address);
     $this->assertNull($doData_intermediate_ad_connection->tracker_host_name);
     $this->assertNull($doData_intermediate_ad_connection->connection_host_name);
     $this->assertNull($doData_intermediate_ad_connection->tracker_country);
     $this->assertNull($doData_intermediate_ad_connection->connection_country);
     $this->assertNull($doData_intermediate_ad_connection->tracker_https);
     $this->assertNull($doData_intermediate_ad_connection->connection_https);
     $this->assertNull($doData_intermediate_ad_connection->tracker_domain);
     $this->assertNull($doData_intermediate_ad_connection->connection_domain);
     $this->assertNull($doData_intermediate_ad_connection->tracker_page);
     $this->assertNull($doData_intermediate_ad_connection->connection_page);
     $this->assertNull($doData_intermediate_ad_connection->tracker_query);
     $this->assertNull($doData_intermediate_ad_connection->connection_query);
     $this->assertNull($doData_intermediate_ad_connection->tracker_referer);
     $this->assertNull($doData_intermediate_ad_connection->connection_referer);
     $this->assertNull($doData_intermediate_ad_connection->tracker_search_term);
     $this->assertNull($doData_intermediate_ad_connection->connection_search_term);
     $this->assertNull($doData_intermediate_ad_connection->tracker_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->connection_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->tracker_os);
     $this->assertNull($doData_intermediate_ad_connection->connection_os);
     $this->assertNull($doData_intermediate_ad_connection->tracker_browser);
     $this->assertNull($doData_intermediate_ad_connection->connection_browser);
     $this->assertEqual($doData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_intermediate_ad_connection->connection_window, 3600);
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $this->assertEqual($doData_intermediate_ad_connection->inside_window, 1);
     $this->assertNull($doData_intermediate_ad_connection->comments);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 8;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $this->assertNull($doData_intermediate_ad_connection->veiwer_id);
     $this->assertNull($doData_intermediate_ad_connection->veiwer_session_id);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_date_time, '2008-08-28 15:50:00');
     $this->assertEqual($doData_intermediate_ad_connection->connection_date_time, '2008-08-28 14:50:00');
     $this->assertEqual($doData_intermediate_ad_connection->tracker_id, 5);
     $this->assertEqual($doData_intermediate_ad_connection->ad_id, 1);
     $this->assertEqual($doData_intermediate_ad_connection->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad_connection->zone_id, 1);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel);
     $this->assertNull($doData_intermediate_ad_connection->tracker_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->connection_channel_ids);
     $this->assertNull($doData_intermediate_ad_connection->tracker_language);
     $this->assertNull($doData_intermediate_ad_connection->connection_language);
     $this->assertEqual($doData_intermediate_ad_connection->tracker_ip_address, '127.0.0.1');
     $this->assertNull($doData_intermediate_ad_connection->connection_ip_address);
     $this->assertNull($doData_intermediate_ad_connection->tracker_host_name);
     $this->assertNull($doData_intermediate_ad_connection->connection_host_name);
     $this->assertNull($doData_intermediate_ad_connection->tracker_country);
     $this->assertNull($doData_intermediate_ad_connection->connection_country);
     $this->assertNull($doData_intermediate_ad_connection->tracker_https);
     $this->assertNull($doData_intermediate_ad_connection->connection_https);
     $this->assertNull($doData_intermediate_ad_connection->tracker_domain);
     $this->assertNull($doData_intermediate_ad_connection->connection_domain);
     $this->assertNull($doData_intermediate_ad_connection->tracker_page);
     $this->assertNull($doData_intermediate_ad_connection->connection_page);
     $this->assertNull($doData_intermediate_ad_connection->tracker_query);
     $this->assertNull($doData_intermediate_ad_connection->connection_query);
     $this->assertNull($doData_intermediate_ad_connection->tracker_referer);
     $this->assertNull($doData_intermediate_ad_connection->connection_referer);
     $this->assertNull($doData_intermediate_ad_connection->tracker_search_term);
     $this->assertNull($doData_intermediate_ad_connection->connection_search_term);
     $this->assertNull($doData_intermediate_ad_connection->tracker_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->connection_user_agent);
     $this->assertNull($doData_intermediate_ad_connection->tracker_os);
     $this->assertNull($doData_intermediate_ad_connection->connection_os);
     $this->assertNull($doData_intermediate_ad_connection->tracker_browser);
     $this->assertNull($doData_intermediate_ad_connection->connection_browser);
     $this->assertEqual($doData_intermediate_ad_connection->connection_action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_intermediate_ad_connection->connection_window, 3600);
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $this->assertEqual($doData_intermediate_ad_connection->inside_window, 1);
     $this->assertNull($doData_intermediate_ad_connection->comments);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 1;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 0);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 2;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 1);
     $doData_intermediate_ad_variable_value->fetch();
     $this->assertEqual($doData_intermediate_ad_variable_value->tracker_variable_id, 1);
     $this->assertEqual($doData_intermediate_ad_variable_value->value, 'foo');
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 3;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 1);
     $doData_intermediate_ad_variable_value->fetch();
     $this->assertEqual($doData_intermediate_ad_variable_value->tracker_variable_id, 2);
     $this->assertEqual($doData_intermediate_ad_variable_value->value, '12345');
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 4;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 1);
     $doData_intermediate_ad_variable_value->fetch();
     $this->assertEqual($doData_intermediate_ad_variable_value->tracker_variable_id, 2);
     $this->assertEqual($doData_intermediate_ad_variable_value->value, '12345');
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 5;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 1);
     $doData_intermediate_ad_variable_value->fetch();
     $this->assertEqual($doData_intermediate_ad_variable_value->tracker_variable_id, 3);
     $this->assertEqual($doData_intermediate_ad_variable_value->value, '12345');
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 6;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 1);
     $doData_intermediate_ad_variable_value->fetch();
     $this->assertEqual($doData_intermediate_ad_variable_value->tracker_variable_id, 3);
     $this->assertEqual($doData_intermediate_ad_variable_value->value, '');
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 7;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 2);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 4;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 1);
     $doData_intermediate_ad_variable_value->fetch();
     $this->assertEqual($doData_intermediate_ad_variable_value->value, '129.99');
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 5;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 1);
     $doData_intermediate_ad_variable_value->fetch();
     $this->assertEqual($doData_intermediate_ad_variable_value->value, '1');
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->server_raw_ip = 'localhost';
     $doData_intermediate_ad_connection->server_raw_tracker_impression_id = 8;
     $doData_intermediate_ad_connection->find();
     $this->assertEqual($doData_intermediate_ad_connection->getRowCount(), 1);
     $doData_intermediate_ad_connection->fetch();
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 2);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 4;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 1);
     $doData_intermediate_ad_variable_value->fetch();
     $this->assertEqual($doData_intermediate_ad_variable_value->value, '0.99');
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $doData_intermediate_ad_connection->data_intermediate_ad_connection_id;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 5;
     $doData_intermediate_ad_variable_value->find();
     $this->assertEqual($doData_intermediate_ad_variable_value->getRowCount(), 1);
     $doData_intermediate_ad_variable_value->fetch();
     $this->assertEqual($doData_intermediate_ad_variable_value->value, '99');
     $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad');
     $doData_intermediate_ad->date_time = '2008-08-28 14:00:00';
     $doData_intermediate_ad->ad_id = 1;
     $doData_intermediate_ad->zone_id = 1;
     $doData_intermediate_ad->find();
     $this->assertEqual($doData_intermediate_ad->getRowCount(), 1);
     $doData_intermediate_ad->fetch();
     $this->assertEqual($doData_intermediate_ad->operation_interval, 60);
     $this->assertEqual($doData_intermediate_ad->operation_interval_id, 110);
     $this->assertEqual($doData_intermediate_ad->interval_start, '2008-08-28 14:00:00');
     $this->assertEqual($doData_intermediate_ad->interval_end, '2008-08-28 14:59:59');
     $this->assertEqual($doData_intermediate_ad->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad->requests, 1000);
     $this->assertEqual($doData_intermediate_ad->impressions, 999);
     $this->assertEqual($doData_intermediate_ad->clicks, 5);
     $this->assertEqual($doData_intermediate_ad->conversions, 0);
     $this->assertEqual($doData_intermediate_ad->total_basket_value, 0.0);
     $this->assertEqual($doData_intermediate_ad->total_num_items, 0);
     $doData_intermediate_ad = OA_Dal::factoryDO('data_intermediate_ad');
     $doData_intermediate_ad->date_time = '2008-08-28 15:00:00';
     $doData_intermediate_ad->ad_id = 1;
     $doData_intermediate_ad->zone_id = 1;
     $doData_intermediate_ad->find();
     $this->assertEqual($doData_intermediate_ad->getRowCount(), 1);
     $doData_intermediate_ad->fetch();
     $this->assertEqual($doData_intermediate_ad->operation_interval, 60);
     $this->assertEqual($doData_intermediate_ad->operation_interval_id, 111);
     $this->assertEqual($doData_intermediate_ad->interval_start, '2008-08-28 15:00:00');
     $this->assertEqual($doData_intermediate_ad->interval_end, '2008-08-28 15:59:59');
     $this->assertEqual($doData_intermediate_ad->creative_id, 0);
     $this->assertEqual($doData_intermediate_ad->requests, 1100);
     $this->assertEqual($doData_intermediate_ad->impressions, 1099);
     $this->assertEqual($doData_intermediate_ad->clicks, 8);
     $this->assertEqual($doData_intermediate_ad->conversions, 6);
     $this->assertEqual($doData_intermediate_ad->total_basket_value, 130.98);
     $this->assertEqual($doData_intermediate_ad->total_num_items, 100);
     $doData_summary_ad_hourly = OA_Dal::factoryDO('data_summary_ad_hourly');
     $doData_summary_ad_hourly->date_time = '2008-08-28 14:00:00';
     $doData_summary_ad_hourly->ad_id = 1;
     $doData_summary_ad_hourly->zone_id = 1;
     $doData_summary_ad_hourly->find();
     $this->assertEqual($doData_summary_ad_hourly->getRowCount(), 1);
     $doData_summary_ad_hourly->fetch();
     $this->assertEqual($doData_summary_ad_hourly->creative_id, 0);
     $this->assertEqual($doData_summary_ad_hourly->requests, 1000);
     $this->assertEqual($doData_summary_ad_hourly->impressions, 999);
     $this->assertEqual($doData_summary_ad_hourly->clicks, 5);
     $this->assertEqual($doData_summary_ad_hourly->conversions, 0);
     $this->assertEqual($doData_summary_ad_hourly->total_basket_value, 0.0);
     $this->assertEqual($doData_summary_ad_hourly->total_num_items, 0);
     $this->assertNull($doData_summary_ad_hourly->total_revenue);
     $this->assertNull($doData_summary_ad_hourly->total_cost);
     $this->assertNull($doData_summary_ad_hourly->total_techcost);
     $doData_summary_ad_hourly = OA_Dal::factoryDO('data_summary_ad_hourly');
     $doData_summary_ad_hourly->date_time = '2008-08-28 15:00:00';
     $doData_summary_ad_hourly->ad_id = 1;
     $doData_summary_ad_hourly->zone_id = 1;
     $doData_summary_ad_hourly->find();
     $this->assertEqual($doData_summary_ad_hourly->getRowCount(), 1);
     $doData_summary_ad_hourly->fetch();
     $this->assertEqual($doData_summary_ad_hourly->creative_id, 0);
     $this->assertEqual($doData_summary_ad_hourly->requests, 1100);
     $this->assertEqual($doData_summary_ad_hourly->impressions, 1099);
     $this->assertEqual($doData_summary_ad_hourly->clicks, 8);
     $this->assertEqual($doData_summary_ad_hourly->conversions, 6);
     $this->assertEqual($doData_summary_ad_hourly->total_basket_value, 130.98);
     $this->assertEqual($doData_summary_ad_hourly->total_num_items, 100);
     $this->assertNull($doData_summary_ad_hourly->total_revenue);
     $this->assertNull($doData_summary_ad_hourly->total_cost);
     $this->assertNull($doData_summary_ad_hourly->total_techcost);
     /**********************************************************************/
     // Remove the installed plugin
     TestEnv::uninstallPluginPackage('openXDeliveryLog', false);
 }
Ejemplo n.º 5
0
 function testGenerateTags()
 {
     if (!$this->zoneId) {
         return;
     }
     TestEnv::uninstallPluginPackage('openXInvocationTags');
     TestEnv::installPluginPackage('openXInvocationTags');
     $this->expectError();
     $this->assertFalse($this->oApi->generateTags(-1, 'foo'));
     $this->expectError();
     $this->assertFalse($this->oApi->generateTags($this->zoneId, 'foo'));
     $tag1 = $this->oApi->generateTags($this->zoneId, 'adjs');
     $tag2 = $this->oApi->generateTags($this->zoneId, 'adjs', array('source' => 'x'));
     $this->assertTrue($tag1);
     $this->assertTrue($tag2);
     $this->assertNotEqual($tag1, $tag2);
     TestEnv::uninstallPluginPackage('openXInvocationTags');
 }
 /**
  * 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();
 }
 /**
  * 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();
 }
Ejemplo n.º 8
0
 /**
  * A method to test the MAX_Delivery_log_logConversion() function.
  */
 function test_MAX_Delivery_log_logConversion()
 {
     $aConf =& $GLOBALS['_MAX']['CONF'];
     $aConf['maintenance']['operationInterval'] = 60;
     $GLOBALS['_MAX']['NOW'] = time();
     $oNowDate = new Date($GLOBALS['_MAX']['NOW']);
     $aDates = OX_OperationInterval::convertDateToOperationIntervalStartAndEndDates($oNowDate);
     $intervalStart = $aDates['start']->format('%Y-%m-%d %H:%M:%S');
     $oConversionDate = new Date();
     $oConversionDate->copy($oNowDate);
     $oConversionDate->subtractSeconds(60);
     $_SERVER['REMOTE_ADDR'] = '127.0.0.99';
     // Test to ensure that the openXDeliveryLog plugin's data bucket
     // table does not exist
     $oTable = new OA_DB_Table();
     $tableExists = $oTable->extistsTable($aConf['table']['prefix'] . 'data_bkt_a');
     $this->assertFalse($tableExists);
     // Test calling the main logging function without any plugins installed,
     // to ensure that this does not result in any kind of error
     $aConversion = array('action_type' => MAX_CONNECTION_AD_CLICK, 'tracker_type' => MAX_CONNECTION_TYPE_SALE, 'status' => MAX_CONNECTION_STATUS_APPROVED, 'cid' => 2, 'zid' => 3, 'dt' => $GLOBALS['_MAX']['NOW'] - 60, 'window' => 60);
     MAX_Delivery_log_logConversion(1, $aConversion);
     // Install the openXDeliveryLog plugin
     TestEnv::installPluginPackage('openXDeliveryLog', false);
     // Test to ensure that the openXDeliveryLog plugin's data bucket
     // table now does exist
     $tableExists = $oTable->extistsTable($aConf['table']['prefix'] . 'data_bkt_a');
     $this->assertTrue($tableExists);
     // Ensure that there are is nothing logged in the data bucket table
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->find();
     $rows = $doData_bkt_a->getRowCount();
     $this->assertEqual($rows, 0);
     // Call the conversion logging function
     $aConversionInfo = MAX_Delivery_log_logConversion(1, $aConversion);
     // Ensure that the data was logged correctly
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->find();
     $rows = $doData_bkt_a->getRowCount();
     $this->assertEqual($rows, 1);
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 1;
     $doData_bkt_a->find();
     $rows = $doData_bkt_a->getRowCount();
     $this->assertEqual($rows, 1);
     $doData_bkt_a->fetch();
     $this->assertEqual($doData_bkt_a->server_ip, 'singleDB');
     $this->assertEqual($doData_bkt_a->tracker_id, 1);
     $this->assertEqual($doData_bkt_a->date_time, $oNowDate->format('%Y-%m-%d %H:%M:%S'));
     $this->assertEqual($doData_bkt_a->action_date_time, $oConversionDate->format('%Y-%m-%d %H:%M:%S'));
     $this->assertEqual($doData_bkt_a->creative_id, 2);
     $this->assertEqual($doData_bkt_a->zone_id, 3);
     $this->assertEqual($doData_bkt_a->ip_address, '127.0.0.99');
     $this->assertEqual($doData_bkt_a->action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_bkt_a->window, 60);
     $this->assertEqual($doData_bkt_a->status, MAX_CONNECTION_STATUS_APPROVED);
     $this->assertTrue(is_array($aConversionInfo));
     $this->assertTrue(is_array($aConversionInfo['deliveryLog:oxLogConversion:logConversion']));
     $this->assertEqual($aConversionInfo['deliveryLog:oxLogConversion:logConversion']['server_conv_id'], 1);
     $this->assertEqual($aConversionInfo['deliveryLog:oxLogConversion:logConversion']['server_raw_ip'], 'singleDB');
     $aConversion['cid'] = 5;
     // Call the conversion logging function
     $aConversionInfo = MAX_Delivery_log_logConversion(1, $aConversion);
     // Ensure that the data was logged correctly
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->find();
     $rows = $doData_bkt_a->getRowCount();
     $this->assertEqual($rows, 2);
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 1;
     $doData_bkt_a->find();
     $rows = $doData_bkt_a->getRowCount();
     $this->assertEqual($rows, 1);
     $doData_bkt_a->fetch();
     $this->assertEqual($doData_bkt_a->server_ip, 'singleDB');
     $this->assertEqual($doData_bkt_a->tracker_id, 1);
     $this->assertEqual($doData_bkt_a->date_time, $oNowDate->format('%Y-%m-%d %H:%M:%S'));
     $this->assertEqual($doData_bkt_a->action_date_time, $oConversionDate->format('%Y-%m-%d %H:%M:%S'));
     $this->assertEqual($doData_bkt_a->creative_id, 2);
     $this->assertEqual($doData_bkt_a->zone_id, 3);
     $this->assertEqual($doData_bkt_a->ip_address, '127.0.0.99');
     $this->assertEqual($doData_bkt_a->action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_bkt_a->window, 60);
     $this->assertEqual($doData_bkt_a->status, MAX_CONNECTION_STATUS_APPROVED);
     $doData_bkt_a = OA_Dal::factoryDO('data_bkt_a');
     $doData_bkt_a->server_conv_id = 2;
     $doData_bkt_a->find();
     $rows = $doData_bkt_a->getRowCount();
     $this->assertEqual($rows, 1);
     $doData_bkt_a->fetch();
     $this->assertEqual($doData_bkt_a->server_ip, 'singleDB');
     $this->assertEqual($doData_bkt_a->tracker_id, 1);
     $this->assertEqual($doData_bkt_a->date_time, $oNowDate->format('%Y-%m-%d %H:%M:%S'));
     $this->assertEqual($doData_bkt_a->action_date_time, $oConversionDate->format('%Y-%m-%d %H:%M:%S'));
     $this->assertEqual($doData_bkt_a->creative_id, 5);
     $this->assertEqual($doData_bkt_a->zone_id, 3);
     $this->assertEqual($doData_bkt_a->ip_address, '127.0.0.99');
     $this->assertEqual($doData_bkt_a->action, MAX_CONNECTION_AD_CLICK);
     $this->assertEqual($doData_bkt_a->window, 60);
     $this->assertEqual($doData_bkt_a->status, MAX_CONNECTION_STATUS_APPROVED);
     $this->assertTrue(is_array($aConversionInfo));
     $this->assertTrue(is_array($aConversionInfo['deliveryLog:oxLogConversion:logConversion']));
     $this->assertEqual($aConversionInfo['deliveryLog:oxLogConversion:logConversion']['server_conv_id'], 2);
     $this->assertEqual($aConversionInfo['deliveryLog:oxLogConversion:logConversion']['server_raw_ip'], 'singleDB');
     // Uninstall the openXDeliveryLog plugin
     TestEnv::uninstallPluginPackage('openXDeliveryLog', false);
     // Restore the test configuration file
     TestEnv::restoreConfig();
 }
 /**
  * A method to test the callStaticMethod() method.
  */
 function testCallStaticMethod()
 {
     // Set the error handling class' handleErrors() method as
     // the error handler for PHP for this test.
     $oTestErrorHandler = new TestErrorHandler();
     PEAR::pushErrorHandling(PEAR_ERROR_CALLBACK, array(&$oTestErrorHandler, 'handleErrors'));
     // Test with a bad module/package
     $return = MAX_Plugin::callStaticMethod('foo', 'bar', null, 'foo');
     $this->assertEqual(count($oTestErrorHandler->aErrors), 1);
     $this->assertEqual($oTestErrorHandler->aErrors[0]->message, 'Unable to include the file ' . MAX_PATH . '/plugins/foo/bar/bar' . MAX_PLUGINS_EXTENSION . '.');
     $this->assertFalse($result);
     $oTestErrorHandler->reset();
     // Unset the error handler
     PEAR::popErrorHandling();
     // Set the error handling class' handleErrors() method as
     // the error handler for PHP for this test.
     $oTestErrorHandler = new TestErrorHandler();
     PEAR::pushErrorHandling(PEAR_ERROR_CALLBACK, array(&$oTestErrorHandler, 'handleErrors'));
     // Test with a bad method
     $return = MAX_Plugin::callStaticMethod('reports', 'standard', 'advertisingAnalysisReport', 'foo');
     $this->assertEqual(count($oTestErrorHandler->aErrors), 1);
     $this->assertEqual($oTestErrorHandler->aErrors[0]->message, "Method 'foo()' not defined in class 'Plugins_Reports_Standard_AdvertisingAnalysisReport'.");
     $this->assertFalse($result);
     $oTestErrorHandler->reset();
     // Unset the error handler
     PEAR::popErrorHandling();
     unset($GLOBALS['_MAX']['CONF']['plugins']['openXTests']);
     unset($GLOBALS['_MAX']['CONF']['pluginGroupComponents']['Dummy']);
     TestEnv::installPluginPackage('openXTests');
     // Test with a real method, no parameters
     $return = OX_Component::callStaticMethod('deliveryLimitations', 'Dummy', 'Dummy', 'isAllowed');
     $this->assertTrue($return);
     // Test with a real method, with parameters
     $return = OX_Component::callStaticMethod('deliveryLimitations', 'Dummy', 'Dummy', 'isAllowed', 'disallow');
     $this->assertFalse($return);
     TestEnv::uninstallPluginPackage('openXTests');
 }
 function tearDown()
 {
     $_COOKIE = $this->tmpCookie;
     // Uninstall
     TestEnv::uninstallPluginPackage('openXTests');
 }
Ejemplo n.º 11
0
 function test_exportPlugin()
 {
     TestEnv::installPluginPackage('openXTests', false);
     $pathPackages = $GLOBALS['_MAX']['CONF']['pluginPaths']['packages'];
     $pathPlugins = $GLOBALS['_MAX']['CONF']['pluginPaths']['plugins'];
     $pathAdmin = $GLOBALS['_MAX']['CONF']['pluginPaths']['admin'];
     $oExport = new OX_PluginExport();
     $oExport->init('openXTests');
     $pathExport = $oExport->outputDir;
     @unlink($pathExport . 'openXTests.zip');
     $this->assertTrue($oExport->exportPlugin('openXTests'));
     $baseDir = MAX_PATH . '/var/tmp/openXTests';
     $this->assertTrue(file_exists($pathExport . 'openXTests.zip'));
     $oZip = new PclZip($pathExport . 'openXTests.zip');
     $aContents = $oZip->listContent();
     $this->assertIsA($aContents, 'array');
     $this->assertEqual(count($aContents), 4);
     $this->assertEqual($aContents[0]['status'], 'ok');
     $this->assertEqual($aContents[0]['filename'], ltrim($pathPackages, '/') . 'Dummy/Dummy.xml');
     $this->assertEqual($aContents[0]['stored_filename'], ltrim($pathPackages, '/') . 'Dummy/Dummy.xml');
     $this->assertEqual($aContents[1]['status'], 'ok');
     $this->assertEqual($aContents[1]['filename'], ltrim($pathPlugins, '/') . 'deliveryLimitations/Dummy/Dummy.class.php');
     $this->assertEqual($aContents[1]['stored_filename'], ltrim($pathPlugins, '/') . 'deliveryLimitations/Dummy/Dummy.class.php');
     $this->assertEqual($aContents[2]['status'], 'ok');
     $this->assertEqual($aContents[2]['filename'], ltrim($pathPlugins, '/') . 'deliveryLimitations/Dummy/Dummy.delivery.php');
     $this->assertEqual($aContents[2]['stored_filename'], ltrim($pathPlugins, '/') . 'deliveryLimitations/Dummy/Dummy.delivery.php');
     $this->assertEqual($aContents[3]['status'], 'ok');
     $this->assertEqual($aContents[3]['filename'], ltrim($pathPackages, '/') . 'openXTests.xml');
     $this->assertEqual($aContents[3]['stored_filename'], ltrim($pathPackages, '/') . 'openXTests.xml');
     @unlink($pathExport . 'openXTests.zip');
     $aContentsNew = $aContents;
     $oZip = new PclZip(MAX_PATH . '/plugins_repo/release/openXTests.zip');
     $aContentsOld = $oZip->listContent();
     foreach ($aContentsOld as $i => $aItemOld) {
         if (!$aItemOld['folder']) {
             foreach ($aContentsNew as $n => $aItemNew) {
                 if ($aItemOld['filename'] == $aItemNew['filename'] && $aItemOld['stored_filename'] == $aItemNew['stored_filename'] && $aItemOld['size'] == $aItemNew['size'] && $aItemOld['crc'] == $aItemNew['crc']) {
                     unset($aContentsOld[$i]);
                     unset($aContentsNew[$n]);
                     break;
                 }
             }
         } else {
             // For somewhat reason "new" doesn't seem to contain folders. Bug?
             unset($aContentsOld[$i]);
         }
     }
     $this->assertFalse(count($aContentsNew));
     $this->assertFalse(count($aContentsOld));
     TestEnv::uninstallPluginPackage('openXTests', false);
     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();
 }
Ejemplo n.º 13
0
 function testGetAllowedTags()
 {
     TestEnv::installPluginPackage('openXInvocationTags');
     $dllZone = new OA_Dll_Zone();
     $aZoneAllowedTags = $dllZone->getAllowedTags();
     // Test if only and all allowed tags are returned
     $count = 0;
     $invocationTags =& OX_Component::getComponents('invocationTags');
     foreach ($invocationTags as $pluginKey => $invocationTag) {
         if ($invocationTag->isAllowed(null, null)) {
             $count++;
             $this->assertTrue(in_array($pluginKey, $aZoneAllowedTags));
         } else {
             $this->assertFalse(in_array($pluginKey, $aZoneAllowedTags));
         }
     }
     $this->assertEqual($count, count($aZoneAllowedTags));
     // tests if spc is disallowed anyway
     $GLOBALS['_MAX']['CONF']['spc']['allowed'] = true;
     $aZoneAllowedTags = $dllZone->getAllowedTags();
     $this->assertFalse(in_array('spc', $aZoneAllowedTags));
     unset($GLOBALS['_MAX']['CONF']['spc']['allowed']);
     TestEnv::uninstallPluginPackage('openXInvocationTags');
 }
 /**
  * A method to test the _locateComponents() method.
  */
 function test_locateComponents()
 {
     $aConf = $GLOBALS['_MAX']['CONF'];
     // Test 1: There are no deliveryLog group plugins installed, test that
     //         an empty array is returned
     $oSummariseIntermediate = new OX_Maintenance_Statistics_Task_MigrateBucketData();
     $aComponents = $oSummariseIntermediate->_locateComponents();
     $this->assertTrue(is_array($aComponents));
     $this->assertTrue(empty($aComponents));
     // Setup the default OpenX delivery logging plugin for the next test
     TestEnv::installPluginPackage('openXDeliveryLog', false);
     // Test 2: Test with the default OpenX delivery logging plugin installed
     $oSummariseIntermediate = new OX_Maintenance_Statistics_Task_MigrateBucketData();
     $aComponents = $oSummariseIntermediate->_locateComponents();
     $this->assertTrue(is_array($aComponents));
     $this->assertEqual(count($aComponents), 3);
     $dia = $aConf['table']['prefix'] . 'data_intermediate_ad';
     $this->assertTrue(is_array($aComponents[$dia]));
     $this->assertEqual(count($aComponents[$dia]), 3);
     $aComponentClasses = array();
     foreach ($aComponents[$dia] as $oComponent) {
         $aComponentClasses[] = get_class($oComponent);
     }
     $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogRequest_LogRequest', $aComponentClasses));
     $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogImpression_LogImpression', $aComponentClasses));
     $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogClick_LogClick', $aComponentClasses));
     $diac = $aConf['table']['prefix'] . 'data_intermediate_ad_connection';
     $this->assertTrue(is_array($aComponents[$diac]));
     $this->assertEqual(count($aComponents[$diac]), 1);
     $aComponentClasses = array();
     foreach ($aComponents[$diac] as $oComponent) {
         $aComponentClasses[] = get_class($oComponent);
     }
     $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogConversion_LogConversion', $aComponentClasses));
     $diavv = $aConf['table']['prefix'] . 'data_intermediate_ad_variable_value';
     $this->assertTrue(is_array($aComponents[$diavv]));
     $this->assertEqual(count($aComponents[$diavv]), 1);
     $aComponentClasses = array();
     foreach ($aComponents[$diavv] as $oComponent) {
         $aComponentClasses[] = get_class($oComponent);
     }
     $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogConversion_LogConversionVariable', $aComponentClasses));
     /*
     TODO: move this test from core code to the plugin.  only bundled plugins (or the test plugin) can be used in core tests
             // Setup the default OpenX country based impression and click delivery logging plugin for the next test
             TestEnv::installPluginPackage('openXDeliveryLogCountry', false);
             // Test 3: Test with the default OpenX delivery logging plugin and the OpenX country based impression
             //         and click delivery logging plugin installed
             $aComponents = $oSummariseIntermediate->_locateComponents();
             $this->assertTrue(is_array($aComponents));
             $this->assertEqual(count($aComponents), 4);
             $dia = $aConf['table']['prefix'] . 'data_intermediate_ad';
             $this->assertTrue(is_array($aComponents[$dia]));
             $this->assertEqual(count($aComponents[$dia]), 4);
             $aComponentClasses = array();
             foreach ($aComponents[$dia] as $oComponent) {
                 $aComponentClasses[] = get_class($oComponent);
             }
             $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogRequest_LogRequest', $aComponentClasses));
             $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogImpression_LogImpression', $aComponentClasses));
             $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogClick_LogClick', $aComponentClasses));
             $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogImpression_logImpressionBackup', $aComponentClasses));
             $diac = $aConf['table']['prefix'] . 'data_intermediate_ad_connection';
             $this->assertTrue(is_array($aComponents[$diac]));
             $this->assertEqual(count($aComponents[$diac]), 1);
             $aComponentClasses = array();
             foreach ($aComponents[$diac] as $oComponent) {
                 $aComponentClasses[] = get_class($oComponent);
             }
             $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogConversion_LogConversion', $aComponentClasses));
             $diavv = $aConf['table']['prefix'] . 'data_intermediate_ad_variable_value';
             $this->assertTrue(is_array($aComponents[$diavv]));
             $this->assertEqual(count($aComponents[$diavv]), 1);
             $aComponentClasses = array();
             foreach ($aComponents[$diavv] as $oComponent) {
                 $aComponentClasses[] = get_class($oComponent);
             }
             $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogConversion_LogConversionVariable', $aComponentClasses));
             $sc = $aConf['table']['prefix'] . 'stats_country';
             $this->assertTrue(is_array($aComponents[$sc]));
             $this->assertEqual(count($aComponents[$sc]), 2);
             $aComponentClasses = array();
             foreach ($aComponents[$sc] as $oComponent) {
                 $aComponentClasses[] = get_class($oComponent);
             }
             $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogCountry_LogImpressionCountry', $aComponentClasses));
             $this->assertTrue(in_array('Plugins_DeliveryLog_OxLogCountry_LogClickCountry', $aComponentClasses));
             // Uninstall the installed plugins
             TestEnv::uninstallPluginPackage('openXDeliveryLogCountry', false);
     */
     // Uninstall the installed plugins
     TestEnv::uninstallPluginPackage('openXDeliveryLog', false);
     // Reset the testing environment
     TestEnv::restoreEnv();
 }
 function tearDown()
 {
     TestEnv::uninstallPluginPackage('openXDeliveryCacheStore');
 }
 /**
  * Tests the _getEarliestLoggedDeliveryData() method.
  */
 function test_getEarliestLoggedDeliveryData()
 {
     // Create a reference to the OpenX configuration, and set it to
     // 15 minutes
     $aConf =& $GLOBALS['_MAX']['CONF'];
     $aConf['maintenance']['operationInterval'] = 15;
     // Prepare the OX_Maintenance_Statistics_Task_SetUpdateRequirements class to test with
     $oSetUpdateRequirements = new OX_Maintenance_Statistics_Task_SetUpdateRequirements();
     // Test 1: There are no deliveryLog group plugins installed, test that null is returned
     $oDate = $oSetUpdateRequirements->_getEarliestLoggedDeliveryData(OX_DAL_MAINTENANCE_STATISTICS_UPDATE_OI);
     $this->assertNull($oDate);
     // 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 test
     TestEnv::installPluginPackage('openXDeliveryLog', false);
     // Test 2: There is no delivery data logged, test that null is returned
     $oDate = $oSetUpdateRequirements->_getEarliestLoggedDeliveryData(OX_DAL_MAINTENANCE_STATISTICS_UPDATE_OI);
     $this->assertNull($oDate);
     // Ask the appropriate default OpenX delivery logging plugin component
     // to log a click
     require_once MAX_PATH . $aConf['pluginPaths']['plugins'] . '/deliveryLog/oxLogClick/logClick.delivery.php';
     $GLOBALS['_MAX']['deliveryData'] = array('interval_start' => '2008-08-12 14:15:00', 'creative_id' => 1, 'zone_id' => 1);
     Plugin_deliveryLog_oxLogClick_logClick_Delivery_logClick();
     // Test 3: Test with just the one click logged, and ensure that the correct
     //         date/time is returned
     $oDate = $oSetUpdateRequirements->_getEarliestLoggedDeliveryData(OX_DAL_MAINTENANCE_STATISTICS_UPDATE_OI);
     $this->assertEqual($oDate, new Date('2008-08-12 14:14:59'));
     // Ask the appropriate default OpenX delivery logging plugin component
     // to log a later click
     $GLOBALS['_MAX']['deliveryData'] = array('interval_start' => '2008-08-12 14:30:00', 'creative_id' => 1, 'zone_id' => 1);
     Plugin_deliveryLog_oxLogClick_logClick_Delivery_logClick();
     // Test 4: Test with just the two clicks logged, and ensure that the correct
     //         date/time is returned (i.e. unchanged from the last test)
     $oDate = $oSetUpdateRequirements->_getEarliestLoggedDeliveryData(OX_DAL_MAINTENANCE_STATISTICS_UPDATE_OI);
     $this->assertEqual($oDate, new Date('2008-08-12 14:14:59'));
     // Ask the appropriate default OpenX delivery logging plugin component
     // to log an earlier click
     $GLOBALS['_MAX']['deliveryData'] = array('interval_start' => '2008-08-12 14:00:00', 'creative_id' => 1, 'zone_id' => 1);
     Plugin_deliveryLog_oxLogClick_logClick_Delivery_logClick();
     // Test 5: Test with just the three clicks logged, and ensure that the correct
     //         date/time is returned (i.e. earlier than the last tests)
     $oDate = $oSetUpdateRequirements->_getEarliestLoggedDeliveryData(OX_DAL_MAINTENANCE_STATISTICS_UPDATE_OI);
     $this->assertEqual($oDate, new Date('2008-08-12 13:59:59'));
     // Ask the appropriate default OpenX delivery logging plugin component
     // to log an earlier impression
     require_once MAX_PATH . $aConf['pluginPaths']['plugins'] . '/deliveryLog/oxLogImpression/logImpression.delivery.php';
     $GLOBALS['_MAX']['deliveryData'] = array('interval_start' => '2008-08-12 13:45:00', 'creative_id' => 1, 'zone_id' => 1);
     Plugin_deliveryLog_oxLogImpression_logImpression_Delivery_logImpression();
     // Test 6: Test with just the three clicks and one impression logged, and
     //         ensure that the correct date/time is returned (i.e. based on
     //         the earliest data, which is the impression).
     $oDate = $oSetUpdateRequirements->_getEarliestLoggedDeliveryData(OX_DAL_MAINTENANCE_STATISTICS_UPDATE_OI);
     $this->assertEqual($oDate, new Date('2008-08-12 13:44:59'));
     // Test 7: Re-test, but calling for the date/time returned to be based
     //         on the hour boundary, not the operation interval boundary
     $oDate = $oSetUpdateRequirements->_getEarliestLoggedDeliveryData(OX_DAL_MAINTENANCE_STATISTICS_UPDATE_HOUR);
     $this->assertEqual($oDate, new Date('2008-08-12 12:59:59'));
     // Uninstall the installed plugin
     TestEnv::uninstallPluginPackage('openXDeliveryLog', false);
     // Reset the testing environment
     TestEnv::restoreEnv();
 }
 /**
  * A method to test when there are old format raw requests,
  * impressions and clicks, in the operation interval being
  * migrated.
  */
 function testSimpleValidData()
 {
     $aConf =& $GLOBALS['_MAX']['CONF'];
     $aConf['maintenance']['operationInterval'] = 60;
     // Prepare an array of the required tables used in testing
     $aTables = array($aConf['table']['prefix'] . $aConf['table']['data_raw_ad_request'] => $aConf['table']['prefix'] . 'data_bkt_r', $aConf['table']['prefix'] . $aConf['table']['data_raw_ad_impression'] => $aConf['table']['prefix'] . 'data_bkt_m', $aConf['table']['prefix'] . $aConf['table']['data_raw_ad_click'] => $aConf['table']['prefix'] . 'data_bkt_c');
     // Install the openXDeliveryLog plugin, which will create the
     // data bucket tables required for testing
     TestEnv::installPluginPackage('openXDeliveryLog', false);
     // Ensure that there are no old format raw data
     foreach ($aTables as $rawTable => $bucketTable) {
         $query = "\n                SELECT\n                    COUNT(*) AS count\n                FROM\n                    " . $this->oDbh->quoteIdentifier($rawTable, true);
         $rsResult = $this->oDbh->query($query);
         $this->assertNotA($rsReults, 'PEAR_Error');
         $rows = $rsResult->numRows();
         $this->assertEqual($rows, 1);
         $aRow = $rsResult->fetchRow();
         $this->assertEqual($aRow['count'], 0);
     }
     // Ensure that there are no new format bucket data
     foreach ($aTables as $rawTable => $bucketTable) {
         $query = "\n                SELECT\n                    COUNT(*) AS count\n                FROM\n                    " . $this->oDbh->quoteIdentifier($bucketTable, true);
         $rsResult = $this->oDbh->query($query);
         $this->assertNotA($rsReults, 'PEAR_Error');
         $rows = $rsResult->numRows();
         $this->assertEqual($rows, 1);
         $aRow = $rsResult->fetchRow();
         $this->assertEqual($aRow['count'], 0);
     }
     // Insert some old style raw data in an operation interval
     // that will be migrated
     foreach ($aTables as $rawTable => $bucketTable) {
         $query = "\n                INSERT INTO\n                    " . $this->oDbh->quoteIdentifier($rawTable, true) . "\n                    (\n                        date_time,\n                        ad_id,\n                        creative_id,\n                        zone_id\n                    )\n                VALUES\n                    (\n                        '2009-01-09 12:30:00',\n                        1,\n                        0,\n                        1\n                    )";
         $this->oDbh->exec($query);
     }
     // Ensure that the old format raw data was inserted correctly
     foreach ($aTables as $rawTable => $bucketTable) {
         $query = "\n                SELECT\n                    COUNT(*) AS count\n                FROM\n                    " . $this->oDbh->quoteIdentifier($rawTable, true);
         $rsResult = $this->oDbh->query($query);
         $this->assertNotA($rsReults, 'PEAR_Error');
         $rows = $rsResult->numRows();
         $this->assertEqual($rows, 1);
         $aRow = $rsResult->fetchRow();
         $this->assertEqual($aRow['count'], 1);
     }
     // Run the migration of raw data DAL code for a given OI
     $oStart = new Date('2009-01-09 12:00:00');
     $oEnd = new Date('2009-01-09 12:59:59');
     $this->oDal->migrateRawRequests($oStart, $oEnd);
     $this->oDal->migrateRawImpressions($oStart, $oEnd);
     $this->oDal->migrateRawClicks($oStart, $oEnd);
     // Test that the data was migrated correctly
     foreach ($aTables as $rawTable => $bucketTable) {
         $query = "\n                SELECT\n                    COUNT(*) AS count\n                FROM\n                    " . $this->oDbh->quoteIdentifier($bucketTable, true);
         $rsResult = $this->oDbh->query($query);
         $this->assertNotA($rsReults, 'PEAR_Error');
         $rows = $rsResult->numRows();
         $this->assertEqual($rows, 1);
         $aRow = $rsResult->fetchRow();
         $this->assertEqual($aRow['count'], 1);
         $query = "\n                SELECT\n                    *\n                FROM\n                    " . $this->oDbh->quoteIdentifier($bucketTable, true);
         $rsResult = $this->oDbh->query($query);
         $this->assertNotA($rsReults, 'PEAR_Error');
         $rows = $rsResult->numRows();
         $this->assertEqual($rows, 1);
         $aRow = $rsResult->fetchRow();
         $this->assertEqual($aRow['interval_start'], '2009-01-09 12:00:00');
         $this->assertEqual($aRow['creative_id'], 1);
         $this->assertEqual($aRow['zone_id'], 1);
         $this->assertEqual($aRow['count'], 1);
     }
     // Uninstall the installed plugin
     TestEnv::uninstallPluginPackage('openXDeliveryLog', false);
     // Restore the test environment configuration
     TestEnv::restoreConfig();
 }
 /**
  * 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();
 }
 function tearDown()
 {
     // Uninstall the openXDeliveryLog plugin
     TestEnv::uninstallPluginPackage('openXDeliveryLimitations', false);
 }
Ejemplo n.º 20
0
 /**
  * A method to test the MAX_Delivery_log_logAdRequest(),
  * MAX_Delivery_log_logAdImpression() and MAX_Delivery_log_logAdClick()
  * functions.
  */
 function testRequestImpressionClickFunction()
 {
     $aConf =& $GLOBALS['_MAX']['CONF'];
     $aConf['maintenance']['operationInterval'] = 60;
     $GLOBALS['_MAX']['NOW'] = time();
     $oNowDate = new Date($GLOBALS['_MAX']['NOW']);
     $aDates = OX_OperationInterval::convertDateToOperationIntervalStartAndEndDates($oNowDate);
     $intervalStart = $aDates['start']->format('%Y-%m-%d %H:%M:%S');
     $aTables = array('MAX_Delivery_log_logAdRequest' => 'data_bkt_r', 'MAX_Delivery_log_logAdImpression' => 'data_bkt_m', 'MAX_Delivery_log_logAdClick' => 'data_bkt_c');
     foreach ($aTables as $function => $table) {
         // Test to ensure that the openXDeliveryLog plugin's data bucket
         // table does not exist
         $oTable = new OA_DB_Table();
         $tableExists = $oTable->extistsTable($aConf['table']['prefix'] . $table);
         $this->assertFalse($tableExists);
         // Test calling the main logging function without any plugins installed,
         // to ensure that this does not result in any kind of error
         unset($GLOBALS['_MAX']['deliveryData']['Plugin_deliveryDataPrepare_oxDeliveryDataPrepare_dataCommon']);
         call_user_func_array($function, array(1, 1));
     }
     // Install the openXDeliveryLog plugin
     TestEnv::installPluginPackage('openXDeliveryLog', false);
     foreach ($aTables as $function => $table) {
         // Test to ensure that the openXDeliveryLog plugin's data bucket
         // table now does exist
         $tableExists = $oTable->extistsTable($aConf['table']['prefix'] . $table);
         $this->assertTrue($tableExists);
         // Ensure that there are is nothing logged in the data bucket table
         $doData_bkt = OA_Dal::factoryDO($table);
         $doData_bkt->find();
         $rows = $doData_bkt->getRowCount();
         $this->assertEqual($rows, 0);
         // Call the main logging function
         unset($GLOBALS['_MAX']['deliveryData']['Plugin_deliveryDataPrepare_oxDeliveryDataPrepare_dataCommon']);
         call_user_func_array($function, array(1, 1));
         // Ensure that the data was logged correctly
         $doData_bkt = OA_Dal::factoryDO($table);
         $doData_bkt->find();
         $rows = $doData_bkt->getRowCount();
         if ($table == 'data_bkt_r') {
             // Request logging is disabled by default. Nothing should have been logged by now
             $this->assertEqual($rows, 0);
             // Enable it
             $GLOBALS['_MAX']['CONF']['logging']['adRequests'] = true;
             unset($GLOBALS['_MAX']['deliveryData']['Plugin_deliveryDataPrepare_oxDeliveryDataPrepare_dataCommon']);
             call_user_func_array($function, array(1, 1));
             // Now ensure that the data was logged correctly
             $doData_bkt->find();
             $rows = $doData_bkt->getRowCount();
         }
         $this->assertEqual($rows, 1);
         $doData_bkt = OA_Dal::factoryDO($table);
         $doData_bkt->creative_id = 1;
         $doData_bkt->zone_id = 1;
         $doData_bkt->find();
         $rows = $doData_bkt->getRowCount();
         $this->assertEqual($rows, 1);
         $doData_bkt->fetch();
         $this->assertEqual($doData_bkt->count, 1);
         $this->assertEqual($doData_bkt->interval_start, $intervalStart);
         // Call the main logging function again
         unset($GLOBALS['_MAX']['deliveryData']['Plugin_deliveryDataPrepare_oxDeliveryDataPrepare_dataCommon']);
         call_user_func_array($function, array(1, 1));
         // Ensure that the data was logged correctly
         $doData_bkt = OA_Dal::factoryDO($table);
         $doData_bkt->find();
         $rows = $doData_bkt->getRowCount();
         $this->assertEqual($rows, 1);
         $doData_bkt = OA_Dal::factoryDO($table);
         $doData_bkt->creative_id = 1;
         $doData_bkt->zone_id = 1;
         $doData_bkt->find();
         $rows = $doData_bkt->getRowCount();
         $this->assertEqual($rows, 1);
         $doData_bkt->fetch();
         $this->assertEqual($doData_bkt->count, 2);
         $this->assertEqual($doData_bkt->interval_start, $intervalStart);
         // Call the main logging function again, but with a differen
         // creative/zone pair
         unset($GLOBALS['_MAX']['deliveryData']['Plugin_deliveryDataPrepare_oxDeliveryDataPrepare_dataCommon']);
         call_user_func_array($function, array(2, 1));
         // Ensure that the data was logged correctly
         $doData_bkt = OA_Dal::factoryDO($table);
         $doData_bkt->find();
         $rows = $doData_bkt->getRowCount();
         $this->assertEqual($rows, 2);
         $doData_bkt = OA_Dal::factoryDO($table);
         $doData_bkt->creative_id = 1;
         $doData_bkt->zone_id = 1;
         $doData_bkt->find();
         $rows = $doData_bkt->getRowCount();
         $this->assertEqual($rows, 1);
         $doData_bkt->fetch();
         $this->assertEqual($doData_bkt->count, 2);
         $this->assertEqual($doData_bkt->interval_start, $intervalStart);
         $doData_bkt = OA_Dal::factoryDO($table);
         $doData_bkt->creative_id = 2;
         $doData_bkt->zone_id = 1;
         $doData_bkt->find();
         $rows = $doData_bkt->getRowCount();
         $this->assertEqual($rows, 1);
         $doData_bkt->fetch();
         $this->assertEqual($doData_bkt->count, 1);
         $this->assertEqual($doData_bkt->interval_start, $intervalStart);
     }
     // Uninstall the openXDeliveryLog plugin
     TestEnv::uninstallPluginPackage('openXDeliveryLog', false);
     // Restore the test configuration file
     TestEnv::restoreConfig();
 }
 function tearDown()
 {
     TestEnv::uninstallPluginPackage('openXBannerTypes');
 }
 function tearDown()
 {
     TestEnv::uninstallPluginPackage('demoExtension', false);
     TestEnv::clearMenuCache();
 }