Skip to content

Commit e4d475f

Browse files
committed
Tests for parallel backup and restore.
1 parent 0473021 commit e4d475f

1 file changed

Lines changed: 44 additions & 25 deletions

File tree

src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs

Lines changed: 44 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)