@@ -52,31 +52,26 @@ public override async Task SetUp()
5252 public async Task BackupRestoreTest ( )
5353 {
5454 var backupName = $ "{ Guid . NewGuid ( ) } .bak";
55- Task BackupPart ( )
56- {
57- var backupSvc = new FbBackup ( ) ;
58- backupSvc . ConnectionString = BuildServicesConnectionString ( ServerType , Compression , WireCrypt , true ) ;
59- backupSvc . Options = FbBackupFlags . IgnoreLimbo ;
60- backupSvc . BackupFiles . Add ( new FbBackupFile ( backupName , 2048 ) ) ;
61- backupSvc . Verbose = true ;
62- backupSvc . Statistics = FbBackupRestoreStatistics . TotalTime | FbBackupRestoreStatistics . TimeDelta ;
63- backupSvc . ServiceOutput += ServiceOutput ;
64- return backupSvc . ExecuteAsync ( ) ;
65- }
66- Task RestorePart ( )
67- {
68- var restoreSvc = new FbRestore ( ) ;
69- restoreSvc . ConnectionString = BuildServicesConnectionString ( ServerType , Compression , WireCrypt , true ) ;
70- restoreSvc . Options = FbRestoreFlags . Create | FbRestoreFlags . Replace ;
71- restoreSvc . PageSize = FbTestsSetup . PageSize ;
72- restoreSvc . Verbose = true ;
73- restoreSvc . Statistics = FbBackupRestoreStatistics . TotalTime | FbBackupRestoreStatistics . TimeDelta ;
74- restoreSvc . BackupFiles . Add ( new FbBackupFile ( backupName , 2048 ) ) ;
75- restoreSvc . ServiceOutput += ServiceOutput ;
76- return restoreSvc . ExecuteAsync ( ) ;
77- }
78- await BackupPart ( ) ;
79- await RestorePart ( ) ;
55+ var connectionString = BuildServicesConnectionString ( ServerType , Compression , WireCrypt , true ) ;
56+ await BackupPartHelper ( backupName , connectionString ) ;
57+ await RestorePartHelper ( backupName , connectionString ) ;
58+ // test the database was actually restored fine
59+ await Connection . OpenAsync ( ) ;
60+ await Connection . CloseAsync ( ) ;
61+ }
62+
63+ [ Test ]
64+ public async Task BackupRestoreParallelTest ( )
65+ {
66+ if ( ! EnsureServerVersionAtLeast ( new Version ( 5 , 0 , 0 , 0 ) ) )
67+ return ;
68+
69+ var backupName = $ "{ Guid . NewGuid ( ) } .bak";
70+ var csb = BuildServicesConnectionStringBuilder ( ServerType , Compression , WireCrypt , true ) ;
71+ csb . ParallelWorkers = 6 ;
72+ var connectionString = csb . ToString ( ) ;
73+ await BackupPartHelper ( backupName , connectionString ) ;
74+ await RestorePartHelper ( backupName , connectionString ) ;
8075 // test the database was actually restored fine
8176 await Connection . OpenAsync ( ) ;
8277 await Connection . CloseAsync ( ) ;
@@ -442,6 +437,30 @@ public async Task NFixupTest()
442437 Assert . DoesNotThrowAsync ( ( ) => Connection . OpenAsync ( ) ) ;
443438 }
444439
440+ static Task BackupPartHelper ( string backupName , string connectionString )
441+ {
442+ var backupSvc = new FbBackup ( ) ;
443+ backupSvc . ConnectionString = connectionString ;
444+ backupSvc . Options = FbBackupFlags . IgnoreLimbo ;
445+ backupSvc . BackupFiles . Add ( new FbBackupFile ( backupName , 2048 ) ) ;
446+ backupSvc . Verbose = true ;
447+ backupSvc . Statistics = FbBackupRestoreStatistics . TotalTime | FbBackupRestoreStatistics . TimeDelta ;
448+ backupSvc . ServiceOutput += ServiceOutput ;
449+ return backupSvc . ExecuteAsync ( ) ;
450+ }
451+ static Task RestorePartHelper ( string backupName , string connectionString )
452+ {
453+ var restoreSvc = new FbRestore ( ) ;
454+ restoreSvc . ConnectionString = connectionString ;
455+ restoreSvc . Options = FbRestoreFlags . Create | FbRestoreFlags . Replace ;
456+ restoreSvc . PageSize = FbTestsSetup . PageSize ;
457+ restoreSvc . Verbose = true ;
458+ restoreSvc . Statistics = FbBackupRestoreStatistics . TotalTime | FbBackupRestoreStatistics . TimeDelta ;
459+ restoreSvc . BackupFiles . Add ( new FbBackupFile ( backupName , 2048 ) ) ;
460+ restoreSvc . ServiceOutput += ServiceOutput ;
461+ return restoreSvc . ExecuteAsync ( ) ;
462+ }
463+
445464 static void ServiceOutput ( object sender , ServiceOutputEventArgs e )
446465 {
447466 var dummy = e . Message ;
0 commit comments