#bazel
#bazel
Вопрос:
У меня есть проект Bazel с множеством модульных тестов, в котором подмножеству требуется поддержка GPU.
Я хотел бы сопоставить модульные тесты, для которых требуются требования к графическому процессору, с удаленной стратегией, но сохранить все остальные модульные тесты как изолированные, выполняемые локально. Поскольку все тесты используют одну и ту же мнемонику (TestRunner) Я не уверен, как это сделать, используя параметры strategy или strategy_regexp.
Поддерживается ли этот вариант использования Bazel? Или вам нужно либо сопоставить все тесты, либо нет тестов для удаленного выполнения?
С уважением!
Комментарии:
1. Привет, @mareland, у меня аналогичная проблема с изменением стратегии для каждой цели. Вы в конце концов нашли решение?
2. Нет. На данный момент нам нужно было сопоставить все. Тем не менее, мы все равно хотели бы получить более детализированное решение в будущем.
3. Просто нашел какое-то решение. Я не смог заставить его работать с какой-то пользовательской мнемоникой, поэтому изучил регулярное выражение.
Ответ №1:
У нас была похожая проблема (хотя и другая: некоторые //some/test/target
запускались локально, а другие запускались как удаленные / рабочие / изолированные), и в итоге мы написали
test --strategy=remote,worker,sandboxed # force sandbox: no local
test --strategy_regexp=//some/test/target=local # allow local
test --worker_sandboxing=true
test --incompatible_legacy_local_fallback=false
к сожалению, это регулярное выражение может стать довольно большим, поэтому подумайте о каком-нибудь умном именовании, если у вас есть куча таких «исключительных» тестов, например. вызовите их все _special_tag
и напишите регулярное выражение, например
test --strategy_regexp=//.*_special_tag=local # allow local for `*_special_tag
Что может помочь в отладке, так это запустить
bazel aquery //some/test/target 2>/dev/null
чтобы понять, что на самом деле соответствует этому регулярному выражению.