Я использую 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 на любой машине.