查询Bazel缓存?

查询Bazel缓存?,bazel,Bazel,我想使用Bazel运行e2e测试 每个Bazel e2e测试规则都需要一组唯一的外部服务。例如,一些e2e测试可能需要postgresql,其他测试可能需要kafka,等等 我不想在每一次测试运行之前都支持所有这些服务。相反,我想查询Bazel缓存。如果测试已经通过并且缓存的结果仍然有效,我将跳过外部服务设置 如何查询Bazel缓存以查看哪些测试已经通过并且不会重新运行?如果您保持Bazel服务器运行,并且不更改任何依赖项(测试文件、源文件、Bazel目标配置),Bazel会自动缓存通过的测试

我想使用Bazel运行e2e测试

每个Bazel e2e测试规则都需要一组唯一的外部服务。例如,一些e2e测试可能需要postgresql,其他测试可能需要kafka,等等

我不想在每一次测试运行之前都支持所有这些服务。相反,我想查询Bazel缓存。如果测试已经通过并且缓存的结果仍然有效,我将跳过外部服务设置


如何查询Bazel缓存以查看哪些测试已经通过并且不会重新运行?

如果您保持Bazel服务器运行,并且不更改任何依赖项(测试文件、源文件、Bazel目标配置),Bazel会自动缓存通过的测试

换句话说,如果我跑步:

bazel test //foo:bar
第一次,bazel构建并执行测试。如果我让Bazel服务器打开并重新运行

bazel test //foo:bar
…bazel返回得相当快,并注意到缓存命中:

//foo:bar(缓存)以0.1s的速度传递


如果我误解了您的问题,请告诉我。

谢谢您的回复——我正在寻找一种查询Bazel缓存本身的方法。按照您的示例,我如何知道
bazel test//foo:bar
是否会说
…(缓存的)PASSED…
?不需要运行
bazel test
命令。我认为这是不可能的。我还要说一些我们不希望用户依赖的东西。这是一个实现细节。我会将这个答案标记为正确。。。在
bazel测试
失败时,我可以为失败的测试提供资源,然后重试
bazel测试
。不理想,但足够好。@hlopko查询缓存会很好。是什么让你说这是一个实施细节?我认为缓存是Bazel核心价值的一部分?使用aquery对抗SkyFrame状态怎么样?这能奏效吗?我没有使用过它,但听起来它可以: