|
Packit |
723767 |
#!/usr/bin/perl
|
|
Packit |
723767 |
|
|
Packit |
723767 |
use strict;
|
|
Packit |
723767 |
use warnings;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
use Test::More;
|
|
Packit |
723767 |
use lib "t/lib";
|
|
Packit |
723767 |
use SQLiteTest qw/connect_ok dbfile @CALL_FUNCS requires_sqlite/;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
BEGIN { requires_sqlite('3.6.11') }
|
|
Packit |
723767 |
|
|
Packit |
723767 |
use Test::NoWarnings;
|
|
Packit |
723767 |
use DBI;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
plan tests => 6 * @CALL_FUNCS + 1;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
foreach my $call_func (@CALL_FUNCS) {
|
|
Packit |
723767 |
# Connect to the test db and add some stuff:
|
|
Packit |
723767 |
my $foo = connect_ok( dbfile => 'foo', RaiseError => 1 );
|
|
Packit |
723767 |
my $dbfile = dbfile('foo');
|
|
Packit |
723767 |
$foo->do(
|
|
Packit |
723767 |
'CREATE TABLE online_backup_test( id INTEGER PRIMARY KEY, foo INTEGER )'
|
|
Packit |
723767 |
);
|
|
Packit |
723767 |
$foo->do("INSERT INTO online_backup_test (foo) VALUES ($$)");
|
|
Packit |
723767 |
|
|
Packit |
723767 |
# That should be in the "foo" database on disk now, so disconnect and try to
|
|
Packit |
723767 |
# back it up:
|
|
Packit |
723767 |
|
|
Packit |
723767 |
$foo->disconnect;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
my $dbh = DBI->connect(
|
|
Packit |
723767 |
'dbi:SQLite:dbname=:memory:',
|
|
Packit |
723767 |
undef, undef,
|
|
Packit |
723767 |
{ RaiseError => 1 }
|
|
Packit |
723767 |
);
|
|
Packit |
723767 |
|
|
Packit |
723767 |
ok($dbh->$call_func($dbfile, 'backup_from_file'));
|
|
Packit |
723767 |
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
my ($count) = $dbh->selectrow_array(
|
|
Packit |
723767 |
"SELECT count(foo) FROM online_backup_test WHERE foo=$$"
|
|
Packit |
723767 |
);
|
|
Packit |
723767 |
is($count, 1, "Found our process ID in backed-up table");
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
# Add more data then attempt to copy it back to file:
|
|
Packit |
723767 |
$dbh->do(
|
|
Packit |
723767 |
'CREATE TABLE online_backup_test2 ( id INTEGER PRIMARY KEY, foo INTEGER )'
|
|
Packit |
723767 |
);
|
|
Packit |
723767 |
$dbh->do("INSERT INTO online_backup_test2 (foo) VALUES ($$)");
|
|
Packit |
723767 |
|
|
Packit |
723767 |
# backup to file (foo):
|
|
Packit |
723767 |
ok($dbh->$call_func($dbfile, 'backup_to_file'));
|
|
Packit |
723767 |
|
|
Packit |
723767 |
$dbh->disconnect;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
# Reconnect to foo db and check data made it over:
|
|
Packit |
723767 |
{
|
|
Packit |
723767 |
my $foo = connect_ok( dbfile => 'foo', RaiseError => 1 );
|
|
Packit |
723767 |
|
|
Packit |
723767 |
my ($count) = $foo->selectrow_array(
|
|
Packit |
723767 |
"SELECT count(foo) FROM online_backup_test2 WHERE foo=$$"
|
|
Packit |
723767 |
);
|
|
Packit |
723767 |
is($count, 1, "Found our process ID in table back on disk");
|
|
Packit |
723767 |
|
|
Packit |
723767 |
$foo->disconnect;
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
$dbh->disconnect;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
unlink $dbfile;
|
|
Packit |
723767 |
}
|