コード例 #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 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());
        }
コード例 #3
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);
        }
コード例 #4
0
        public void TestDeleteServerNotRunning()
        {
            DeleteAzureTables instance = new DeleteAzureTables(ConnectionSpecNoServer);

            Assert.Throws <DeleteFailedException>(() => instance.DeleteAzureTable(TableNameDoesNotExist, 5));
            Assert.Throws <DeleteFailedException>(() => instance.DeleteAzureTableRows(TableNameDoesNotExist, 5));
        }
コード例 #5
0
        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());
        }
コード例 #7
0
        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());
        }
コード例 #9
0
        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;
            }
        }
コード例 #10
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);
        }
コード例 #11
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);
        }
コード例 #12
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");
        }