示例#1
0
 public function tearDown()
 {
     parent::tearDown();
     Piwik_DataTable_Manager::getInstance()->deleteAll();
     Piwik_Option::getInstance()->clearCache();
     Piwik_Common::deleteTrackerCache();
     Piwik_Site::clearCache();
     Piwik::truncateAllTables();
     Piwik_TablePartitioning::$tablesAlreadyInstalled = null;
 }
示例#2
0
 public function tearDown()
 {
     Piwik::truncateAllTables();
 }
 /**
  * Truncates all tables then inserts the data in $tables into each
  * mapped table.
  * 
  * @param array $tables Array mapping table names with arrays of row data.
  */
 protected static function restoreDbTables($tables)
 {
     // truncate existing tables
     Piwik::truncateAllTables();
     // insert data
     $existingTables = Piwik::getTablesInstalled();
     foreach ($tables as $table => $rows) {
         // create table if it's an archive table
         if (strpos($table, 'archive_') !== false && !in_array($table, $existingTables)) {
             $tableType = strpos($table, 'archive_numeric') !== false ? 'archive_numeric' : 'archive_blob';
             $createSql = Piwik::getTableCreateSql($tableType);
             $createSql = str_replace(Piwik_Common::prefixTable($tableType), $table, $createSql);
             Piwik_Query($createSql);
         }
         if (empty($rows)) {
             continue;
         }
         $rowsSql = array();
         foreach ($rows as $row) {
             $values = array();
             foreach ($row as $name => $value) {
                 if (is_null($value)) {
                     $values[] = 'NULL';
                 } else {
                     if (is_numeric($value)) {
                         $values[] = $value;
                     } else {
                         if (!ctype_print($value)) {
                             $values[] = "x'" . bin2hex(substr($value, 1)) . "'";
                         } else {
                             $values[] = "'{$value}'";
                         }
                     }
                 }
             }
             $rowsSql[] = "(" . implode(',', $values) . ")";
         }
         $sql = "INSERT INTO {$table} VALUES " . implode(',', $rowsSql);
         Piwik_Query($sql);
     }
 }
示例#4
0
 /**
  * Test that purgeData works when there's no data.
  *
  * @group Plugins
  * @group PrivacyManager
  */
 public function testPurgeDataDeleteLogsNoData()
 {
     Piwik::truncateAllTables();
     foreach (Piwik::getTablesArchivesInstalled() as $table) {
         Piwik_Exec("DROP TABLE {$table}");
     }
     // get purge data prediction
     $prediction = Piwik_PrivacyManager::getPurgeEstimate();
     // perform checks on prediction
     $expectedPrediction = array();
     $this->assertEquals($expectedPrediction, $prediction);
     // purge data
     $this->_setTimeToRun();
     $this->instance->deleteLogData();
     $this->instance->deleteReportData();
     // perform checks
     $this->assertEquals(0, $this->_getTableCount('log_visit'));
     $this->assertEquals(0, $this->_getTableCount('log_conversion'));
     $this->assertEquals(0, $this->_getTableCount('log_link_visit_action'));
     $this->assertEquals(0, $this->_getTableCount('log_conversion_item'));
     $archiveTables = self::_getArchiveTableNames();
     $this->assertFalse($this->_tableExists($archiveTables['numeric'][0]));
     // January
     $this->assertFalse($this->_tableExists($archiveTables['numeric'][1]));
     // February
     $this->assertFalse($this->_tableExists($archiveTables['blob'][0]));
     // January
     $this->assertFalse($this->_tableExists($archiveTables['blob'][1]));
     // February
 }