Автоматизированное тестирование двоичных файлов из SVN на HPC

StackOverflow https://stackoverflow.com/questions/1049337

Вопрос

Я хотел бы настроить автоматическое тестирование тестовых примеров для двоичных файлов Fortran в репозитории SVN, по требованию или с помощью задания Cron.Чтобы немного усложнить проблему, тестовые примеры будут запускаться в вычислительном кластере, так что для каждого тестового примера потребуется генерировать сценарий PBS.(среда Linux)

Существует множество решений для веб-тестирования и модульного тестирования, однако я не смог найти ничего для непосредственного тестирования двоичных файлов.Скажем, предоставьте входные данные и сравните результаты с ожидаемым решением.

Есть какие-нибудь предложения о том, как к этому следует подойти?

Это было полезно?

Решение

Я согласен, что это было бы довольно просто написать в сценарии.В зависимости от того, как настроены ваши двоичные файлы и насколько ваши программы отличаются друг от друга, вы можете даже включить сценарии тестирования как часть своего репозитория SVN.

Поскольку вы используете пакетную систему, у вас есть некоторая свобода в планировании тестов.Возможно, вам захочется иметь общее задание «проверки», которому вы можете предоставить параметры настройки (например,к местам ожидаемых и фактических результатов программы). Ник упоминается с использованием grep чтобы проверить вывод qstat для вашего идентификатора задания, но вы можете указать PBS приостановить задание до завершения другого задания.Это будет означать, что у вас есть что-то вроде:

...
#PBS -N run_test_1
#PBS -a 200906270000
...
<compile test>
<run test>
<save output>

при отправке сохраните идентификатор задания, возвращенный qsub (то, как вы это сделаете, зависит от вашей платформы — обычно что-то вроде job_id=$(qsub $JOB_FILE) достаточно).Затем подключите это значение к другому скрипту:

...
#PBS -N verify_test_1
#PBS -W depend=afterany:$job_id
<run comparison>
...

Это будет (когда правильное значение job_id вставлен) приостановить выполнение тестового запуска до полуночи 27 июня 2009 г. и приостановить выполнение задания проверки до завершения тестового задания (значок afterany директива указывает, что она должна запускаться всегда после первого задания, а не только в случае его успешного выполнения).

Однако в зависимости от времени обработки вашего кластера вы можете поместить все это в один сценарий, хотя вы все равно можете использовать удержания на основе времени PBS для запуска только в определенное время.Недавно я начал использовать Python вместо сценариев оболочки для выполнения даже этих задач, связанных с системой - вчера я тестировал создание исполняемого сценария Python и добавление директив PBS прямо в исходный код - похоже, это работало очень хорошо.

Другие советы

Возможно, есть лучший ответ, более заранее подготовленный, но я считаю, что Buildbot достаточно настраиваем, и пока вы можете написать скрипт Python для запуска вашего двоичного файла, он должен работать так, как вы хотите.

http://buildbot.net/

Кажется, что для простого тестирования ввода/вывода вы могли бы сами создать сценарий, чтобы сделать это...

например

for each program
    compile
    submit to queue
    wait for finish
    check output

На практике вам, вероятно, захочется отправить в очередь более одного задания, но идея та же.

Вот несколько идей, пришедших мне в голову, о том, как можно выполнить каждый шаг.

Отправка

Вы можете использовать шаблонный сценарий PBS и использовать sed для поиска/замены токенов ввода входными значениями для программы перед отправкой.

Ожидание завершения

Вы можете повторно просмотреть выходные данные qstat для идентификатора вашего задания, чтобы дождаться его завершения.

Проверьте вывод

Проверьте выходной файл задания на соответствие ожидаемому результату.Вы можете либо сохранить ожидаемый результат в файл и использовать diff, либо иметь список регулярных выражений, которые должны совпадать для каждого запуска.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top