Назад | Перейти на главную страницу

Как распределить несколько запусков приложения на многих машинах

У меня есть приложение для моделирования (64-битные окна), которое работает без какого-либо взаимодействия с пользователем. Это приложение собирает информацию и отправляет ее на удаленный MS SQL Server. Я бы хотел выполнить эту симуляцию столько раз, сколько смогу, на нескольких машинах после того, как наша ночная сборка будет завершена и пройдет набор тестов.

Если возможно, я бы хотел иметь возможность настроить его так, чтобы он останавливался после x общих запусков или если весь пакет занял более y часов.

Я пробовал использовать встроенную среду тестирования Visual Studio, поскольку у нас уже есть тестовая лаборатория с несколькими агентами. Я создал один модульный тест, который просто запускает симуляцию, затем я создал упорядоченный тест и добавил этот единственный тест несколько раз (из того, что я понял, это единственный способ выполнить один и тот же модульный тест более одного раза). Я обнаружил, что заказанные тесты выполняются только на одном агенте и не распределяются, что очень ограничивает.

Мы используем TeamCity для выполнения наших ночных сборок, и я подозреваю, что это можно реализовать поверх этого, но я новичок в TeamCity. У нас также есть Jenkins и Bamboo, и я открыт для любого другого программного обеспечения, которое выполнит эту работу, предполагая, что оно работает в 64-битной ОС Windows.

Какие-либо предложения?

Я знаю об этом гораздо больше с точки зрения Linux / Unix. Если бы я не мог найти какой-либо инструмент, который бы сделал эту работу за меня, я бы сделал следующее:

  • На главной машине есть каталог, который может быть виден в режиме чтения / записи на всех общих машинах.
  • Все распределенные машины время от времени проверяют этот каталог, чтобы увидеть определенный командный файл «A».
  • Каждая машина после выполнения оставляет свой собственный файл меток в этом общем каталоге.
  • Основная машина хранит в отдельном командном файле "B" описание работы (XML или что-то еще).
  • Каждый раз, когда вы хотите остановить задание, вы удаляете файл «A».
  • Все распределенные машины при обнаружении отсутствия файла "A" прекращают свою работу.

Таким образом, вы можете разработать процедуру без какой-либо специальной программы и знания TCP / IP. Надеюсь, это немного поможет.