跳到正文

快速上手 ​

这次操作只需要 Signal Lab:一切都发往 127.0.0.1,即本机,因此不涉及任何设备、网络或防火墙规则。您将:

  1. 发送一条 OSC 消息,并看着它到达;
  2. 在检查器中查看同一条消息;
  3. 把它保存到库中,并在任何地方再次发送;
  4. 启动一个模拟的 HTTP API,并向它发出请求;
  5. 针对该 API 运行一个实验,查看它失败的原因,修复它,并添加一项检查。

如果还没有安装 Signal Lab,请参见安装与更新。不确定某样东西在窗口的哪里?请参见窗口。

发送一条 OSC 消息并看着它到达 ​

首先,需要有东西来接收消息:OSC 界面的监视器。

  1. 在侧边栏中打开 OSC。
  2. 在 监视器 下,将 绑定地址 设为 127.0.0.1:9000,让监视器只监听本机。
  3. 按 监听。按钮变为 停止,控制台提示监视器正在监听,监视器也会作为一个任务出现在底部面板的任务条中。

然后,从旁边的发送器发送消息:

  1. 在 发送器 下,保持 目标(主机:端口) 为 127.0.0.1:9000,即监视器监听的端口。
  2. 保持 OSC 地址 为 /hello/avatar/1,参数 下唯一的浮点参数为 1.0——也可以输入您自己的地址和值。
  3. 按 发送,或在目标或地址字段中按 Enter。

监视器的表格中会出现一行:时间(到达的时刻)、来源(127.0.0.1 和发送端口)、地址 和 参数。发送器下方会有一行确认发送了什么及其字节大小;再次发送,它会统计重复的次数。

出现了关于防火墙的提示?

在 Windows 上,启动监视器时,顶栏下方可能会出现一条关于 Windows 防火墙的提示。它针对的是来自其他机器的消息;127.0.0.1 上的流量从不被过滤。现在先按 以后再说——防火墙提示说明了何时应该允许。

在检查器中查看 ​

检查器会记录每个工具发送和接收的每一帧,但只在捕获开启期间。

  1. 在底部面板中,打开 检查器 标签页。
  2. 按 启用捕获。标签页的圆点会亮起。
  3. 回到发送器,再按一次 发送。

会出现两行,最新的在最前:发出的消息(→)和监视器收到的消息(←),每行都有协议、对端地址、大小和摘要。点击其中一行:帧详情 会显示是哪个工具发送或接收了它、使用了哪些地址、解码 后的消息,以及构成它的 字节。

完成后按 停用捕获;捕获关闭时没有任何开销。更多内容见检查器。

保存为信号并再次发送 ​

以后还会用到的消息,应该放进信号库。

  1. 在 OSC 界面上,按发送器下方的 保存…。
  2. 在 保存到库 对话框中,将 名称 设为 First message,将 文件夹 设为 Tutorial——保存到新文件夹时会自动创建它。
  3. 按 保存。

现在发送器已与该信号关联:按钮显示 已保存,旁边的标签显示信号所在的位置。修改参数后,标签会标出这一改动;保存(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 /health200,带 {"status":"ok","time":"…"},即当前时间
GET /users/:id200,带该 id 的用户,例如 {"id":"42","name":"User 42"}
POST /users201,带 Location 标头和新的 id
GET /slow1.5 秒后返回 200
任意方法,/flaky503、503,从第三个请求起返回 200
其他任何请求404
  1. 打开 模拟器。库 中列出了这五个模拟器;选择 演示 API。
  2. 按 启动。它现在会在 127.0.0.1:8080 上应答,并作为任务运行。
  3. 打开 HTTP。方法为 GET;将 URL 设为 http://127.0.0.1:8080/health。
  4. 按 发送,或在 URL 中按 Enter。

在 响应 下可以看到 状态 200、延迟、大小、响应标头和 JSON 正文。将 http://127.0.0.1:8080/flaky 发送三次:先是两次 503 应答,然后是 200——在一个会重试的客户端看来,能自行恢复的服务就是这样的。

回到 模拟器,实时 面板统计每个请求,已接收 列出每个请求,以及应答它的 规则 和 回复。让 演示 API 继续运行,下一部分还会用到。更多内容见模拟器。

运行实验 ​

实验是可以反复运行的步骤流程。Signal Lab 第一次打开时显示的实验——HTTP 检查 模板——会向 http://127.0.0.1:8080/ 发送请求,并检查应答是否为 200。

打开模板 ​

  1. 打开 实验。
  2. 如果画布上没有显示四个节点(开始、HTTP 请求、HTTP 状态、结束),请按工具栏左侧的 ☰(实验),在模板列表中选择 HTTP 检查,然后按 打开实验。打开会替换画布上的实验;Ctrl+Z 可以恢复之前的实验。

点击一个节点,可在右侧的 属性 中查看其设置。实验会在编辑时自动保存。

运行并查看失败原因 ​

  1. 按 运行实验。

运行时间线 会在画布下方打开,每个步骤开始时(运行中)和结束时各显示一行:时间、节点以及结果。这次运行会失败:

  • 开始 通过,并给出本次运行的种子。
  • HTTP 请求 通过:请求已发出,并收到了应答 HTTP 404。
  • HTTP 状态 失败:它期望 200,收到的却是 404。

演示 API 没有 / 的路由,所以应答了 404——检查发现了这一点。时间线顶部的一行显示 失败 及原因。点击某一行,可以在画布上选中对应的节点。

请求本身失败了?

如果 HTTP 请求 步骤因连接被拒绝而失败,说明 127.0.0.1:8080 上没有任何程序在监听:请在 模拟器 中启动 演示 API,然后再次运行。

修复请求 ​

  1. 点击 HTTP 请求 节点。
  2. 在 属性 中,将 URL 改为 http://127.0.0.1:8080/health。
  3. 按 运行实验。

这一次每个步骤都会通过:HTTP 状态 显示 条件满足,结束 显示 完成,时间线的标题显示 通过。

添加检查 ​

状态码 200 只说明服务做出了应答,并不说明它应答了什么。把正文也检查一下:

  1. 点击 HTTP 状态 节点。
  2. 在 属性 中按 添加下一步,或在画布获得焦点时按 A。会打开一个带搜索框的节点菜单。
  3. 输入 assert_body,然后按 Enter。响应文本 节点会被添加到 HTTP 状态 与 结束 之间,已经连好线,其 包含文本 字段可以直接输入。
  4. 输入 "status":"ok"。
  5. 按 运行实验。

新步骤会通过。把文本改成正文中没有的内容,再运行一次,就能看到它失败并给出原因。

运行留下了什么 ​

  • 一份报告。运行结束时,时间线标题中会出现 报告已保存;将指针悬停在其上可以查看文件。结束的运行无论通过还是失败,都会在数据文件夹的 runs 文件夹中写入一份报告,包含它所用的值和每个步骤。在浏览器中,这是一个下载链接。
  • 一个种子。标题中还会显示本次运行的种子以及 固定:运行中的随机值遵循其种子,固定种子即可精确重现这些值。

更多内容见运行与报告。

清理 ​

按顶栏中的 全部停止:它会停止 演示 API 以及其他仍在运行的一切。您的信号、实验及其报告都保留在数据文件夹中。

接下来 ​

  • 概念:界面、信号、任务、模拟器和实验背后的理念。
  • 实验:完整的编辑器介绍;每种节点见节点。
  • OSC、HTTP 以及其他协议的页面:在把 Signal Lab 指向真实设备时阅读。
  • 命令行:在终端或流水线中运行同一个实验。