t/001-save-restore.t
changeset 137 dd11d1262b6c
parent 136 a5d087334439
child 138 790ac145bccc
equal deleted inserted replaced
136:a5d087334439 137:dd11d1262b6c
     1 use 5.010;
       
     2 use strict;
       
     3 use warnings;
       
     4 use autodie qw(:all);
       
     5 use Test::More;
       
     6 use Sys::Hostname;
       
     7 use if $^V gt v5.18 => (experimental => 'smartmatch');
       
     8 
       
     9 use constant SIZE => 27 * 1024 * 1024;
       
    10 
       
    11 use File::Temp;
       
    12 
       
    13 my $err = File::Temp->new;
       
    14 my $dir = File::Temp->newdir;
       
    15 
       
    16 note("preparing the source");
       
    17 open(my $out, "+>$dir/source");
       
    18 print $out rand while -s $out < SIZE;
       
    19 
       
    20 note("preparing the images dir");
       
    21 mkdir "$dir/images";
       
    22 mkdir "$dir/mnt";
       
    23 
       
    24 system("sudo mount -ttmpfs -osize=10M,uid=$> tmpfs $dir/mnt 2>/dev/null");
       
    25 END { system("sudo umount $dir/mnt 2>/dev/null") };
       
    26 
       
    27 
       
    28 system("perl -Mblib blib/script/imager.save $dir/source:source $dir/images");
       
    29 is($? => 0, "saved");
       
    30 
       
    31 system("perl -Mblib blib/script/imager.restore $dir/images/idx/@{[hostname]}/source/* $dir/source.restored");
       
    32 is($? => 0, "restored");
       
    33 
       
    34 # just as it is
       
    35 seek($out, 0, 0);
       
    36 open(my $restored, "$dir/source.restored");
       
    37 ok(<$out> ~~ <$restored>, "source === restored");
       
    38 
       
    39 # now compress and check again
       
    40 system("perl -Mblib blib/script/imager.compress $dir/images 2>$err");
       
    41 is($? => 0, "compressed") or do { seek $err => 0, 0; diag <$err> };
       
    42 system("perl -Mblib blib/script/imager.restore $dir/images/idx/@{[hostname]}/source/* $dir/source.restored");
       
    43 is($? => 0, "restored") or do { seek $err => 0, 0; diag <$err> };
       
    44 seek($out, 0, 0);
       
    45 open($restored, "$dir/source.restored");
       
    46 ok(<$out> ~~ <$restored>, "compressed source === restored");
       
    47 
       
    48 # now check on overflow of destination
       
    49 
       
    50 note("overflow condition");
       
    51 eval { system("perl -Mblib blib/script/imager.save $dir/source:source $dir/mnt 2>$err") };
       
    52 ok($?, "failure is expected");
       
    53 
       
    54 
       
    55 done_testing;