针对 Fuchsia 的脚本层 (SL4F)

Fuchsia 脚本层 (SL4F) 是一个 HTTP 服务器,允许端到端测试访问 Fuchsia 设备上的驱动程序服务(例如音频、屏幕、输入、诊断和 WebDriver)。

与提供给 Fuchsia 设备并在设备上运行的其他 Fuchsia 软件包不同,端到端测试在主机上运行。如需从远程测试主机触发 Fuchsia 设备上的操作(例如,“在屏幕上向右滑动”),端到端测试会将 JSON-RPC 请求发送到设备上运行的 SL4F。然后,SL4F 会将这些请求转换为与 Fuchsia 等效的 FIDL 命令,用于设备上的各种驱动程序服务。

Fuchsia 的端到端测试支持系统
图 1. Fuchsia 的端到端测试支持服务示意图。

但是,并非所有从测试主机发送到 Fuchsia 设备的请求都需要通过 SL4F。例如,如果测试主机可以在设备上访问这些驱动程序的端口,那么测试可以通过单独的专用 HTTP 连接直接访问 Fuchsia 设备的 Flutter 驱动程序或 Chrome 驱动程序(参见图 1)。否则,测试设置可能需要进行端口转发。

端到端测试与 SL4F 之间的交互

下面的序列介绍了端到端测试如何在 Fuchsia 设备上触发“在屏幕上向右滑动”操作:

  1. 端到端测试在主机上运行。
  2. 该测试通过 SSH 在 Fuchsia 设备上启动 SL4F。
  3. SL4F 可在设备上的端口 80 上监听 HTTP 请求。
  4. 此测试会向 SL4F 发送 JSON-RPC 请求,要求在设备上执行“在屏幕上向右滑动”操作。
  5. SL4F 的“输入 Facade”将请求解析为 FIDL 命令。
  6. 设备会执行“在屏幕上向右滑动”操作。

启动后,SL4F 会继续在设备上运行并接受请求,直到测试终止 SL4F。

SL4F 中的 Facade

Fuchsia 扩展了 SL4F 的功能,引入了测试 Fuchsia 产品所需的其他编排和检查机制。SL4F 将这项新功能构建成称为 Facade 的分组。每个 Facade 会公开一个或多个 JSON-RPC 方法。

为了使端到端测试在 Fuchsia 设备上触发操作并验证状态,Facade 提供以下机制:

  • 编排:Facade 是 FIDL API 的封装容器,在 Fuchsia 设备上作为 HTTP 服务处理程序运行。
  • 检查:Facade 会跟踪 Fuchsia 设备上的异步事件。

SL4F 目前支持多种 Facade,例如:

  • Audio Facade - 插入和捕获音频。
  • Screen Facade - 截取屏幕。
  • Input Facade - 在触摸屏上注入输入手势。
  • 诊断 Facade - 读取 Inspect 从组件中发布的数据。
  • Wlan Facade - 操控无线局域网设备的状态。
  • Netstack Facade - 操控网络接口。
  • 文件 Facade - 在设备存储空间中写入和读取文件。
  • WebDriver Facade - 在 Chrome 网页运行程序中启用和停用开发者工具。