LagerBox 是入口点。构造它的开销很小,并且在您调用方法之前不会产生任何网络流量,因此在测试辅助函数里建一个几乎不花什么代价。
构造
connect() 接受主机名、IP、host:port 或完整 URL。协议默认是 http,端口默认是 9000。
构建器
timeout() 只设置快速命令的预算。长时间运行的操作无论如何都会自行计算更宽的预算 —— 一次 60 秒的 wait_for_level 不会被 10 秒的默认值截断。
环境变量
发现
BoxCapabilities
status().capabilities 说明该 Box 提供哪些端点。
usb_devices()
从 sysfs 枚举 Box 的 USB 总线。它只需要几毫秒,不需要独占任何资源,因此在等待被测设备重新枚举时可以安全地轮询它。
每次设备重新枚举,
devnum 都会变。在检查设备是否在断电重启后回来时,请匹配 serial,或者匹配 vid/pid。锁定 Box
共享的实验台需要预留机制,否则两个 CI 作业会同时驱动同一批仪器。Error::Box、HTTP 409 和 Box is locked by <holder>;以非持有者身份解锁则是 HTTP 403 加同样的信息。解锁一台本来就空闲的 Box 会成功。
lock_guard() 只存在于阻塞客户端上。异步客户端有其他所有的锁方法,但没有 RAII 守卫。安全限值
按 Net 设定的上限,由 Box 的硬件服务而不是您的测试来强制执行 —— 因此即使测试行为异常,这些上限依然生效。需要 Box 0.35.0 或更高版本。
被拒绝的设定值以
Error::Box 的形式返回:
max_power。一次 setter 调用只确立电压或电流之一,绝不会同时确立两者,因此 Box 无法诚实地判定功率上限。所以它干脆拒绝这个键。
说明
- 句柄借用该客户端,因此只要还有从它派生出来的句柄在用,就要让
LagerBox保持存活。 - Box 会按物理仪器串行化访问,因此并行的测试无法在同一台仪器上交错进行 I/O。共享同一个 Net 的测试之间仍然会看到彼此造成的状态变化。
nets()会自动回退到较早的{"nets": [...]}响应格式,因此它在早于纯数组格式的 Box 上同样可用。

