public function testDatabaseBackupAndRestore() { // Create new database (zurmo_wacky). if (RedBeanDatabase::getDatabaseType() == 'mysql') { $this->assertTrue(DatabaseCompatibilityUtil::createDatabase('mysql', $this->hostname, $this->rootUsername, $this->rootPassword, $this->databasePort, $this->temporaryDatabaseName)); $connection = @mysql_connect($this->hostname . ':' . $this->databasePort, $this->rootUsername, $this->rootPassword); $this->assertTrue(is_resource($connection)); @mysql_select_db($this->temporaryDatabaseName); @mysql_query("create table temptable (temptable_id int(11) unsigned not null)", $connection); @mysql_query("insert into temptable values ('5')", $connection); @mysql_query("insert into temptable values ('10')", $connection); $result = @mysql_query("SELECT count(*) from temptable"); $totalRows = mysql_fetch_row($result); @mysql_close($connection); $this->assertEquals(2, $totalRows[0]); $this->assertTrue(DatabaseCompatibilityUtil::backupDatabase('mysql', $this->hostname, $this->rootUsername, $this->rootPassword, $this->temporaryDatabaseName, $this->databaseBackupTestFile)); //Drop database, and restore it from backup. $this->assertTrue(DatabaseCompatibilityUtil::createDatabase('mysql', $this->hostname, $this->rootUsername, $this->rootPassword, $this->databasePort, $this->temporaryDatabaseName)); $this->assertTrue(DatabaseCompatibilityUtil::restoreDatabase('mysql', $this->hostname, $this->rootUsername, $this->rootPassword, $this->temporaryDatabaseName, $this->databaseBackupTestFile)); $connection = @mysql_connect($this->hostname . ':' . $this->databasePort, $this->rootUsername, $this->rootPassword); $this->assertTrue(is_resource($connection)); @mysql_select_db($this->temporaryDatabaseName); $result = @mysql_query("SELECT count(*) from temptable"); $totalRows = mysql_fetch_row($result); $result = @mysql_query("SELECT * from temptable"); $rows1 = mysql_fetch_row($result); $rows2 = mysql_fetch_row($result); @mysql_close($connection); $this->assertEquals(2, $totalRows[0]); $this->assertEquals(5, $rows1[0]); $this->assertEquals(10, $rows2[0]); } }
/** * Restore database from backup file. * Database must be empty before restore starts. * @param string $filePath * @param MessageStreamer $messageStreamer * @param $databaseType * @param $databaseHost * @param $databaseName * @param $databasePort * @param $databaseUsername * @param $databasePassword */ protected function restoreDatabase($filePath, $messageStreamer, $databaseType, $databaseHost, $databaseName, $databasePort, $databaseUsername, $databasePassword) { $messageStreamer->add(Zurmo::t('Commands', 'Starting database restore process.')); $result = DatabaseCompatibilityUtil::restoreDatabase($databaseType, $databaseHost, $databaseUsername, $databasePassword, $databasePort, $databaseName, $filePath); if ($result) { $messageStreamer->add(Zurmo::t('Commands', 'Database restored.')); } else { $messageStreamer->add(Zurmo::t('Commands', 'There was an error during restore.')); $messageStreamer->add(Zurmo::t('Commands', 'Please restore database manually.')); } }