Exemplo n.º 1
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 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));
        }
        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));
        }
        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 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);
        }
        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 TestRestoreBlobWorkingDirectoryDoesNotExistExceptions()
        {
            RestoreAzureTables rs = new RestoreAzureTables(AzureStorageConfigConnection, AzureBlobStorageConfigConnection);

            var exceptionBlobFileNameNull = Assert.Throws <ParameterSpecException>(() => rs.RestoreTableFromBlob(DefaultTableNameRestore, DefaultTableNameRestoreOriginal, DefaultBlobRoot, DirectoryDoesNotExist, "blobfile"));

            Assert.Contains("WorkingDirectory does not exist", exceptionBlobFileNameNull.Message);
        }
        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 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());
        }