Сценарии Vue
В отличие от процедур в процедурных языках программирования блок действий в Vue не имеет выходных параметров и не возвращает значений.
В отличие от процедур в процедурных языках программирования блок действий в Vue не имеет выходных параметров и не возвращает значений. Он также не поддерживает наборы входных параметров. С другой стороны, в точке входа в тест операциям блока действий доступны данные контекста. Например, в блоке действий Vue можно ссылаться на параметры, переданные в функцию; если точка тестирования является точкой входа в функцию.
Предикаты
Когда блоки точек тестирования должны выполняться в зависимости от определенных условий, следует использовать предикаты. Секция предиката определяется наличием ключевого слова когда сразу после секции определения теста. Предикат содержит обычное условное выражение стиля C в круглых скобках.
when ( <условие> )when ( __pid == 1678 )Пример сценария Vue
Пример сценария Vue:
/* Глобальные переменные автоматически инициализируются нулем */ [1]
int count; /[2]
/*
* Файл: count.e
*
* Подсчет числа системных вызовов read и write,
* сделанных процессом с ИД 400
*/
@@BEGIN
{
printf("Запуск теста\n");
}
@@syscall:*:read:entry, @@syscall:*:write:entry [3]
when (__pid == 400)[4]
{[5]
count++;
/* Вывод сообщения через каждые 20 системных вызовов */
if (count % 20 == 0)
printf("Число вызовов read/write: %d\n", count);
/* Выход, когда число системных вызовов превысит 100 */
if (count > 100)
exit();
} [6]
/* Вывод статистики перед выходом */
@@END
{
printf("Завершение теста после %d системных вызовов.\n", count);
}
Верхние индексы обозначают различные элементы в примере сценария Vue:
- Комментарии
- (Необязательный) Секция определений
- Спецификация теста
- (Необязательный) Предикат
- Начало блока действий
- Конец блока действий
Сценарий запускается следующей командой. Примечание: показанный вывод сценария — это только пример.
# probevue count.e
Число вызовов read/writes: 20
Число вызовов read/writes: 40
Число вызовов read/writes: 60
...
...
Для запуска probevue требуются соответствующие права доступа. Необходимо войти в систему под учетной записью администратора или получить права на тестирование системных вызовов всех процессов системы.