Как контролировать процессы в рое системных виртуальных машин в C - PullRequest
0 голосов
/ 28 января 2020

Наш процесс разработки включает в себя выполнение большого и сложного набора тестов (2 часа, включая GUI, COM, Excel, ODB C и др. c). Чтобы ускорить этот процесс, мы создали небольшую платформу для запуска N процессов, которые подключаются обратно (через TCP) к жгуту проводов тестов. Процесс привязки распределяет работу между процессами бегуна, собирает результаты и выполняет некоторые проверки работоспособности. Пока все хорошо.

Проблема в том, что с ростом распараллеливания тесты начинают мешать друг другу, и мы получаем много ошибок. У нас достаточно хорошего оборудования для параллельного запуска десятков бегунов, но с более чем четырьмя вещами начинают выходить из строя. Чтобы преодолеть эту ситуацию, мы разработали следующий план: (1) создать виртуальную машину Hyper-V для тестирования (вручную, поскольку на данный момент это слишком сложно настроить с помощью сценария), а затем (2) из ​​процесса использования, предпочтительно с использованием некоторых вид C API, порождает N экземпляров одной и той же виртуальной машины, где каждый процесс запуска создается изолированно. Хотя это ресурсоемкий подход, он более реалистичен c и практичен, чем выполнение тестов не по sh при параллельной работе.

Я посмотрел на доступные библиотеки, и кажется, что libvirt было бы уместно для этой работы, но я не смог найти небольшую суть C кода для выполнения этапа (2), то есть spawn vm + create внутри него.

...