2012-06-24 1 views
2

Я пишу рамки для проверки поведения CernVM FS. В принципе, у меня есть служба, которая монтирует удаленную файловую систему, обслуживаемую через http, и делает это с помощью automount, как только пользователь попытается получить доступ к сконфигурированной точке монтирования.Как я могу вычислить успешное или неудачное время opendir?

Один из тестов, который я должен написать, заключается в проверке того, соответствует ли cvmfs конфигурации тайм-аута для запроса DNS. Таким образом, у меня есть набор DNS, чтобы ждать 180 секунд, но служба должна остановиться, чтобы попытаться установить эту папку через 10 секунд, если используется прокси, через 5 секунд, если соединение является прямым.

У меня уже есть три теста (один с хорошим dns, другие два со спальным dns с прокси и без него). Все тесты успешны (так что на самом деле это не удается, когда dns сон), но я не знаю, как проверить, сколько времени ожидает команда Perl opendir, прежде чем заявить, что она не может получить доступ к папке.

Как я могу измерить это время? Я знаю, что он должен потерпеть неудачу, но я хочу быть уверенным, что он провалится через 10 или 5 секунд (в зависимости от конфигурации).

Я должен сделать это в Perl, но любое предложение будет оценено.

ответ

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"; 
+0

Я сделал это с помощью простой команды 'time', но ваш метод хорош. Спасибо. – Zagorax