Как я могу рассчитать время успеха или неудачи opendir?

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

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

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

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

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


person Zagorax    schedule 24.06.2012    source источник


Ответы (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";
person JRFerguson    schedule 24.06.2012
comment
Я сделал это с помощью простой команды time, но ваш метод хорош. Спасибо. - person Zagorax; 25.06.2012