Skip to content

Commit 70ca572

Browse files
committed
Implement verbint
1 parent 73b0082 commit 70ca572

File tree

4 files changed

+42
-6
lines changed

4 files changed

+42
-6
lines changed

Diff for: src/FirebirdSql.Data.FirebirdClient.Tests/FbServicesTests.cs

+33-4
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,40 @@ public async Task BackupRestoreZipTest()
6969
var backupName = $"{Guid.NewGuid()}.bak";
7070
var csb = BuildServicesConnectionStringBuilder(ServerType, Compression, WireCrypt, true);
7171
var connectionString = csb.ToString();
72-
await BackupPartHelper(backupName, connectionString, FbBackupFlags.Zip);
72+
await BackupPartHelper(backupName, connectionString, x =>
73+
{
74+
x.Options |= FbBackupFlags.Zip;
75+
});
7376
await RestorePartHelper(backupName, connectionString);
7477
// test the database was actually restored fine
7578
await Connection.OpenAsync();
7679
await Connection.CloseAsync();
7780
}
7881

82+
[Test]
83+
public async Task BackupRestoreVerbIntTest()
84+
{
85+
if (!EnsureServerVersionAtLeast(new Version(3, 0, 0, 0)))
86+
return;
87+
88+
var backupName = $"{Guid.NewGuid()}.bak";
89+
var csb = BuildServicesConnectionStringBuilder(ServerType, Compression, WireCrypt, true);
90+
var connectionString = csb.ToString();
91+
await BackupPartHelper(backupName, connectionString, x =>
92+
{
93+
x.Verbose = true;
94+
x.VerboseInterval = 1_000_000;
95+
});
96+
await RestorePartHelper(backupName, connectionString, x =>
97+
{
98+
x.Verbose = true;
99+
x.VerboseInterval = 1_000_000;
100+
});
101+
// test the database was actually restored fine
102+
await Connection.OpenAsync();
103+
await Connection.CloseAsync();
104+
}
105+
79106
[Test]
80107
public async Task BackupRestoreParallelTest()
81108
{
@@ -469,18 +496,19 @@ public async Task NFixupTest()
469496
Assert.DoesNotThrowAsync(() => Connection.OpenAsync());
470497
}
471498

472-
static Task BackupPartHelper(string backupName, string connectionString, FbBackupFlags backupFlags = FbBackupFlags.IgnoreLimbo)
499+
static Task BackupPartHelper(string backupName, string connectionString, Action<FbBackup> configure = null)
473500
{
474501
var backupSvc = new FbBackup();
475502
backupSvc.ConnectionString = connectionString;
476-
backupSvc.Options = backupFlags;
503+
backupSvc.Options = FbBackupFlags.IgnoreLimbo;
477504
backupSvc.BackupFiles.Add(new FbBackupFile(backupName, 2048));
478505
backupSvc.Verbose = true;
479506
backupSvc.Statistics = FbBackupRestoreStatistics.TotalTime | FbBackupRestoreStatistics.TimeDelta;
480507
backupSvc.ServiceOutput += ServiceOutput;
508+
configure?.Invoke(backupSvc);
481509
return backupSvc.ExecuteAsync();
482510
}
483-
static Task RestorePartHelper(string backupName, string connectionString)
511+
static Task RestorePartHelper(string backupName, string connectionString, Action<FbRestore> configure = null)
484512
{
485513
var restoreSvc = new FbRestore();
486514
restoreSvc.ConnectionString = connectionString;
@@ -490,6 +518,7 @@ static Task RestorePartHelper(string backupName, string connectionString)
490518
restoreSvc.Statistics = FbBackupRestoreStatistics.TotalTime | FbBackupRestoreStatistics.TimeDelta;
491519
restoreSvc.BackupFiles.Add(new FbBackupFile(backupName, 2048));
492520
restoreSvc.ServiceOutput += ServiceOutput;
521+
configure?.Invoke(restoreSvc);
493522
return restoreSvc.ExecuteAsync();
494523
}
495524

Diff for: src/FirebirdSql.Data.FirebirdClient/Services/FbBackup.cs

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public sealed class FbBackup : FbService
2828
{
2929
public FbBackupFileCollection BackupFiles { get; }
3030
public bool Verbose { get; set; }
31+
public int? VerboseInterval { get; set; }
3132
public int Factor { get; set; }
3233
public string SkipData { get; set; }
3334
public FbBackupFlags Options { get; set; }
@@ -59,6 +60,8 @@ public void Execute()
5960
}
6061
if (Verbose)
6162
startSpb.Append(IscCodes.isc_spb_verbose);
63+
if (VerboseInterval.HasValue)
64+
startSpb.Append(IscCodes.isc_spb_verbint, (int)VerboseInterval);
6265
if (Factor > 0)
6366
startSpb.Append(IscCodes.isc_spb_bkp_factor, Factor);
6467
if (!string.IsNullOrEmpty(SkipData))

Diff for: src/FirebirdSql.Data.FirebirdClient/Services/FbRestore.cs

+3
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public int? PageSize
4141

4242
public FbBackupFileCollection BackupFiles { get; }
4343
public bool Verbose { get; set; }
44+
public int? VerboseInterval { get; set; }
4445
public int? PageBuffers { get; set; }
4546
public bool ReadOnly { get; set; }
4647
public string SkipData { get; set; }
@@ -71,6 +72,8 @@ public void Execute()
7172
startSpb.Append2(IscCodes.isc_spb_dbname, ConnectionStringOptions.Database);
7273
if (Verbose)
7374
startSpb.Append(IscCodes.isc_spb_verbose);
75+
if (VerboseInterval.HasValue)
76+
startSpb.Append(IscCodes.isc_spb_verbint, (int)VerboseInterval);
7477
if (PageBuffers.HasValue)
7578
startSpb.Append(IscCodes.isc_spb_res_buffers, (int)PageBuffers);
7679
if (_pageSize.HasValue)

Diff for: src/FirebirdSql.Data.FirebirdClient/Services/FbStreamingRestore.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public int? PageSize
4545

4646
public Stream InputStream { get; set; }
4747
public bool Verbose { get; set; }
48+
public int? VerboseInterval { get; set; }
4849
public int? PageBuffers { get; set; }
4950
public bool ReadOnly { get; set; }
5051
public string SkipData { get; set; }
@@ -68,9 +69,9 @@ public void Execute()
6869
startSpb.Append2(IscCodes.isc_spb_bkp_file, "stdin");
6970
startSpb.Append2(IscCodes.isc_spb_dbname, ConnectionStringOptions.Database);
7071
if (Verbose)
71-
{
7272
startSpb.Append(IscCodes.isc_spb_verbose);
73-
}
73+
if (VerboseInterval.HasValue)
74+
startSpb.Append(IscCodes.isc_spb_verbint, (int)VerboseInterval);
7475
if (PageBuffers.HasValue)
7576
startSpb.Append(IscCodes.isc_spb_res_buffers, (int)PageBuffers);
7677
if (_pageSize.HasValue)

0 commit comments

Comments
 (0)