1 |
mszeredi |
4 |
#!/usr/bin/perl -w |
2 |
|
|
use test::helper qw($_point $_loop $_real $_pidfile); |
3 |
|
|
use strict; |
4 |
|
|
use Test::More tests => 3; |
5 |
dpavlin |
112 |
|
6 |
|
|
sub is_mounted { |
7 |
|
|
my $diag = -d '/proc' ? `cat /proc/mounts` : `mount`; |
8 |
|
|
return $diag =~ m{ (?:/private)?$_point }; |
9 |
|
|
} |
10 |
|
|
|
11 |
|
|
ok(!is_mounted(),"already mounted"); |
12 |
mszeredi |
4 |
ok(-f $_loop,"loopback exists"); |
13 |
|
|
|
14 |
|
|
if(!fork()) { |
15 |
|
|
#close(STDIN); |
16 |
|
|
close(STDOUT); |
17 |
|
|
close(STDERR); |
18 |
dpavlin |
10 |
mkdir $_point; |
19 |
|
|
mkdir $_real; |
20 |
mszeredi |
4 |
`echo $$ >test/s/mounted.pid`; |
21 |
dpavlin |
89 |
diag "mounting $_loop to $_point"; |
22 |
dpavlin |
112 |
open STDOUT, '>', '/tmp/fusemnt.log'; |
23 |
|
|
open STDERR, '>&', \*STDOUT; |
24 |
dpavlin |
19 |
exec("perl -Iblib/lib -Iblib/arch $_loop $_point"); |
25 |
mszeredi |
4 |
exit(1); |
26 |
|
|
} |
27 |
dpavlin |
100 |
|
28 |
|
|
my ($success, $count) = (0,0); |
29 |
|
|
while ($count++ < 50 && !$success) { |
30 |
|
|
select(undef, undef, undef, 0.1); |
31 |
dpavlin |
112 |
($success) = is_mounted(); |
32 |
dpavlin |
100 |
} |
33 |
|
|
diag "Mounted in ", $count/10, " secs"; |
34 |
|
|
|
35 |
mszeredi |
4 |
ok($success,"mount succeeded"); |
36 |
|
|
system("rm -rf $_real"); |
37 |
|
|
unless($success) { |
38 |
|
|
kill('INT',`cat $_pidfile`); |
39 |
|
|
unlink($_pidfile); |
40 |
|
|
} else { |
41 |
|
|
mkdir($_real); |
42 |
|
|
} |