#!/usr/bin/perl use strict; use warnings; use Test::More tests => 6; use t::lib::Test; use DBI; # Connect to the test db and add some stuff: my $foo = connect_ok( RaiseError => 1 ); $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->func('foo', '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->func('foo', 'backup_to_file')); $dbh->disconnect; # Reconnect to foo db and check data made it over: { my $foo = connect_ok( 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; }