Как запустить тестовую цель Bazel исключительно в песочнице? - PullRequest
0 голосов
/ 15 января 2019

Я хочу запустить тестовую цель, которая работает исключительно. Тем не менее, согласно https://docs.bazel.build/versions/master/be/common-definitions.html#common.tags,, если я использую тег «эксклюзивный», то цель не будет работать с песочницей. Иногда дочерний процесс, который создается как часть выполнения цели теста, не завершается. Я хочу убедиться, что дочерний процесс завершается.

1 Ответ

0 голосов
/ 22 января 2019

Мое намерение состояло в том, чтобы гарантировать, что дочерние процессы не будут продолжать жить после завершения цели Bazel. Поскольку я работал без песочницы Bazel, я не мог воспользоваться возможностями песочницы Bazel, чтобы гарантировать, что дочерние процессы действительно были завершены.

К счастью, мои тесты были предназначены для системы Linux, поэтому я хотел использовать функцию пространства имен Linux, чтобы гарантировать завершение дочерних процессов. Я использовал команду unshare для настройки пространства имен процесса перед выполнением команды Bazel:

$ bazel shutdown # ensure Bazel not already running
$ unshare --pid --fork --map-root-user bazel test ...

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

...