示例#1
0
        public async Task BackupRestoreTest()
        {
            var backupName = $"{Guid.NewGuid()}.bak";

            Task BackupPart()
            {
                var backupSvc = new FbBackup();

                backupSvc.ConnectionString = BuildServicesConnectionString(ServerType, Compression, WireCrypt, true);
                backupSvc.Options          = FbBackupFlags.IgnoreLimbo;
                backupSvc.BackupFiles.Add(new FbBackupFile(backupName, 2048));
                backupSvc.Verbose        = true;
                backupSvc.Statistics     = FbBackupRestoreStatistics.TotalTime | FbBackupRestoreStatistics.TimeDelta;
                backupSvc.ServiceOutput += ServiceOutput;
                return(backupSvc.ExecuteAsync());
            }

            Task RestorePart()
            {
                var restoreSvc = new FbRestore();

                restoreSvc.ConnectionString = BuildServicesConnectionString(ServerType, Compression, WireCrypt, true);
                restoreSvc.Options          = FbRestoreFlags.Create | FbRestoreFlags.Replace;
                restoreSvc.PageSize         = FbTestsSetup.PageSize;
                restoreSvc.Verbose          = true;
                restoreSvc.Statistics       = FbBackupRestoreStatistics.TotalTime | FbBackupRestoreStatistics.TimeDelta;
                restoreSvc.BackupFiles.Add(new FbBackupFile(backupName, 2048));
                restoreSvc.ServiceOutput += ServiceOutput;
                return(restoreSvc.ExecuteAsync());
            }

            await BackupPart();
            await RestorePart();

            // test the database was actually restored fine
            await Connection.OpenAsync();

            await Connection.CloseAsync();
        }