summaryrefslogtreecommitdiff
path: root/t/34_online_backup.t
diff options
context:
space:
mode:
Diffstat (limited to 't/34_online_backup.t')
-rw-r--r--t/34_online_backup.t76
1 files changed, 76 insertions, 0 deletions
diff --git a/t/34_online_backup.t b/t/34_online_backup.t
new file mode 100644
index 0000000..0675f2e
--- /dev/null
+++ b/t/34_online_backup.t
@@ -0,0 +1,76 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+use t::lib::Test qw/connect_ok dbfile @CALL_FUNCS/;
+
+BEGIN {
+ use DBD::SQLite;
+ unless ($DBD::SQLite::sqlite_version_number && $DBD::SQLite::sqlite_version_number >= 3006011) {
+ plan skip_all => "this test requires SQLite 3.6.11 and newer";
+ exit;
+ }
+}
+
+use Test::NoWarnings;
+use DBI;
+
+plan tests => 6 * @CALL_FUNCS + 1;
+
+foreach my $call_func (@CALL_FUNCS) {
+ # Connect to the test db and add some stuff:
+ my $foo = connect_ok( dbfile => 'foo', RaiseError => 1 );
+ my $dbfile = dbfile('foo');
+ $foo->do(
+ 'CREATE TABLE online_backup_test( id INTEGER PRIMARY KEY, foo INTEGER )'
+ );
+ $foo->do("INSERT INTO online_backup_test (foo) VALUES ($$)");
+
+ # That should be in the "foo" database on disk now, so disconnect and try to
+ # back it up:
+
+ $foo->disconnect;
+
+ my $dbh = DBI->connect(
+ 'dbi:SQLite:dbname=:memory:',
+ undef, undef,
+ { RaiseError => 1 }
+ );
+
+ ok($dbh->$call_func($dbfile, 'backup_from_file'));
+
+ {
+ my ($count) = $dbh->selectrow_array(
+ "SELECT count(foo) FROM online_backup_test WHERE foo=$$"
+ );
+ is($count, 1, "Found our process ID in backed-up table");
+ }
+
+ # Add more data then attempt to copy it back to file:
+ $dbh->do(
+ 'CREATE TABLE online_backup_test2 ( id INTEGER PRIMARY KEY, foo INTEGER )'
+ );
+ $dbh->do("INSERT INTO online_backup_test2 (foo) VALUES ($$)");
+
+ # backup to file (foo):
+ ok($dbh->$call_func($dbfile, 'backup_to_file'));
+
+ $dbh->disconnect;
+
+ # Reconnect to foo db and check data made it over:
+ {
+ my $foo = connect_ok( dbfile => 'foo', RaiseError => 1 );
+
+ my ($count) = $foo->selectrow_array(
+ "SELECT count(foo) FROM online_backup_test2 WHERE foo=$$"
+ );
+ is($count, 1, "Found our process ID in table back on disk");
+
+ $foo->disconnect;
+ }
+ $dbh->disconnect;
+
+ unlink $dbfile;
+}