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 TestFilterExceptions() { Filter f1 = new Filter("PartitionKey", "Bad", "Test", ""); Assert.False(Filter.IsValidFilter(f1)); List <Filter> filters = new List <Filter>(); filters.Add(f1); BackupAzureTables bu = new BackupAzureTables(AzureStorageConfigConnection, AzureBlobStorageConfigConnection); var exception = Assert.Throws <ParameterSpecException>(() => bu.BackupTableToFile("TestTable", "baddir", false, false, 30, filters)); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exception)); Assert.Contains("One or more of the supplied filter criteria is invalid.", exception.ToString()); var exceptionBlob = Assert.Throws <BackupFailedException>(() => bu.BackupTableToBlob("TestTable", "blobroot", "baddir", false, false, 30, 30, filters)); Assert.Contains("One or more of the supplied filter criteria is invalid.", exceptionBlob.ToString()); DeleteAzureTables instanceDelete = new DeleteAzureTables(AzureStorageConfigConnection); var exceptionDeleteRows = Assert.Throws <ParameterSpecException>(() => instanceDelete.DeleteAzureTableRows("XX", 30, filters)); Assert.True(typeof(ParameterSpecException).IsInstanceOfType(exceptionDeleteRows)); Assert.Contains("One or more of the supplied filter criteria is invalid.", exceptionDeleteRows.ToString()); }
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 TestDeleteServerNotRunning() { DeleteAzureTables instance = new DeleteAzureTables(ConnectionSpecNoServer); Assert.Throws <DeleteFailedException>(() => instance.DeleteAzureTable(TableNameDoesNotExist, 5)); Assert.Throws <DeleteFailedException>(() => instance.DeleteAzureTableRows(TableNameDoesNotExist, 5)); }
public void TestDeleteBadConnSpec() { DeleteAzureTables instance = new DeleteAzureTables(BadConnectionSpec); Assert.Throws <ConnectionException>(() => instance.DeleteAzureTable(TableNameDoesNotExist, 5)); Assert.Throws <ConnectionException>(() => instance.DeleteAzureTableRows(TableNameDoesNotExist, 5)); }
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()); }
private void InitializeTables(DeleteAzureTables instanceDelete, RestoreAzureTables instanceRestore, string FileNamePath) { instanceDelete.DeleteAzureTableRows(TableNameTo); instanceDelete.DeleteAzureTableRows(TableNameTo2); instanceDelete.DeleteAzureTableRows(TableNameFrom); string restoreResult = instanceRestore.RestoreTableFromFile(TableNameFrom, FileNamePath); int RestoreCount = ExtractNextInt(restoreResult, "Successful;", "entries"); }
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()); }
private string Delete(SecureString AzureBlobStorageConfigConnection, IConfiguration config) { try { DeleteAzureTables me = new DeleteAzureTables(AzureStorageConfigConnection); string Target = GetFromParmOrFile(config, TargetParmName).ToLower(); if (!String.IsNullOrEmpty(Target)) { 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."); } if (Target.Contains("rows")) { return(me.DeleteAzureTableRows(GetFromParmOrFile(config, TableNameToDeleteParmName) , GetIntFromParmOrFile(config, TimeoutSecondsParmName) , filters )); } else if (Target.Contains("table")) { return(me.DeleteAzureTable(GetFromParmOrFile(config, TableNameToDeleteParmName) , 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 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"); }