App-SimpleBackuper
view release on metacpan or search on metacpan
t/Actions.t view on Meta::CPAN
{
my $pid = open2(my $out, my $in, qw(openssl rsa -pubout)) or die "Failed to gen public key by: $!";
print $in $priv_key;
close($in);
$public_key = join('', <$out>);
close($out);
waitpid($pid, 0);
}
my %options = (
db => '/tmp/simple-backuper-test/db',
compression_level => 0,
space_limit => 10_000_000,
files => {
'/tmp/simple-backuper-test/src' => 5,
},
'backup-name' => 'test',
quiet => 1,
);
my %state = (
rsa => Crypt::OpenSSL::RSA->new_public_key($public_key),
db => App::SimpleBackuper::DB->new(),
storage => App::SimpleBackuper::StorageLocal->new('/tmp/simple-backuper-test/storage'),
);
App::SimpleBackuper::Backup(\%options, \%state);
ok -f '/tmp/simple-backuper-test/db';
unlink '/tmp/simple-backuper-test/db';
App::SimpleBackuper::RestoreDB(
{db => '/tmp/simple-backuper-test/db', quiet => 1},
{
rsa => Crypt::OpenSSL::RSA->new_private_key($priv_key),
storage => App::SimpleBackuper::StorageLocal->new('/tmp/simple-backuper-test/storage'),
}
);
{
my $db_file = App::SimpleBackuper::RegularFile->new($options{db}, \%options);
$db_file->read();
$db_file->decompress();
$state{db} = App::SimpleBackuper::DB->new( $db_file->data_ref );
}
is_deeply App::SimpleBackuper::Info(\%options, \%state)->{subfiles},
[ { name => 'tmp', oldest_backup => 'test', newest_backup => 'test'} ];
is_deeply App::SimpleBackuper::Info({%options, path => '/'}, \%state)->{subfiles},
[ { name => 'tmp', oldest_backup => 'test', newest_backup => 'test'} ];
is_deeply App::SimpleBackuper::Info({%options, path => '/not-existent'}, \%state), {error => 'NOT_FOUND'};
my $result = App::SimpleBackuper::Info({%options, path => '/tmp/simple-backuper-test/src'}, \%state);
is_deeply $result->{subfiles}, [ { name => 'a.file', oldest_backup => 'test', newest_backup => 'test'} ];
my @lstat = lstat('/tmp/simple-backuper-test/src');
is $result->{versions}->[0]->{user}, scalar getpwuid($lstat[4]);
is $result->{versions}->[0]->{group}, scalar getgrgid($lstat[5]);
is_deeply $result->{versions}->[0]->{backups}, ['test'];
ok ! App::SimpleBackuper::Restore({
db => '/tmp/simple-backuper-test/db',
'backup-name' => 'test',
path => '/tmp/simple-backuper-test/src',
destination => '/tmp/simple-backuper-test/dst',
write => 1,
quiet => 1,
}, \%state)->{error};
ok -f '/tmp/simple-backuper-test/dst/a.file';
open($fh, '<', '/tmp/simple-backuper-test/dst/a.file') or die "Can't read test file: $!";
my $file = join('', <$fh>);
close($fh);
is $file, "1" x 2_000_000;
sleep 1; # For change mtime
open($fh, '>>', '/tmp/simple-backuper-test/src/a.file') or die "Can't write test file: $!";
print $fh "2";
close($fh);
App::SimpleBackuper::Backup({%options, 'backup-name' => 'test2'}, \%state);
ok ! App::SimpleBackuper::Restore({
db => '/tmp/simple-backuper-test/db',
'backup-name' => 'test2',
path => '/tmp/simple-backuper-test/src',
destination => '/tmp/simple-backuper-test/dst',
write => 1,
quiet => 1,
}, \%state)->{error};
open($fh, '<', '/tmp/simple-backuper-test/dst/a.file') or die "Can't read test file: $!";
$file = join('', <$fh>);
close($fh);
ok $file eq ("1" x 2_000_000)."2";
ok ! App::SimpleBackuper::Restore({
db => '/tmp/simple-backuper-test/db',
'backup-name' => 'test',
path => '/tmp/simple-backuper-test/src',
destination => '/tmp/simple-backuper-test/dst',
write => 1,
quiet => 1,
}, \%state)->{error};
open($fh, '<', '/tmp/simple-backuper-test/dst/a.file') or die "Can't read test file: $!";
$file = join('', <$fh>);
close($fh);
is $file, "1" x 2_000_000;
sleep 1;
( run in 0.945 second using v1.01-cache-2.11-cpan-39bf76dae61 )