Fuchsia 腳本層 (SL4F)

Fuchsia 的指令碼層 (SL4F) 是一項 HTTP 伺服器,可讓端對端測試在 Fuchsia 裝置上存取驅動程式服務 (例如音訊、螢幕、輸入、診斷和 WebDriver)。

在主體機器上執行端對端測試,這點與其他在 Fuchsia 裝置上執行,並於裝置上執行的其他 Fuchsia 套件不同。如要透過遠端測試主機觸發 Fuuchsia 裝置上的動作 (例如「在螢幕上向右滑動」),端對端測試會將 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. 測試會將 JSON-RPC 要求傳送至 SL4F,要求裝置上的「向右滑動」動作。
  5. SL4F 的「輸入門面」會將要求剖析為 FIDL 指令。
  6. 裝置會執行「在螢幕上向右滑動」動作。

啟動之後,SL4F 會繼續在裝置上執行,並接受要求,直到測試終止 SL4F。

SL4F 中的立面

Fuchsia 擴充 SL4F 的功能,引進測試 Fuchsia 產品所需的其他自動化調度管理和檢查機制。SL4F 會將這項新功能分割為「立面門」的分組。每個門面都會公開一或多個 JSON-RPC 方法。

要讓端對端測試在 Fuchsia 裝置上觸發動作及驗證狀態,門面提供以下機制:

  • 自動化調度管理:門面是 FIDL API 的包裝函式,在 Fuchsia 裝置上以 HTTP 服務處理常式的形式執行。
  • 檢查:門面追蹤 Fuchsia 裝置上的非同步事件。

SL4F 目前支援多種門面,例如:

  • 音訊淡出 - 插入及擷取音訊。
  • 螢幕表面 - 擷取螢幕畫面。
  • 輸入立面 - 在觸控螢幕上插入輸入手勢。
  • 診斷途徑 - 讀取「檢查元件」發布的資料。
  • Wlan 立面 - 操控無線 LAN 裝置的狀態。
  • 網路堆疊 facade - 操控網路介面。
  • 檔案立面 - 在裝置儲存空間中寫入及讀取檔案。
  • WebDriver 立面元件 - 在 Chrome WebRunner 中啟用及停用開發人員工具。