예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #6
0
        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());
        }
예제 #9
0
        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);
        }
예제 #10
0
        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);
        }
예제 #11
0
        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;
            }
        }