public void TestCopy() { CopyAzureTables instanceCopy = new CopyAzureTables(AzureStorageConfigConnection); DeleteAzureTables instanceDelete = new DeleteAzureTables(AzureStorageConfigConnection); RestoreAzureTables instanceRestore = new RestoreAzureTables(AzureStorageConfigConnection); string deleteInitializeResult = instanceDelete.DeleteAzureTableRows(TableNameTo); string deleteInitialize2Result = instanceDelete.DeleteAzureTableRows(TableNameTo2); string deleteInitialize3Result = instanceDelete.DeleteAzureTableRows(TableNameFrom); string restoreResult = instanceRestore.RestoreTableFromFile(TableNameFrom, FileNamePathThatExists_SystemLogs); int RestoreCount = ExtractNextInt(restoreResult, "Successful;", "entries"); string copySetup = instanceCopy.CopyTableToTable(TableNameFrom, TableNameTo); //pull result of rows copied "Table 'SystemLogs' copied to table 'TestCopy', total records 370." int InitialRowCount = ExtractNextInt(copySetup, "total records"); List <Filter> Filters = new List <Filter>(); Filters.Add(new Filter("PartitionKey", "=", "SecurityLog")); string delete2Result = instanceDelete.DeleteAzureTableRows(TableNameTo, 30, Filters); int RowsDeletedCount = ExtractNextInt(delete2Result, "total rows deleted"); Assert.True(RowsDeletedCount > 0); string copy2Result = instanceCopy.CopyTableToTable(TableNameTo, TableNameTo2); int SecondRowCount = ExtractNextInt(copy2Result, "total records"); Assert.Equal(InitialRowCount, SecondRowCount + RowsDeletedCount); }
public void TestBackupToBlob() { 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.BackupTableToBlob(TableNameFrom, BlobRoot, WorkingDirectory, true, true, 10, 10); //int BackupRowCount = ExtractNextInt(backupToBlob, "total records"); //Need to restore to confirm string restoreResult = instanceRestore.RestoreTableFromBlob(TableNameRestoreTo, TableNameFrom, BlobRoot, WorkingDirectory, ExtractFileName(backupToBlob), 30); string copyVerify = instanceCopy.CopyTableToTable(TableNameRestoreTo, TableNameTo2, 30); int VerifyRowCount = ExtractNextInt(copyVerify, "total records"); Assert.Equal(InitialRowCount, VerifyRowCount); }
public void TestCopyAll() { DeleteAzureTables instanceDeleteSetup = new DeleteAzureTables(AzureStorageConfigConnection_ALT1); RestoreAzureTables instanceRestoreSetup = new RestoreAzureTables(AzureStorageConfigConnection_ALT1); string deleteInitializeResult = instanceDeleteSetup.DeleteAzureTableRows(TableNameTo); string deleteInitialize2Result = instanceDeleteSetup.DeleteAzureTableRows(TableNameTo2); DeleteAzureTables instanceDeleteSetup2 = new DeleteAzureTables(AzureStorageConfigConnection_ALT2); string deleteInitializeResult2 = instanceDeleteSetup2.DeleteAzureTableRows(TableNameTo); string deleteInitialize2Result2 = instanceDeleteSetup2.DeleteAzureTableRows(TableNameTo2); string restoreResult1 = instanceRestoreSetup.RestoreTableFromFile(TableNameTo, FileNamePathThatExists_UserProfile); int RestoreCount1 = ExtractNextInt(restoreResult1, "Successful;", "entries"); string restoreResult2 = instanceRestoreSetup.RestoreTableFromFile(TableNameTo2, FileNamePathThatExists_SystemLogs); int RestoreCount2 = ExtractNextInt(restoreResult2, "Successful;", "entries"); CopyAzureTables instanceCopy = new CopyAzureTables(AzureStorageConfigConnection_ALT1, AzureStorageConfigConnection_ALT2); // Check for expected results on the two tables set up. Actual results may have more than these two tables depending on environment. string Expected1 = String.Format("Table '{0}' copied to table '{0}', total records {1}.", TableNameTo, RestoreCount1); string Expected2 = String.Format("Table '{0}' copied to table '{0}', total records {1}.", TableNameTo2, RestoreCount2); string CopyAllResults = instanceCopy.CopyAllTables(); Assert.Contains(Expected1, CopyAllResults.ToString()); Assert.Contains(Expected2, CopyAllResults.ToString()); }
public void TestCopyServerNotRunning() { CopyAzureTables instance = new CopyAzureTables(ConnectionSpecNoServer, AzureStorageConfigConnection); Assert.Throws <CopyFailedException>(() => instance.CopyTableToTable(DefaultTableName, DefaultTableName, 5)); instance = new CopyAzureTables(AzureStorageConfigConnection, ConnectionSpecNoServer); Assert.Throws <CopyFailedException>(() => instance.CopyTableToTable(DefaultTableName, DefaultTableName, 5)); }
public void TestCopyBadConnSpec() { CopyAzureTables instance = new CopyAzureTables(BadConnectionSpec, AzureBlobStorageConfigConnection); Assert.Throws <ConnectionException>(() => instance.CopyTableToTable(DefaultTableName, DefaultTableName, 5)); instance = new CopyAzureTables(AzureStorageConfigConnection, BadConnectionSpec); Assert.Throws <ConnectionException>(() => instance.CopyTableToTable(DefaultTableName, DefaultTableName, 5)); }
public void TestCopyParameterExceptions() { CopyAzureTables instanceCopy = new CopyAzureTables(AzureStorageConfigConnection); var exceptionFromMissing = Assert.Throws <ParameterSpecException>(() => instanceCopy.CopyTableToTable("", TableNameTo2)); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromMissing)); Assert.Contains("SourceTableName is missing.", exceptionFromMissing.ToString()); var exceptionToMissing = Assert.Throws <ParameterSpecException>(() => instanceCopy.CopyTableToTable(TableNameTo, "")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionToMissing)); Assert.Contains("DestinationTableName is missing.", exceptionToMissing.ToString()); }
public void TestDeleteParameterExceptions() { CopyAzureTables instanceCopy = new CopyAzureTables(AzureStorageConfigConnection); DeleteAzureTables instanceDelete = new DeleteAzureTables(AzureStorageConfigConnection); RestoreAzureTables instanceRestore = new RestoreAzureTables(AzureStorageConfigConnection); var exception = Assert.Throws <ParameterSpecException>(() => instanceDelete.DeleteAzureTable("")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exception)); Assert.Contains("TableNameToDelete is missing.", exception.ToString()); var exceptionRows = Assert.Throws <ParameterSpecException>(() => instanceDelete.DeleteAzureTableRows("")); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionRows)); Assert.Contains("TableNameToDelete rows from is missing.", exceptionRows.ToString()); }
public void TestCopyAllParameterExceptions() { CopyAzureTables instanceCopy = new CopyAzureTables(AzureStorageConfigConnection); var exceptionFromMissing = Assert.Throws <ParameterSpecException>(() => instanceCopy.CopyAllTables()); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionFromMissing)); Assert.Contains("Source and Destination Connection specs can not match for CopyAll.", exceptionFromMissing.ToString()); instanceCopy = new CopyAzureTables(AzureStorageConfigConnection, AzureStorageConfigConnection2); List <Filter> Filters = new List <Filter>(); Filters.Add(new Filter("RowKey", "=", "User1", "XXXX")); var exceptionToMissing = Assert.Throws <ParameterSpecException>(() => instanceCopy.CopyAllTables(30, Filters)); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionToMissing)); Assert.Contains("One or more of the supplied filter criteria is invalid.", exceptionToMissing.ToString()); }
public void TestBackupToBlobDirect_LargeFile() { 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_LargeFile); string copySetup = instanceCopy.CopyTableToTable(TableNameFrom, TableNameTo, 30); int InitialRowCount = ExtractNextInt(copySetup, "total records"); string backupToBlob = instanceBackup.BackupTableToBlobDirect(TableNameFrom, BlobRoot, true, 10, 10); int BackupRowCount = ExtractNextInt(backupToBlob, "total records"); //Need to restore to confirm string restoreResult = instanceRestore.RestoreTableFromBlobDirect(TableNameRestoreTo, TableNameFrom, BlobRoot, ExtractFileName(backupToBlob), 30); string copyVerify = instanceCopy.CopyTableToTable(TableNameRestoreTo, TableNameTo2, 30); int VerifyRowCount = ExtractNextInt(copyVerify, "total records"); Assert.Equal(InitialRowCount, VerifyRowCount); }
public void TestDeleteRows_LargeFile() { BackupAzureTables instanceBackup = new BackupAzureTables(AzureStorageConfigConnection, AzureStorageConfigConnection); CopyAzureTables instanceCopy = new CopyAzureTables(AzureStorageConfigConnection); DeleteAzureTables instanceDelete = new DeleteAzureTables(AzureStorageConfigConnection); RestoreAzureTables instanceRestore = new RestoreAzureTables(AzureStorageConfigConnection, AzureStorageConfigConnection); InitializeTables(instanceDelete, instanceRestore, FileNamePathThatExists_SystemLogs_LargeFile); string copySetup = instanceCopy.CopyTableToTable(TableNameFrom, TableNameTo, 30); int InitialRowCount = ExtractNextInt(copySetup, "total records"); List <Filter> DeleteFilters = new List <Filter>(); DeleteFilters.Add(new Filter("PartitionKey", "=", "WebAppLog")); string DeleteResult = instanceDelete.DeleteAzureTableRows(TableNameTo, 30, DeleteFilters); int DeleteCount = ExtractNextInt(DeleteResult, "total rows deleted"); string copyVerify = instanceCopy.CopyTableToTable(TableNameTo, TableNameTo2, 30); int RemainingRowCount = ExtractNextInt(copyVerify, "total records"); Assert.Equal(InitialRowCount, DeleteCount + RemainingRowCount); }
public void TestCopyRowKey() { CopyAzureTables instanceCopy = new CopyAzureTables(AzureStorageConfigConnection); DeleteAzureTables instanceDelete = new DeleteAzureTables(AzureStorageConfigConnection); RestoreAzureTables instanceRestore = new RestoreAzureTables(AzureStorageConfigConnection); string deleteInitializeResult = instanceDelete.DeleteAzureTableRows(TableNameTo); string deleteInitialize2Result = instanceDelete.DeleteAzureTableRows(TableNameTo2); string deleteInitialize3Result = instanceDelete.DeleteAzureTableRows(TableNameFrom); string restoreResult = instanceRestore.RestoreTableFromFile(TableNameFrom, FileNamePathThatExists_UserProfile); int RestoreCount = ExtractNextInt(restoreResult, "Successful;", "entries"); 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, Filters); int InitialRowCount = ExtractNextInt(copySetup, "total records"); List <Filter> Filters2 = new List <Filter>(); Filters2.Add(new Filter("RowKey", "=", "User1")); string delete2Result = instanceDelete.DeleteAzureTableRows(TableNameTo, 30, Filters2); int RowsDeletedCount = ExtractNextInt(delete2Result, "total rows deleted"); Assert.True(RowsDeletedCount > 0); string copy2Result = instanceCopy.CopyTableToTable(TableNameTo, TableNameTo2); int SecondRowCount = ExtractNextInt(copy2Result, "total records"); Assert.Equal(InitialRowCount, SecondRowCount + RowsDeletedCount); System.Console.WriteLine("Test"); }
private string Copy(SecureString AzureStorageSourceConfigConnection, SecureString AzureStorageDestinationConfigConnection, IConfiguration config) { try { CopyAzureTables me = new CopyAzureTables(AzureStorageSourceConfigConnection, AzureStorageDestinationConfigConnection); var sectionFilters = config.GetSection("Filters"); List <Filter> filters = sectionFilters.Get <List <Filter> >(); if (!Filter.AreFiltersValid(filters)) { throw new Exception("One or more of the supplied filter cirteria is invalid."); } return(me.CopyTableToTable(GetFromParmOrFile(config, TableNameParmName), GetFromParmOrFile(config, DestinationTableNameParmName), GetIntFromParmOrFile(config, TimeoutSecondsParmName), filters)); } catch (Exception ex) { throw ex; } }