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. 這項測試會將 JSON-RPC 要求傳送至 SL4F,要求裝置執行「在螢幕上向右滑動」動作。
  5. SL4F 的輸入介面會將要求剖析為 FIDL 指令。
  6. 裝置會執行「在螢幕上向右滑動」動作。

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

SL4F 中的外牆

Fuchsia 擴充了 SL4F 的功能,導入測試 Fuchsia 產品所需的額外協調和檢查機制。SL4F 會將這項新功能劃分成稱為「外觀」的群組。每個 Facade 都會公開一或多個 JSON-RPC 方法。

如要觸發動作並驗證 Fuchsia 裝置上的狀態,端對端測試需要使用介面集,介面集提供下列機制:

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

SL4F 目前支援多種外觀,例如:

  • 音訊外觀 - 插入及擷取音訊。
  • 螢幕外觀 - 擷取螢幕畫面。
  • 輸入外觀 - 在觸控螢幕上注入輸入手勢。
  • 診斷外觀 - 從元件讀取 Inspect 發布的資料。
  • Wlan facade - Manipulate the status of a wireless LAN device.
  • 網路堆疊門面元件 - 操作網路介面。
  • 檔案外觀 - 在裝置的儲存空間中寫入及讀取檔案。
  • WebDriver facade - Enable and disable devtools in a Chrome webrunner.