mirror of
https://github.com/vgough/encfs.git
synced 2024-11-27 18:33:24 +01:00
73 lines
1.6 KiB
Perl
Executable File
73 lines
1.6 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
# Benchmark EncFS reverse mode
|
|
|
|
use File::Temp;
|
|
use warnings;
|
|
|
|
require("integration/common.pl");
|
|
|
|
sub mount_encfs_reverse {
|
|
my $p = shift;
|
|
my $c = shift;
|
|
my $opts = shift;
|
|
|
|
my $cmdline = "./build/encfs --extpass=\"echo test\" --standard $p $c --reverse $opts 2>&1 > /dev/null";
|
|
# print "mounting encfs: $cmdline\n";
|
|
my $status = system($cmdline);
|
|
if ( $status != 0 ) { die("command returned error: $status"); }
|
|
waitForFile("$p/.encfs6.xml") or die("Control file not created");
|
|
|
|
# print "encfs --reverse mounted on $c\n";
|
|
}
|
|
|
|
sub cleanup {
|
|
print "cleaning up... ";
|
|
my $workingDir = shift;
|
|
for(my $i=0; $i<2; $i++) {
|
|
system("fusermount -u $workingDir/c") == 0 and last;
|
|
system("lsof $workingDir/c");
|
|
printf "retrying... ";
|
|
sleep(1);
|
|
}
|
|
system("rm -Rf $workingDir 2> /dev/null");
|
|
print "done\n";
|
|
}
|
|
|
|
sub main {
|
|
|
|
my $prefix = shift(@ARGV) or die("Missing DIR argument");
|
|
my $workingDir = mkdtemp("$prefix/encfs-performance-XXXX")
|
|
|| die("Could not create temporary directory");
|
|
|
|
my $c = "$workingDir/c";
|
|
my $p = "$workingDir/p";
|
|
|
|
my $opts = "";
|
|
if ( @ARGV > 0 ) {
|
|
$opts = shift(@ARGV)
|
|
};
|
|
|
|
mkdir($c);
|
|
mkdir($p);
|
|
|
|
dl_linuxgz();
|
|
our $linuxgz;
|
|
system("tar xzf $linuxgz -C $p");
|
|
|
|
mount_encfs_reverse($p, $c, $opts);
|
|
|
|
my @results = ();
|
|
stopwatch_start("rsync 1 (initial copy)");
|
|
system("rsync -a $c/ $workingDir/rsync-target");
|
|
stopwatch_stop(\@results);
|
|
|
|
stopwatch_start("rsync 2 (no changes)");
|
|
system("rsync -a $c/ $workingDir/rsync-target");
|
|
stopwatch_stop(\@results);
|
|
|
|
cleanup($workingDir);
|
|
}
|
|
|
|
main();
|