Example #1
0
        public void BackupRestore_A_Backup02StreamingTest()
        {
            if (GetServerVersion() < new Version("2.5.0.0"))
            {
                Assert.Inconclusive("Not supported on this version.");
                return;
            }

            FbStreamingBackup backupSvc = new FbStreamingBackup();
            var backupLength            = default(long);

            using (var ms = new MemoryStream())
            {
                backupSvc.ConnectionString = BuildServicesConnectionString();
                backupSvc.Options          = FbBackupFlags.IgnoreLimbo;
                backupSvc.OutputStream     = ms;

                backupSvc.ServiceOutput += new ServiceOutputEventHandler(ServiceOutput);

                backupSvc.Execute();

                backupLength = ms.Length;
            }

            Assert.Greater(backupLength, 0);
            // suppose the "previous" test is done and the file is somewhere
            var backup = GetBackupRestoreFullPath();

            Assert.IsNotNull(backup);
            Assert.AreEqual(new FileInfo(backup).Length, backupLength);
        }
Example #2
0
        private void StreamingBackupRestoreTest_BackupPart(MemoryStream buffer)
        {
            FbStreamingBackup backupSvc = new FbStreamingBackup();

            backupSvc.ConnectionString = BuildServicesConnectionString(FbServerType);
            backupSvc.Options          = FbBackupFlags.IgnoreLimbo;
            backupSvc.OutputStream     = buffer;

            backupSvc.ServiceOutput += new EventHandler <ServiceOutputEventArgs>(ServiceOutput);

            backupSvc.Execute();
        }
Example #3
0
        private void StreamingBackupRestoreTest_BackupPart(MemoryStream buffer)
        {
            var backupSvc = new FbStreamingBackup();

            backupSvc.ConnectionString = BuildServicesConnectionString(FbServerType, Compression, true);
            backupSvc.Options          = FbBackupFlags.IgnoreLimbo;
            backupSvc.OutputStream     = buffer;

            backupSvc.ServiceOutput += ServiceOutput;

            backupSvc.Execute();
        }
Example #4
0
        public async Task StreamingBackupRestoreTest(bool verbose)
        {
            if (!EnsureServerVersion(new Version(2, 5, 0, 0)))
            {
                return;
            }

            Task BackupPart(MemoryStream buffer)
            {
                var backupSvc = new FbStreamingBackup();

                backupSvc.ConnectionString = BuildServicesConnectionString(ServerType, Compression, WireCrypt, true);
                backupSvc.Options          = FbBackupFlags.IgnoreLimbo;
                backupSvc.OutputStream     = buffer;
                backupSvc.ServiceOutput   += ServiceOutput;
                return(backupSvc.ExecuteAsync());
            }

            Task RestorePart(MemoryStream buffer, bool verbose)
            {
                var restoreSvc = new FbStreamingRestore();

                restoreSvc.ConnectionString = BuildServicesConnectionString(ServerType, Compression, WireCrypt, true);
                restoreSvc.Options          = FbRestoreFlags.Create | FbRestoreFlags.Replace;
                restoreSvc.PageSize         = FbTestsSetup.PageSize;
                restoreSvc.Verbose          = verbose;
                restoreSvc.InputStream      = buffer;
                restoreSvc.ServiceOutput   += ServiceOutput;
                return(restoreSvc.ExecuteAsync());
            }

            await Connection.OpenAsync();

            await using (var cmd = Connection.CreateCommand())
            {
                cmd.CommandText = "create table dummy_data (foo varchar(1000) primary key)";
                await cmd.ExecuteNonQueryAsync();
            }
            await using (var cmd = Connection.CreateCommand())
            {
                cmd.CommandText = @"execute block
as
declare cnt int;
begin
	cnt = 199999;
	while (cnt > 0) do
	begin
		insert into dummy_data values (uuid_to_char(gen_uuid()));
		cnt = cnt - 1;
	end
end";
                await cmd.ExecuteNonQueryAsync();
            }
            await Connection.CloseAsync();

            using (var ms = new MemoryStream())
            {
                await BackupPart(ms);

                ms.Position = 0;
                await RestorePart(ms, verbose);

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

                await Connection.CloseAsync();
            }

            await Connection.OpenAsync();

            using (var cmd = Connection.CreateCommand())
            {
                cmd.CommandText = "drop table dummy_data";
                await cmd.ExecuteNonQueryAsync();
            }
            await Connection.CloseAsync();
        }