Сопоставление базового тестового действия с удаленной стратегией

#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
 

чтобы понять, что на самом деле соответствует этому регулярному выражению.