2

我正在编写一个框架来测试CernVM FS的行为。基本上,我有一项服务可以挂载通过 http 提供的远程文件系统,并在用户尝试访问配置的挂载点时立即使用自动挂载进行。

我必须编写的测试之一是检查 cvmfs 是否遵守 dns 请求的超时配置。因此,我将 dns 设置为等待 180 秒,但如果使用代理,则服务必须在 10 秒后停止以尝试挂载文件夹,如果是直接连接,则在 5 秒后尝试挂载文件夹。

我已经定义了三个测试(一个具有良好的 dns,另外两个具有睡眠 dns,有和没有代理)。所有测试都成功(因此,实际上当 dns 处于睡眠状态时它会失败),但我不知道如何检查 Perl opendir 命令在声明它无法访问该文件夹之前等待多长时间。

我该如何衡量这个时间?我知道它必须失败,但我想确保它在 10 或 5 秒后失败(取决于配置)。

我必须在 Perl 中完成,但任何建议都将不胜感激。

4

1 回答 1

1

您可以测量发出opendir和返回之间的时间(成功或不成功);就像是:

use Carp;
use Time::HiRes qw(gettimeofday tv_interval);
my $dir   = '.' #...whatever...'
my $start = [gettimeofday];
opendir my $dfh, $dir or carp "opendir() failed: $!\n";
my $end   = [gettimeofday];
my $delta = tv_interval $start, $end;
print "opendir() took $delta seconds\n";
于 2012-06-24T13:44:55.083 回答