Cơ sở hạ tầng kiểm tra tự động

Android 9 bao gồm cơ sở hạ tầng Bộ thử nghiệm nhà cung cấp (VTS) để tự động thử nghiệm VTS, CTS hoặc các thử nghiệm khác trên các thiết bị đối tác chạy hình ảnh hệ thống chung AOSP (GSI). Trước đây, việc chạy thử nghiệm này là một thao tác mang tính thủ công cao; Cơ sở hạ tầng kiểm tra VTS mới được thiết kế để hỗ trợ kiểm tra tự động nhiều lần trong ngày trên nhiều thiết bị.

Ngành kiến ​​​​trúc

Cơ sở hạ tầng thử nghiệm tự động VTS sử dụng kiến ​​trúc sau:

Automated test architecture

Hình 1. Kiến trúc cơ sở hạ tầng thử nghiệm tự động VTS

Khi thử nghiệm được kích hoạt, cơ sở hạ tầng thử nghiệm tự động VTS sẽ thực hiện các tác vụ sau:

  1. Tìm nạp các tạo phẩm xây dựng và tài nguyên thử nghiệm từ các vị trí khác nhau:
    • Bản dựng Android của đối tác (PAB) . Dành cho khung GSI, VTS và một số bản dựng khác.
    • Hệ thống tệp cục bộ, Google Cloud Storage hoặc hệ thống xây dựng dành riêng cho nhà cung cấp khác . Dành cho những đối tác không lưu trữ bản dựng trên đám mây của Google.
  2. Đèn flash tạo các tạo phẩm giả (từ thiết bị) và GSI (từ AOSP) trên (các) thiết bị được kết nối.
  3. Chạy thử nghiệm VTS bằng TradeFed cục bộ hoặc TradeFed trên đám mây.
  4. Báo cáo kết quả kiểm tra lên bảng điều khiển VTS

Quá trình này được điều phối bởi bộ điều khiển máy chủ VTS (HC), một máy trong phòng thí nghiệm có nhiệm vụ điều khiển hoạt động của tất cả các thiết bị được kết nối đang được thử nghiệm. HC chịu trách nhiệm tìm nạp các bản dựng mới nhất, flash chúng vào thiết bị và gọi các bài kiểm tra (cục bộ hoặc thông qua người chỉ huy). Nó cũng giao tiếp với bộ lập lịch trên đám mây và điều hướng lưu lượng giữa bộ lập lịch và phiên bản TradeFed (hoặc một số khai thác khác) chạy trên HC. Để biết chi tiết về bộ điều khiển máy chủ, hãy xem Kiến trúc bộ điều khiển máy chủ .

Nhà cung cấp tài nguyên

Kiểm tra tự động yêu cầu các tài nguyên như bản dựng hệ thống, tệp kiểm tra và tạo phẩm VTS. Mặc dù có thể xây dựng những thứ này từ nguồn, nhưng việc xây dựng chúng từ ngọn cây thường xuyên sau đó đăng các tạo phẩm để tải xuống sẽ dễ dàng hơn.

Đối tác có thể truy cập tài nguyên tự động hóa bằng cách sử dụng các vị trí sau:

  • Đối tác xây dựng Android . Quyền truy cập có lập trình được cấp trên cơ sở mỗi tài khoản.
  • Hệ thống tập tin cục bộ (hoặc tương tự). Dành cho những đối tác không sử dụng Partner Android Build.

Để sử dụng trong việc flash thiết bị sau này, tài nguyên bao gồm các nhà cung cấp bản dựng cho cả hai tùy chọn, mở rộng từ một build_provider.py duy nhất lưu trữ các bản dựng trong các thư mục tạm thời cục bộ.

Bản dựng Android của đối tác

