|
Packit Service |
392537 |
# Copyright (c) 2008-2012 Zmanda, Inc. All Rights Reserved.
|
|
Packit Service |
392537 |
# Copyright (c) 2013-2016 Carbonite, Inc. All Rights Reserved.
|
|
Packit Service |
392537 |
#
|
|
Packit Service |
392537 |
# This program is free software; you can redistribute it and/or
|
|
Packit Service |
392537 |
# modify it under the terms of the GNU General Public License
|
|
Packit Service |
392537 |
# as published by the Free Software Foundation; either version 2
|
|
Packit Service |
392537 |
# of the License, or (at your option) any later version.
|
|
Packit Service |
392537 |
#
|
|
Packit Service |
392537 |
# This program is distributed in the hope that it will be useful, but
|
|
Packit Service |
392537 |
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
Packit Service |
392537 |
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
Packit Service |
392537 |
# for more details.
|
|
Packit Service |
392537 |
#
|
|
Packit Service |
392537 |
# You should have received a copy of the GNU General Public License along
|
|
Packit Service |
392537 |
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
Packit Service |
392537 |
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
Packit Service |
392537 |
#
|
|
Packit Service |
392537 |
# Contact information: Carbonite Inc., 756 N Pastoria Ave
|
|
Packit Service |
392537 |
# Sunnyvale, CA 94086, USA, or: http://www.zmanda.com
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
use Test::More tests => 31;
|
|
Packit Service |
392537 |
use strict;
|
|
Packit Service |
392537 |
use warnings;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
# This test only puts the perl wrappers through their paces -- the underlying
|
|
Packit Service |
392537 |
# library is well-covered by amar-test.
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
use lib '@amperldir@';
|
|
Packit Service |
392537 |
use Installcheck;
|
|
Packit Service |
392537 |
use Amanda::Archive;
|
|
Packit Service |
392537 |
use Amanda::Paths;
|
|
Packit Service |
392537 |
use Amanda::MainLoop;
|
|
Packit Service |
392537 |
use Amanda::Debug;
|
|
Packit Service |
392537 |
use Data::Dumper;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
Amanda::Debug::dbopen("installcheck");
|
|
Packit Service |
392537 |
Installcheck::log_test_output();
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
my $arch_filename = "$Installcheck::TMP/amanda_archive.bin";
|
|
Packit Service |
392537 |
my $data_filename = "$Installcheck::TMP/some_data.bin";
|
|
Packit Service |
392537 |
my ($fh, $dfh, $ar, $f1, $f2, $a1, $a2, @res, $posn);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
# some versions of Test::More will fail tests if the identity
|
|
Packit Service |
392537 |
# relationships of the two objects passed to is_deeply do not
|
|
Packit Service |
392537 |
# match, so we use the same object for $user_data throughout.
|
|
Packit Service |
392537 |
my $user_data = [ "x", "y", "z" ];
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
# set up a large file full of data
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($dfh, ">", $data_filename);
|
|
Packit Service |
392537 |
my $onek = "abcd" x 256;
|
|
Packit Service |
392537 |
my $onemeg = $onek x 1024;
|
|
Packit Service |
392537 |
for (my $i = 0; $i < 5; $i++) {
|
|
Packit Service |
392537 |
print $dfh $onemeg;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
$onek = $onemeg = undef;
|
|
Packit Service |
392537 |
close($dfh);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
# utility functions for creating a "fake" archive file
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
sub make_header {
|
|
Packit Service |
392537 |
my ($fh, $version) = @_;
|
|
Packit Service |
392537 |
my $hdr = "AMANDA ARCHIVE FORMAT $version";
|
|
Packit Service |
392537 |
$hdr .= "\0" x (28 - length $hdr);
|
|
Packit Service |
392537 |
print $fh $hdr;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
sub make_record {
|
|
Packit Service |
392537 |
my ($fh, $filenum, $attrid, $data, $eoa) = @_;
|
|
Packit Service |
392537 |
my $size = length($data);
|
|
Packit Service |
392537 |
if ($eoa) {
|
|
Packit Service |
392537 |
$size |= 0x80000000;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
print $fh pack("nnN", $filenum, $attrid, $size);
|
|
Packit Service |
392537 |
print $fh $data;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
####
|
|
Packit Service |
392537 |
## TEST WRITING
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($fh, ">", $arch_filename) or die("opening $arch_filename: $!");
|
|
Packit Service |
392537 |
$ar = Amanda::Archive->new(fileno($fh), ">");
|
|
Packit Service |
392537 |
pass("Create a new archive");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$f1 = $ar->new_file("filename1");
|
|
Packit Service |
392537 |
pass("Start an archive file");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$a1 = $f1->new_attr($Amanda::Archive::AMAR_ATTR_GENERIC_DATA);
|
|
Packit Service |
392537 |
$a1->add_data("foo!", 0);
|
|
Packit Service |
392537 |
$a2 = $f1->new_attr(19);
|
|
Packit Service |
392537 |
$a2->add_data("BAR!", 0);
|
|
Packit Service |
392537 |
$a1->add_data("FOO.", 1);
|
|
Packit Service |
392537 |
$a2->add_data("bar.", 0);
|
|
Packit Service |
392537 |
pass("Write some interleaved data");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$a1->close();
|
|
Packit Service |
392537 |
pass("Close an attribute with the close() method");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$a1 = Amanda::Archive::Attr->new($f1, 99);
|
|
Packit Service |
392537 |
pass("Create an attribute with its constructor");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($dfh, "<", $data_filename);
|
|
Packit Service |
392537 |
$a1->add_data_fd(fileno($dfh), 1);
|
|
Packit Service |
392537 |
close($dfh);
|
|
Packit Service |
392537 |
pass("Add data from a file descriptor");
|
|
Packit Service |
392537 |
ok($a1->size() == 5242880, "size attribute A is " . $a1->size());
|
|
Packit Service |
392537 |
ok($f1->size() == 5242961, "size file A is " . $f1->size());
|
|
Packit Service |
392537 |
ok($ar->size() == 5242989, "Size A is " . $ar->size);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$a1 = undef;
|
|
Packit Service |
392537 |
pass("Close attribute when its refcount hits zero");
|
|
Packit Service |
392537 |
ok($ar->size() == 5242989, "Size B is " . $ar->size);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$f2 = Amanda::Archive::File->new($ar, "filename2");
|
|
Packit Service |
392537 |
pass("Add a new file (filename2)");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$a1 = $f2->new_attr(82);
|
|
Packit Service |
392537 |
$a1->add_data("word", 1);
|
|
Packit Service |
392537 |
pass("Add data to it");
|
|
Packit Service |
392537 |
ok($a1->size() == 4, "size attribute A1 is " . $a1->size());
|
|
Packit Service |
392537 |
ok($f2->size() == 29, "size file F2 is " . $f2->size());
|
|
Packit Service |
392537 |
ok($ar->size() == 5243018, "Size C is " . $ar->size);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$a2->add_data("barrrrr?", 0); # note no EOA
|
|
Packit Service |
392537 |
pass("Add more data to first attribute");
|
|
Packit Service |
392537 |
ok($a2->size() == 16, "size attribute A2 is " . $a2->size());
|
|
Packit Service |
392537 |
ok($f1->size() == 5242977, "size file F1 is " . $f1->size());
|
|
Packit Service |
392537 |
ok($ar->size() == 5243034, "Size D is " . $ar->size);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
($f1, $posn) = $ar->new_file("posititioned file", 1);
|
|
Packit Service |
392537 |
ok($posn > 0, "new_file returns a positive position");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$ar = undef;
|
|
Packit Service |
392537 |
pass("unref archive early");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
($ar, $f1, $f2, $a1, $a2) = ();
|
|
Packit Service |
392537 |
pass("Close remaining objects");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
close($fh);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
####
|
|
Packit Service |
392537 |
## TEST READING
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($fh, ">", $arch_filename);
|
|
Packit Service |
392537 |
make_header($fh, 1);
|
|
Packit Service |
392537 |
make_record($fh, 16, 0, "/etc/passwd", 1);
|
|
Packit Service |
392537 |
make_record($fh, 16, 20, "root:foo", 1);
|
|
Packit Service |
392537 |
make_record($fh, 16, 21, "boot:foot", 0);
|
|
Packit Service |
392537 |
make_record($fh, 16, 22, "dustin:snazzy", 1);
|
|
Packit Service |
392537 |
make_record($fh, 16, 21, "..more-boot:foot", 1);
|
|
Packit Service |
392537 |
make_record($fh, 16, 1, "", 1);
|
|
Packit Service |
392537 |
close($fh);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($fh, "<", $arch_filename);
|
|
Packit Service |
392537 |
$ar = Amanda::Archive->new(fileno($fh), "<");
|
|
Packit Service |
392537 |
pass("Create a new archive for reading");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
@res = ();
|
|
Packit Service |
392537 |
$ar->read(
|
|
Packit Service |
392537 |
file_start => sub {
|
|
Packit Service |
392537 |
push @res, [ "file_start", @_ ];
|
|
Packit Service |
392537 |
return "cows";
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
file_finish => sub {
|
|
Packit Service |
392537 |
push @res, [ "file_finish", @_ ];
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
0 => sub {
|
|
Packit Service |
392537 |
push @res, [ "frag", @_ ];
|
|
Packit Service |
392537 |
return "ants";
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
user_data => $user_data,
|
|
Packit Service |
392537 |
);
|
|
Packit Service |
392537 |
is_deeply([@res], [
|
|
Packit Service |
392537 |
[ 'file_start', $user_data, 16, '/etc/passwd' ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 16, "cows", 20, undef, 'root:foo', 1, 0 ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 16, "cows", 21, undef, 'boot:foot', 0, 0 ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 16, "cows", 22, undef, 'dustin:snazzy', 1, 0 ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 16, "cows", 21, "ants", '..more-boot:foot', 1, 0 ],
|
|
Packit Service |
392537 |
[ 'file_finish', $user_data, "cows", 16, 0 ]
|
|
Packit Service |
392537 |
], "simple read callbacks called in the right order")
|
|
Packit Service |
392537 |
or diag(Dumper(\@res));
|
|
Packit Service |
392537 |
$ar->close();
|
|
Packit Service |
392537 |
close($fh);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($fh, "<", $arch_filename);
|
|
Packit Service |
392537 |
$ar = Amanda::Archive->new(fileno($fh), "<");
|
|
Packit Service |
392537 |
pass("Create a new archive for reading");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
@res = ();
|
|
Packit Service |
392537 |
$ar->read(
|
|
Packit Service |
392537 |
file_start => sub {
|
|
Packit Service |
392537 |
push @res, [ "file_start", @_ ];
|
|
Packit Service |
392537 |
return "IGNORE";
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
file_finish => sub {
|
|
Packit Service |
392537 |
push @res, [ "file_finish", @_ ];
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
0 => sub {
|
|
Packit Service |
392537 |
push @res, [ "frag", @_ ];
|
|
Packit Service |
392537 |
return "ants";
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
user_data => $user_data,
|
|
Packit Service |
392537 |
);
|
|
Packit Service |
392537 |
is_deeply([@res], [
|
|
Packit Service |
392537 |
[ 'file_start', $user_data, 16, '/etc/passwd' ],
|
|
Packit Service |
392537 |
], "'IGNORE' handled correctly")
|
|
Packit Service |
392537 |
or diag(Dumper(\@res));
|
|
Packit Service |
392537 |
# TODO: check that file data gets dumped appropriately?
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($fh, "<", $arch_filename);
|
|
Packit Service |
392537 |
$ar = Amanda::Archive->new(fileno($fh), "<");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
@res = ();
|
|
Packit Service |
392537 |
$ar->read(
|
|
Packit Service |
392537 |
file_start => sub {
|
|
Packit Service |
392537 |
push @res, [ "file_start", @_ ];
|
|
Packit Service |
392537 |
return "dogs";
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
file_finish => sub {
|
|
Packit Service |
392537 |
push @res, [ "file_finish", @_ ];
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
21 => [ 100, sub {
|
|
Packit Service |
392537 |
push @res, [ "fragbuf", @_ ];
|
|
Packit Service |
392537 |
return "pants";
|
|
Packit Service |
392537 |
} ],
|
|
Packit Service |
392537 |
0 => sub {
|
|
Packit Service |
392537 |
push @res, [ "frag", @_ ];
|
|
Packit Service |
392537 |
return "ants";
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
user_data => $user_data,
|
|
Packit Service |
392537 |
);
|
|
Packit Service |
392537 |
is_deeply([@res], [
|
|
Packit Service |
392537 |
[ 'file_start', $user_data, 16, '/etc/passwd' ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 16, "dogs", 20, undef, 'root:foo', 1, 0 ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 16, "dogs", 22, undef, 'dustin:snazzy', 1, 0 ],
|
|
Packit Service |
392537 |
[ 'fragbuf', $user_data, 16, "dogs", 21, undef, 'boot:foot..more-boot:foot', 1, 0 ],
|
|
Packit Service |
392537 |
[ 'file_finish', $user_data, "dogs", 16, 0 ]
|
|
Packit Service |
392537 |
], "buffering parameters parsed correctly")
|
|
Packit Service |
392537 |
or diag(Dumper(\@res));
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($fh, "<", $arch_filename);
|
|
Packit Service |
392537 |
$ar = Amanda::Archive->new(fileno($fh), "<");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
@res = ();
|
|
Packit Service |
392537 |
eval {
|
|
Packit Service |
392537 |
$ar->read(
|
|
Packit Service |
392537 |
file_start => sub {
|
|
Packit Service |
392537 |
push @res, [ "file_start", @_ ];
|
|
Packit Service |
392537 |
die "uh oh";
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
user_data => $user_data,
|
|
Packit Service |
392537 |
);
|
|
Packit Service |
392537 |
};
|
|
Packit Service |
392537 |
like($@, qr/uh oh at .*/, "exception propagated correctly");
|
|
Packit Service |
392537 |
is_deeply([@res], [
|
|
Packit Service |
392537 |
[ 'file_start', $user_data, 16, '/etc/passwd' ],
|
|
Packit Service |
392537 |
], "file_start called before exception was rasied")
|
|
Packit Service |
392537 |
or diag(Dumper(\@res));
|
|
Packit Service |
392537 |
$ar->close();
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
unlink($arch_filename);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($fh, ">", $arch_filename);
|
|
Packit Service |
392537 |
$ar = Amanda::Archive->new(fileno($fh), ">");
|
|
Packit Service |
392537 |
$f1 = $ar->new_file("filename1");
|
|
Packit Service |
392537 |
$a1 = $f1->new_attr($Amanda::Archive::AMAR_ATTR_GENERIC_DATA);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($dfh, "<", $data_filename);
|
|
Packit Service |
392537 |
$a1->add_data_fd(fileno($dfh), 1);
|
|
Packit Service |
392537 |
close($dfh);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$a1->close();
|
|
Packit Service |
392537 |
$f1->close();
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$f1 = $ar->new_file("filename2");
|
|
Packit Service |
392537 |
$a1 = $f1->new_attr($Amanda::Archive::AMAR_ATTR_GENERIC_DATA);
|
|
Packit Service |
392537 |
$a1->add_data("abcdefgh" x 16384);
|
|
Packit Service |
392537 |
$a1->close();
|
|
Packit Service |
392537 |
$f1->close();
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$f1 = $ar->new_file("filename3");
|
|
Packit Service |
392537 |
$a1 = $f1->new_attr($Amanda::Archive::AMAR_ATTR_GENERIC_DATA);
|
|
Packit Service |
392537 |
$a1->add_data("abcdefgh" x 16384);
|
|
Packit Service |
392537 |
$a1->close();
|
|
Packit Service |
392537 |
$f1->close();
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
$ar->close();
|
|
Packit Service |
392537 |
close($fh);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
open($fh, "<", $arch_filename);
|
|
Packit Service |
392537 |
$ar = Amanda::Archive->new(fileno($fh), "<");
|
|
Packit Service |
392537 |
@res = ();
|
|
Packit Service |
392537 |
my $fh1;
|
|
Packit Service |
392537 |
open $fh1, ">/dev/null" || die("/dev/null");
|
|
Packit Service |
392537 |
$ar->set_read_cb(
|
|
Packit Service |
392537 |
file_start => sub {
|
|
Packit Service |
392537 |
my ($user_data, $filenum, $filename) = @_;
|
|
Packit Service |
392537 |
push @res, ["file_start", @_ ];
|
|
Packit Service |
392537 |
if ($filename eq "filename1") {
|
|
Packit Service |
392537 |
my $time_str = Amanda::MainLoop::timeout_source(500);
|
|
Packit Service |
392537 |
$time_str->set_callback(sub {
|
|
Packit Service |
392537 |
$ar->read_to($filenum, $Amanda::Archive::AMAR_ATTR_GENERIC_DATA, fileno($fh1));
|
|
Packit Service |
392537 |
$ar->start_read();
|
|
Packit Service |
392537 |
$time_str->remove();
|
|
Packit Service |
392537 |
});
|
|
Packit Service |
392537 |
$ar->stop_read();
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
return "dog $filenum $filename";
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
file_finish => sub {
|
|
Packit Service |
392537 |
my ($user_data, $filenum, $filename) = @_;
|
|
Packit Service |
392537 |
push @res, [ "file_finish", @_ ];
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
16 => sub {
|
|
Packit Service |
392537 |
my ($user_data, $filenum, $file_data, $attrid,
|
|
Packit Service |
392537 |
$attr_data, $data, $eoa, $truncated) = @_;
|
|
Packit Service |
392537 |
push @res, [ "frag", $user_data, $filenum, $file_data, $attrid, $attr_data, $eoa, $truncated ];
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
0 => sub {
|
|
Packit Service |
392537 |
my ($user_data, $filenum, $file_data, $attrid,
|
|
Packit Service |
392537 |
$attr_data, $data, $eoa, $truncated) = @_;
|
|
Packit Service |
392537 |
push @res, [ "16", $user_data, $filenum, $file_data, $attrid, $attr_data, $eoa, $truncated ];
|
|
Packit Service |
392537 |
},
|
|
Packit Service |
392537 |
user_data => $user_data,
|
|
Packit Service |
392537 |
done => sub {
|
|
Packit Service |
392537 |
my ($error) = @_;
|
|
Packit Service |
392537 |
push @res, [ "done" , @_ ];
|
|
Packit Service |
392537 |
Amanda::MainLoop::quit();
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
);
|
|
Packit Service |
392537 |
Amanda::MainLoop::run();
|
|
Packit Service |
392537 |
close $fh1;
|
|
Packit Service |
392537 |
$ar->close();
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
is_deeply([@res], [
|
|
Packit Service |
392537 |
[ 'file_start', $user_data, 1, 'filename1' ],
|
|
Packit Service |
392537 |
[ 'file_finish', $user_data, 'dog 1 filename1', 1, 0 ],
|
|
Packit Service |
392537 |
[ 'file_start', $user_data, 2, 'filename2' ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 2, "dog 2 filename2", 16, undef, 0, 0 ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 2, "dog 2 filename2", 16, 4, 1, 0 ],
|
|
Packit Service |
392537 |
[ 'file_finish', $user_data, 'dog 2 filename2', 2, 0 ],
|
|
Packit Service |
392537 |
[ 'file_start', $user_data, 3, 'filename3' ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 3, "dog 3 filename3", 16, undef, 0, 0 ],
|
|
Packit Service |
392537 |
[ 'frag', $user_data, 3, "dog 3 filename3", 16, 8, 1, 0 ],
|
|
Packit Service |
392537 |
[ 'file_finish', $user_data, "dog 3 filename3", 3, 0 ],
|
|
Packit Service |
392537 |
[ 'done' ]
|
|
Packit Service |
392537 |
], "buffering parameters parsed correctly")
|
|
Packit Service |
392537 |
or diag(Dumper(\@res));
|
|
Packit Service |
392537 |
unlink($data_filename);
|
|
Packit Service |
392537 |
unlink($arch_filename);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|