gpt4 book ai didi

Bazel-如何获得一个简短但密封的测试临时目录?

转载 作者:行者123 更新时间:2023-12-05 04:09:56 27 4
gpt4 key购买 nike

我有一个尝试启动嵌入式 mysql 的测试。
它尝试将套接字文件写入 Files.createTempFile(null, ".sock") 并返回以下错误:mysql start failed with error: [ERROR] The socket file path is too long (> 103):/private/var/tmp/_bazel_user/1c8ed8d84f6cb79483aa3cc4da758c86/bazel-sandbox/2478112867584790357/execroot/some_workspace/_tmp/dfebe48cda4dfdc8739653efedfa4933/394798020705754292 .sock.
我通过使用 jvm_flags 将 java temp 目录重新指向 /tmp 来解决这个问题,但是当我尝试使用沙盒时这不起作用,因为我猜想 测试不允许写在那里。

我试过从 java 代码设置一个符号链接(symbolic link)(像这样 Files.createSymbolicLink(Paths.get("/tmp/foo"),Paths.get(System.getProperty("java.io. tmpdir"))) 但这似乎没有帮助。

我也试过设置 output_base 但这也无济于事。

非常感谢指点和提示,因为我目前无法在沙箱下运行我的测试,因此无法并行化它们。

最佳答案

我认为您将 Java 重新指向/tmp 的方法应该可行。 macOS 沙箱始终允许写入多个目录和/tmp 和/private/tmp are included in this set .我尝试使用 genrule 重现失败:genrule(name = "write_to_tmp", outs = ["out.txt"], cmd = "touch/tmp/something.sock && touch $@"),它工作正常并创建文件/tmp/something.sock。

我认为通常使用 /tmp 应该可以正常工作,尽管它在 macOS 上似乎有点不寻常。 $TMPDIR 被操作系统设置为/var/folders 下具有随机名称的用户特定文件夹,似乎通常鼓励使用它而不是/tmp。但如果你知道自己在做什么,我就看不出真正的问题。

请注意,我们在 macOS 上没有可用的 tmpfs 或类似机制,因此我们无法自动保证您通过操作对 /tmp 等可写文件夹的使用是密封的,不会泄漏运行之间的状态或文件名不会冲突。确保通过 mkstemp 或类似方式以安全的方式生成文件名。

关于Bazel-如何获得一个简短但密封的测试临时目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45200150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com