Как я могу гарантировать, что в Хадсоне одновременно выполняется только одно задание определенной категории? - PullRequest
5 голосов
/ 05 февраля 2009

Я использую Hudson для автоматизации тестирования очень крупного важного продукта. Я хочу, чтобы мои хосты тестирования могли запускать столько параллельных сборок, сколько они теоретически поддерживают, за исключением тестов Excel, которые должны запускаться только по одному на машину в любое время. Одновременно может выполняться любое количество тестов, отличных от Excel, но не более одного теста Excel за раз должен выполняться для каждой машины.

Справочная информация:

Большинство моих тестов - это обычные юнит-тесты - такие вещи, которые я могу легко запустить параллельно. К сожалению, существенная и длительная часть моего плана модульного тестирования состоит из тестов, которые были реализованы в Excel.

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

Я написал инструмент для запуска тестов, который позволяет мне легко запускать группу тестов Excel: каждый тест представляет собой один файл .xls. Каждая группа представляет собой папку, полную файлов Excel. У меня около 30 групп, которые нужно запустить для сквозного теста. Мой инструмент преобразует результаты каждого из тестов в XML-стиль в стиле JUnit, который Хадсон может понять. Тесты используют библиотеку pywin32com для автоматизации Excel. При самостоятельном запуске они надежны.

У меня есть группа компьютеров, которые предназначены для выполнения тестов. Каждая машина является четырехъядерной и теоретически может запускать довольно много вещей одновременно. К сожалению, я обнаружил, что COM не может использоваться для безопасного управления более чем 1 Excel на машину одновременно.

То есть, если во 2-й сборке происходит попытка связаться с Excel через COM, это может помешать уже запущенной и вызвать сбой обоих тестов.

Я могу запустить столько других процессов, не относящихся к Excel, сколько позволяет машина, но мне нужно найти способ, чтобы Хадсон не пытался запустить более одного процесса, который требует одновременного выполнения Excel на любой машине.

Ответы [ 2 ]

5 голосов
/ 05 февраля 2009

Похоже, плагин Locks and Latches может вам помочь.

http://hudson.gotdns.com/wiki/display/HUDSON/Locks+and+Latches+plugin

0 голосов
/ 05 февраля 2009

Разве это не Гудзон Ява?

Поскольку вы отметили этот пост-питон, я укажу, что buildbot , имеет подчиненные блокировки , чтобы ограничить отдельные шаги на отдельных подчиненных (или использовать их в качестве более грубых блокировок). если хотите).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...