【问题标题】:Mapping Bazel test action to remote strategy将 Bazel 测试操作映射到远程策略
【发布时间】:2021-01-14 14:18:54
【问题描述】:

我有一个 Bazel 项目,其中包含大量单元测试,其中一个子集需要 GPU 支持。

我想将具有 GPU 要求的单元测试映射到 remote 策略,但将所有其他单元测试保持为 沙盒,在本地运行。由于所有测试共享相同的助记符 (TestRunner),我不确定如何使用 strategystrategy_regexp 参数来做到这一点。

Bazel 是否支持此用例?或者您是否必须将所有或没有测试映射到远程执行?

亲切的问候!

【问题讨论】:

  • 嘿@mareld,我有一个类似的问题,即按目标更改策略。你最终找到解决方案了吗?
  • 没有。我们必须像现在一样映射所有内容。但是,我们仍然希望将来有更精细的解决方案。
  • 刚刚找到了一些解决方案。我无法让它与某种自定义助记符一起使用,因此探索了正则表达式。

标签: bazel


【解决方案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

了解该正则表达式中实际匹配的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 2018-06-20
    • 2021-12-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多