public void TestBackupToBlobDirectWithCompress() { BackupAzureTables instanceBackup = new BackupAzureTables(AzureStorageConfigConnection, AzureBlobStorageConfigConnection); CopyAzureTables instanceCopy = new CopyAzureTables(AzureStorageConfigConnection); DeleteAzureTables instanceDelete = new DeleteAzureTables(AzureStorageConfigConnection); RestoreAzureTables instanceRestore = new RestoreAzureTables(AzureStorageConfigConnection, AzureBlobStorageConfigConnection); InitializeTables(instanceDelete, instanceRestore, FileNamePathThatExists_SystemLogs); List <Filter> Filters = new List <Filter>(); Filters.Add(new Filter("RowKey", "=", "User1")); Filters.Add(new Filter("RowKey", "=", "User2", "OR")); string copySetup = instanceCopy.CopyTableToTable(TableNameFrom, TableNameTo, 30); int InitialRowCount = ExtractNextInt(copySetup, "total records"); string backupToBlob = instanceBackup.BackupTableToBlobDirect(TableNameFrom, BlobDirectRoot, true, 10, 10); int BackupRowCount = ExtractNextInt(backupToBlob, "total records"); //Need to restore to confirm string restoreResult = instanceRestore.RestoreTableFromBlobDirect(TableNameRestoreTo, TableNameFrom, BlobDirectRoot, ExtractFileName(backupToBlob), 30); string copyVerify = instanceCopy.CopyTableToTable(TableNameRestoreTo, TableNameTo2, 30); int VerifyRowCount = ExtractNextInt(copyVerify, "total records"); Assert.Equal(InitialRowCount, VerifyRowCount); }
public void TestRestoreServerNotRunning() { RestoreAzureTables rs = new RestoreAzureTables(ConnectionSpecNoServer, AzureBlobStorageConfigConnection); Assert.Throws <RestoreFailedException>(() => rs.RestoreTableFromFile(DefaultTableNameRestore, FileNamePathThatExists, 5)); rs = new RestoreAzureTables(AzureStorageConfigConnection, ConnectionSpecNoServer); Assert.Throws <RestoreFailedException>(() => rs.RestoreTableFromBlob(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, DefaultBlobRoot, @"d:\temp\TestRestore\", "UserProfile_Backup_20200505173139.txt", 5)); Assert.Throws <RestoreFailedException>(() => rs.RestoreTableFromBlobDirect(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, DefaultBlobRoot, "UserProfile_Backup_20200505173139.txt", 5)); }
public void TestRestoreBadConnSpec() { RestoreAzureTables rs = new RestoreAzureTables(BadConnectionSpec, AzureBlobStorageConfigConnection); Assert.Throws <ConnectionException>(() => rs.RestoreTableFromFile(DefaultTableNameRestore, FileNamePathThatExists, 5)); rs = new RestoreAzureTables(AzureStorageConfigConnection, BadConnectionSpec); Assert.Throws <ConnectionException>(() => rs.RestoreTableFromBlob(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, DefaultBlobRoot, WorkingDirectory, FileNameThatExists, 5)); Assert.Throws <ConnectionException>(() => rs.RestoreTableFromBlobDirect(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, DefaultBlobRoot, FileNameThatExists, 5)); }
private string Restore(SecureString AzureBlobStorageConfigConnection, SecureString AzureStorageConfigConnection, IConfiguration config) { try { RestoreAzureTables me = new RestoreAzureTables(AzureStorageConfigConnection, AzureBlobStorageConfigConnection); string Target = GetFromParmOrFile(config, TargetParmName).ToLower(); if (!String.IsNullOrEmpty(Target)) { if (Target.Contains("file")) { return(me.RestoreTableFromFile(GetFromParmOrFile(config, DestinationTableNameParmName), GetFromParmOrFile(config, RestoreFileNamePathParmName), GetIntFromParmOrFile(config, TimeoutSecondsParmName))); } else if (Target.Contains("blobdirect")) { return(me.RestoreTableFromBlobDirect(GetFromParmOrFile(config, DestinationTableNameParmName), GetFromParmOrFile(config, OriginalTableNameParmName), GetFromParmOrFile(config, BlobRootParmName), GetFromParmOrFile(config, BlobFileNameParmName), GetIntFromParmOrFile(config, TimeoutSecondsParmName))); } else if (Target.Contains("blob")) { return(me.RestoreTableFromBlob(GetFromParmOrFile(config, DestinationTableNameParmName), GetFromParmOrFile(config, OriginalTableNameParmName), GetFromParmOrFile(config, BlobRootParmName), GetFromParmOrFile(config, WorkingDirectoryParmName), GetFromParmOrFile(config, BlobFileNameParmName), GetIntFromParmOrFile(config, TimeoutSecondsParmName))); } else { throw new Exception("Missing or invalid configuration for requested command."); } } else { throw new Exception("Missing or invalid configuration for requested command."); } } catch (Exception ex) { throw ex; } }
public void TestRestoreParameterExceptions() { RestoreAzureTables instanceRestore = new RestoreAzureTables(AzureStorageConfigConnection); var exceptionFromFileDestinationTableName = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromFile("", "xxxx")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromFileDestinationTableName)); Assert.Contains("DestinationTableName is missing.", exceptionFromFileDestinationTableName.ToString()); var exceptionFromFileInvalidFileNamePath = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromFile(DefaultTableName, "invalid path")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromFileInvalidFileNamePath)); Assert.Contains("Invalid file name/path 'invalid path' specified.", exceptionFromFileInvalidFileNamePath.ToString()); var exceptionFromFileFileDoesNotExist = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromFile(DefaultTableName, @"c:\xxxx.txt")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromFileFileDoesNotExist)); Assert.Contains(@"File 'c:\xxxx.txt' does not exist.", exceptionFromFileFileDoesNotExist.ToString()); var exceptionFromBlobDestinationTableName = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromBlob("", "xx", "BlobRoot", "workingdir", "blobfilename")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromBlobDestinationTableName)); Assert.Contains("DestinationTableName is missing.", exceptionFromBlobDestinationTableName.ToString()); var exceptionFromBlobOriginalTableNameMissing = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromBlob("XX", "", "BlobRoot", "workingdir", "blobfilename")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromBlobOriginalTableNameMissing)); Assert.Contains("OriginalTableName is missing.", exceptionFromBlobOriginalTableNameMissing.ToString()); var exceptionFromBlobBlobRootMissing = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromBlob("XX", "XX", "", "xx", "blobfilename")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromBlobBlobRootMissing)); Assert.Contains("Invalid BlobRoot '' specified.", exceptionFromBlobBlobRootMissing.ToString()); var exceptionFromBlobBlobRootMissing2 = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromBlob("XX", "XX", null, "xx", "blobfilename")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromBlobBlobRootMissing2)); Assert.Contains("Invalid BlobRoot '' specified.", exceptionFromBlobBlobRootMissing2.ToString()); var exceptionFromBlobWorkingDirectoryMissing = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromBlob("XX", "XX", "BlobRoot", "", "blobfilename")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromBlobWorkingDirectoryMissing)); Assert.Contains("WorkingDirectory is missing.", exceptionFromBlobWorkingDirectoryMissing.ToString()); //Blob Direct var exceptionFromBlobDirectDestinationTableName = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromBlobDirect("", "xx", "BlobRoot", "blobfilename")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromBlobDirectDestinationTableName)); Assert.Contains("DestinationTableName is missing.", exceptionFromBlobDirectDestinationTableName.ToString()); var exceptionFromBlobDirectOriginalTableNameMissing = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromBlobDirect("XX", "", "BlobRoot", "blobfilename")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromBlobDirectOriginalTableNameMissing)); Assert.Contains("OriginalTableName is missing.", exceptionFromBlobDirectOriginalTableNameMissing.ToString()); var exceptionFromBlobDirectBlobRootMissing = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromBlobDirect("XX", "XX", "", "blobfilename")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromBlobDirectBlobRootMissing)); Assert.Contains("Invalid BlobRoot '' specified.", exceptionFromBlobDirectBlobRootMissing.ToString()); var exceptionFromBlobDirectBlobRootMissing2 = Assert.Throws <ParameterSpecException>(() => instanceRestore.RestoreTableFromBlobDirect("XX", "XX", null, "blobfilename")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromBlobDirectBlobRootMissing2)); Assert.Contains("Invalid BlobRoot '' specified.", exceptionFromBlobDirectBlobRootMissing2.ToString()); }
public void TestRestoreBlobExceptions() { RestoreAzureTables rs = new RestoreAzureTables(AzureStorageConfigConnection, AzureBlobStorageConfigConnection); var exceptionBlobFileNameNull = Assert.Throws <ParameterSpecException>(() => rs.RestoreTableFromBlob(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, DefaultBlobRoot, "baddir", null)); Assert.Contains("Invalid BlobFileName", exceptionBlobFileNameNull.Message); var exceptionBlobFileNameEmpty = Assert.Throws <ParameterSpecException>(() => rs.RestoreTableFromBlob(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, DefaultBlobRoot, "baddir", "")); Assert.Contains("Invalid BlobFileName", exceptionBlobFileNameEmpty.Message); var exceptionBlobRootNull = Assert.Throws <ParameterSpecException>(() => rs.RestoreTableFromBlob(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, null, "baddir", "blobfile")); Assert.Contains("Invalid BlobRoot", exceptionBlobRootNull.Message); var exceptionBlobRootEmpty = Assert.Throws <ParameterSpecException>(() => rs.RestoreTableFromBlob(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, "", "baddir", "blobfile")); Assert.Contains("Invalid BlobRoot", exceptionBlobRootEmpty.Message); //Blob Direct tests var exceptionBlobDirectFileNameNull = Assert.Throws <ParameterSpecException>(() => rs.RestoreTableFromBlobDirect(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, DefaultBlobRoot, null)); Assert.Contains("Invalid BlobFileName", exceptionBlobDirectFileNameNull.Message); var exceptionBlobDirectFileNameEmpty = Assert.Throws <ParameterSpecException>(() => rs.RestoreTableFromBlobDirect(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, DefaultBlobRoot, "")); Assert.Contains("Invalid BlobFileName", exceptionBlobDirectFileNameEmpty.Message); var exceptionBlobDirectRootNull = Assert.Throws <ParameterSpecException>(() => rs.RestoreTableFromBlobDirect(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, null, "blobfile")); Assert.Contains("Invalid BlobRoot", exceptionBlobDirectRootNull.Message); var exceptionBlobDirectRootEmpty = Assert.Throws <ParameterSpecException>(() => rs.RestoreTableFromBlobDirect(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, "", "blobfile")); Assert.Contains("Invalid BlobRoot", exceptionBlobDirectRootEmpty.Message); }