Trong Android 8.1 và các bản phát hành thấp hơn, các đối tác Android phải truy cập trang web Partner Android Build ( https://partner.android.com/build ), điều hướng đến tài khoản của họ và tìm nạp hình ảnh hệ thống mới nhất thông qua giao diện người dùng. Để giúp các đối tác tránh quá trình chậm chạp và tốn nhiều công sức này, Android 9 bao gồm hỗ trợ tự động tải xuống các tài nguyên này từ PAB khi thông tin xác thực phù hợp được cung cấp.

Thiết lập quyền truy cập

Quyền truy cập có lập trình sử dụng OAuth2 trên API Google để truy cập các RPC cần thiết. Bằng cách sử dụng phương pháp tiêu chuẩn để tạo thông tin xác thực OAuth2, đối tác phải thiết lập cặp id khách hàng/bí mật với Google. Khi PartnerAndroidBuildClient được trỏ đến bí mật đó lần đầu tiên, nó sẽ mở một cửa sổ trình duyệt để người dùng đăng nhập vào tài khoản Google của họ, tạo ra thông tin xác thực OAuth2 cần thiết để tiếp tục. Thông tin xác thực (mã thông báo truy cập và mã thông báo làm mới) được lưu trữ cục bộ, nghĩa là các đối tác chỉ cần đăng nhập một lần.

ĐĂNG yêu cầu cho URL

Việc nhấp vào liên kết tài nguyên trong PAB sẽ gửi yêu cầu POST bao gồm dữ liệu cần thiết cho tài nguyên đó, bao gồm:

  • xây dựng id, xây dựng mục tiêu
  • tên tài nguyên
  • chi nhánh
  • công bố tên ứng viên và liệu ứng viên đó có phải là bản dựng nội bộ hay không

Yêu cầu POST được nhận bằng phương thức downloadBuildArtifact của RPC buildsvc , phương thức này trả về một URL có thể được sử dụng để truy cập tài nguyên.

  • Đối với tài nguyên APK Clockwork Companion, URL là URL có thể đọc được lưu trữ trên PAB (được bảo vệ xác thực và có thể truy cập bằng thông tin xác thực OAuth2 thích hợp).
  • Đối với các tài nguyên khác, URL là URL dài, không được bảo vệ từ API Android Build nội bộ (hết hạn sau 5 phút).

Lấy URL

Để tránh giả mạo yêu cầu trên nhiều trang web, RPC buildsvc yêu cầu mã thông báo XSRF phải được ĐĂNG cùng với các tham số khác. Mặc dù mã thông báo này làm cho quy trình trở nên an toàn hơn nhưng nó cũng khiến việc truy cập theo chương trình trở nên khó khăn hơn nhiều vì mã thông báo (chỉ có sẵn trong JavaScript của trang PAB) hiện cũng được yêu cầu để truy cập.

Để tránh sự cố này, Android 9 thiết kế lại sơ đồ đặt tên URL cho tất cả các tệp (không chỉ APK) để sử dụng tên URL có thể dự đoán được nhằm truy cập vào danh sách cấu phần phần mềm và URL cấu phần phần mềm. PAB hiện sử dụng định dạng URL thuận tiện cho phép các đối tác tải xuống tài nguyên; Các tập lệnh HC có thể tải xuống các APK đó một cách dễ dàng vì định dạng URL đã được biết và HC có thể bỏ qua các vấn đề về XSRF/cookie vì nó không cần RPC buildsvc .

Hệ thống tập tin cục bộ

Đưa ra một thư mục có danh sách (hoặc tệp zip) các tạo phẩm, nhà cung cấp bản dựng sẽ đặt các hình ảnh có liên quan dựa trên nội dung trong thư mục. Bạn có thể sử dụng công cụ gsutil để sao chép tệp từ Google Cloud Storage sang thư mục cục bộ.

Bản dựng flash

Sau khi hình ảnh thiết bị gần đây nhất được tải xuống máy chủ, những hình ảnh đó phải được flash vào thiết bị. Việc này được thực hiện bằng cách sử dụng các lệnh adbfastboot tiêu chuẩn cũng như các quy trình con Python, dựa trên đường dẫn tệp tạm thời được nhà cung cấp bản dựng lưu trữ.

Các hành động được hỗ trợ:

  • Chỉ nhấp nháy GSI
  • Nhấp nháy các hình ảnh riêng lẻ từ hệ thống chính (ví dụ: fastboot flash boot boot.img )
  • Nhấp nháy tất cả hình ảnh từ hệ thống chính. Ví dụ:
    • fastboot flashall (sử dụng tiện ích flashall tích hợp)
    • fastboot flash (mỗi lần một cái)

Chạy thử nghiệm

Trong Android 9, cơ sở hạ tầng thử nghiệm tự động VTS chỉ hỗ trợ khai thác thử nghiệm TradeFed nhưng có thể được mở rộng để hỗ trợ các khai thác khác trong tương lai.

Sau khi thiết bị đã được chuẩn bị, bạn có thể thực hiện kiểm tra bằng một trong các tùy chọn sau:

  • Khi sử dụng TradeFed cục bộ, hãy sử dụng lệnh test trong bộ điều khiển máy chủ, lệnh này lấy tên của kế hoạch kiểm tra VTS (ví dụ: vts-selftest ) và chạy kiểm tra.
  • Khi sử dụng Cụm TradeFed (được kết nối tùy chọn với MTT), hãy sử dụng lệnh lease trong bảng điều khiển bộ điều khiển máy chủ để tìm kiếm các lần chạy thử chưa hoàn thành.

Nếu sử dụng TradeFedCluster, TradeFed chạy cục bộ với tư cách là người quản lý từ xa . Nếu không, các bài kiểm tra sẽ được gọi bằng cách sử dụng các quy trình con của Python.

Báo cáo kết quả

Kết quả kiểm tra được VtsMultiDeviceTest tự động báo cáo cho một số dự án bảng điều khiển VTS.