快速上手
这次操作只需要 Signal Lab:一切都发往 127.0.0.1,即本机,因此不涉及任何设备、网络或防火墙规则。您将:
- 发送一条 OSC 消息,并看着它到达;
- 在检查器中查看同一条消息;
- 把它保存到库中,并在任何地方再次发送;
- 启动一个模拟的 HTTP API,并向它发出请求;
- 针对该 API 运行一个实验,查看它失败的原因,修复它,并添加一项检查。
如果还没有安装 Signal Lab,请参见安装与更新。不确定某样东西在窗口的哪里?请参见窗口。
发送一条 OSC 消息并看着它到达
首先,需要有东西来接收消息:OSC 界面的监视器。
- 在侧边栏中打开 OSC。
- 在 监视器 下,将 绑定地址 设为
127.0.0.1:9000,让监视器只监听本机。 - 按 监听。按钮变为 停止,控制台提示监视器正在监听,监视器也会作为一个任务出现在底部面板的任务条中。
然后,从旁边的发送器发送消息:
- 在 发送器 下,保持 目标(主机:端口) 为
127.0.0.1:9000,即监视器监听的端口。 - 保持 OSC 地址 为
/hello/avatar/1,参数 下唯一的浮点参数为1.0——也可以输入您自己的地址和值。 - 按 发送,或在目标或地址字段中按 Enter。
监视器的表格中会出现一行:时间(到达的时刻)、来源(127.0.0.1 和发送端口)、地址 和 参数。发送器下方会有一行确认发送了什么及其字节大小;再次发送,它会统计重复的次数。
出现了关于防火墙的提示?
在 Windows 上,启动监视器时,顶栏下方可能会出现一条关于 Windows 防火墙的提示。它针对的是来自其他机器的消息;127.0.0.1 上的流量从不被过滤。现在先按 以后再说——防火墙提示说明了何时应该允许。
在检查器中查看
检查器会记录每个工具发送和接收的每一帧,但只在捕获开启期间。
- 在底部面板中,打开 检查器 标签页。
- 按 启用捕获。标签页的圆点会亮起。
- 回到发送器,再按一次 发送。
会出现两行,最新的在最前:发出的消息(→)和监视器收到的消息(←),每行都有协议、对端地址、大小和摘要。点击其中一行:帧详情 会显示是哪个工具发送或接收了它、使用了哪些地址、解码 后的消息,以及构成它的 字节。
完成后按 停用捕获;捕获关闭时没有任何开销。更多内容见检查器。
保存为信号并再次发送
以后还会用到的消息,应该放进信号库。
- 在 OSC 界面上,按发送器下方的 保存…。
- 在 保存到库 对话框中,将 名称 设为
First message,将 文件夹 设为Tutorial——保存到新文件夹时会自动创建它。 - 按 保存。
现在发送器已与该信号关联:按钮显示 已保存,旁边的标签显示信号所在的位置。修改参数后,标签会标出这一改动;保存(Ctrl+S)会更新该信号。
现在用三种方式再次发送它:
- 从库中发送。点击标签:信号 界面会打开,并选中
Tutorial文件夹中的该信号(也可以打开 信号,在那里点击它)。按 发送 或 Ctrl+Enter;在列表中双击它也会发送。 - 在任何地方发送。在任意界面按 Ctrl+K,输入
first,然后按 Enter。 - 从实验中发送。添加节点时,菜单会在 已保存的信号 下列出您的信号,选中即可成为发送该信号的步骤。
每次发送,监视器都会显示消息到达,控制台会写出信号的名称。信号发送的内容与其所属界面发送的完全一致。更多内容见信号。
用完 OSC 后,在监视器上按 停止。
向模拟的 API 发出请求
Signal Lab 自带五个模拟器,都在 127.0.0.1 上。其中的 演示 API 是位于 127.0.0.1:8080 的 HTTP API,包含以下路由:
| 请求 | 应答 |
|---|---|
GET /health | 200,带 {"status":"ok","time":"…"},即当前时间 |
GET /users/:id | 200,带该 id 的用户,例如 {"id":"42","name":"User 42"} |
POST /users | 201,带 Location 标头和新的 id |
GET /slow | 1.5 秒后返回 200 |
任意方法,/flaky | 503、503,从第三个请求起返回 200 |
| 其他任何请求 | 404 |
- 打开 模拟器。库 中列出了这五个模拟器;选择 演示 API。
- 按 启动。它现在会在
127.0.0.1:8080上应答,并作为任务运行。 - 打开 HTTP。方法为
GET;将 URL 设为http://127.0.0.1:8080/health。 - 按 发送,或在 URL 中按 Enter。
在 响应 下可以看到 状态 200、延迟、大小、响应标头和 JSON 正文。将 http://127.0.0.1:8080/flaky 发送三次:先是两次 503 应答,然后是 200——在一个会重试的客户端看来,能自行恢复的服务就是这样的。
回到 模拟器,实时 面板统计每个请求,已接收 列出每个请求,以及应答它的 规则 和 回复。让 演示 API 继续运行,下一部分还会用到。更多内容见模拟器。
运行实验
实验是可以反复运行的步骤流程。Signal Lab 第一次打开时显示的实验——HTTP 检查 模板——会向 http://127.0.0.1:8080/ 发送请求,并检查应答是否为 200。
打开模板
- 打开 实验。
- 如果画布上没有显示四个节点(开始、HTTP 请求、HTTP 状态、结束),请按工具栏左侧的 ☰(实验),在模板列表中选择 HTTP 检查,然后按 打开实验。打开会替换画布上的实验;Ctrl+Z 可以恢复之前的实验。
点击一个节点,可在右侧的 属性 中查看其设置。实验会在编辑时自动保存。
运行并查看失败原因
- 按 运行实验。
运行时间线 会在画布下方打开,每个步骤开始时(运行中)和结束时各显示一行:时间、节点以及结果。这次运行会失败:
- 开始 通过,并给出本次运行的种子。
- HTTP 请求 通过:请求已发出,并收到了应答
HTTP 404。 - HTTP 状态 失败:它期望
200,收到的却是404。
演示 API 没有 / 的路由,所以应答了 404——检查发现了这一点。时间线顶部的一行显示 失败 及原因。点击某一行,可以在画布上选中对应的节点。
请求本身失败了?
如果 HTTP 请求 步骤因连接被拒绝而失败,说明 127.0.0.1:8080 上没有任何程序在监听:请在 模拟器 中启动 演示 API,然后再次运行。
修复请求
- 点击 HTTP 请求 节点。
- 在 属性 中,将 URL 改为
http://127.0.0.1:8080/health。 - 按 运行实验。
这一次每个步骤都会通过:HTTP 状态 显示 条件满足,结束 显示 完成,时间线的标题显示 通过。
添加检查
状态码 200 只说明服务做出了应答,并不说明它应答了什么。把正文也检查一下:
- 点击 HTTP 状态 节点。
- 在 属性 中按 添加下一步,或在画布获得焦点时按 A。会打开一个带搜索框的节点菜单。
- 输入
assert_body,然后按 Enter。响应文本 节点会被添加到 HTTP 状态 与 结束 之间,已经连好线,其 包含文本 字段可以直接输入。 - 输入
"status":"ok"。 - 按 运行实验。
新步骤会通过。把文本改成正文中没有的内容,再运行一次,就能看到它失败并给出原因。
运行留下了什么
- 一份报告。运行结束时,时间线标题中会出现 报告已保存;将指针悬停在其上可以查看文件。结束的运行无论通过还是失败,都会在数据文件夹的
runs文件夹中写入一份报告,包含它所用的值和每个步骤。在浏览器中,这是一个下载链接。 - 一个种子。标题中还会显示本次运行的种子以及 固定:运行中的随机值遵循其种子,固定种子即可精确重现这些值。
更多内容见运行与报告。
清理
按顶栏中的 全部停止:它会停止 演示 API 以及其他仍在运行的一切。您的信号、实验及其报告都保留在数据文件夹中。