Thiết lập bảng điều khiển VTS

Bảng điều khiển VTS cung cấp phần phụ trợ người dùng và giao diện người dùng (UI) để xem kết quả kiểm tra từ hệ thống tích hợp liên tục VTS. Nó hỗ trợ phát triển dựa trên thử nghiệm với các công cụ như thông báo trạng thái thử nghiệm để giúp nhà phát triển xác định và ngăn chặn các khu vực hồi quy trong chu kỳ phát triển (bao gồm hỗ trợ giám sát và phân loại thử nghiệm).

Giao diện người dùng Bảng điều khiển VTS hỗ trợ các tính năng (chẳng hạn như phạm vi mã gốc) do cơ sở hạ tầng VTS cung cấp và cung cấp khả năng giám sát hiệu suất liên tục để cho phép phát triển các công cụ hiệu suất được tối ưu hóa và có đặc tính tốt.

Yêu cầu

Cần có các dịch vụ sau để sử dụng Bảng điều khiển VTS:

Việc xem phạm vi kiểm tra dựa trên API REST đến máy chủ mã nguồn (ví dụ: Gerrit), cho phép dịch vụ web tìm nạp mã nguồn gốc theo danh sách kiểm soát truy cập hiện có.

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

Bảng điều khiển VTS sử dụng kiến ​​trúc sau:

Hình 1 . Kiến trúc bảng điều khiển VTS.

Kết quả trạng thái kiểm tra liên tục được tải lên cơ sở dữ liệu Cloud Datastore thông qua giao diện REST. Trình chạy VTS tự động xử lý kết quả và tuần tự hóa chúng bằng định dạng Protobuf.

Các máy chủ web tạo thành điểm truy cập chính cho người dùng, cung cấp và xử lý dữ liệu từ cơ sở dữ liệu Kho dữ liệu. Các servlet bao gồm: một servlet chính để phân phối tất cả các bài kiểm tra, một servlet tùy chọn để quản lý các mục yêu thích của người dùng, một servlet kết quả để điền vào bảng kiểm tra, một servlet biểu đồ để chuẩn bị dữ liệu lược tả và một servlet phủ sóng để chuẩn bị dữ liệu bao phủ cho máy khách. .

Mỗi mô-đun kiểm tra có cây tổ tiên Kho dữ liệu riêng và kết quả kiểm tra được lập chỉ mục theo dấu thời gian Unix của thời gian bắt đầu kiểm tra. Dữ liệu phạm vi trong cơ sở dữ liệu được lưu trữ cùng với các kết quả kiểm tra dưới dạng vectơ đếm (tức là đối với mỗi dòng trong tệp nguồn gốc) và thông tin nhận dạng để tìm nạp mã nguồn từ máy chủ mã nguồn.

Dịch vụ thông báo chạy bằng cách sử dụng hàng đợi tác vụ, xác định các thay đổi trạng thái trường hợp kiểm thử và thông báo cho người đăng ký. Thông tin trạng thái được lưu trữ trong bảng trạng thái để theo dõi độ mới của dữ liệu và các lỗi hiện có. Điều này cho phép dịch vụ thông báo cung cấp thông tin phong phú về các lỗi và cách sửa lỗi của từng trường hợp thử nghiệm.

Cấu trúc mã

Các thành phần thiết yếu của Bảng điều khiển VTS bao gồm các servlet được triển khai bằng Java, các JSP giao diện người dùng, bảng định kiểu CSS và các tệp cấu hình. Danh sách sau đây nêu chi tiết vị trí và mô tả của các thành phần này (tất cả các đường dẫn liên quan đến test/vts/web/dashboard ):

  • pom.xml
    Tệp cài đặt nơi xác định các biến môi trường và phụ thuộc.
  • src/main/java/com/android/vts/api/
    Chứa các điểm cuối để tương tác với dữ liệu thông qua REST.
  • src/main/java/com/android/vts/entity/
    Chứa các mô hình Java của các thực thể Kho dữ liệu.
  • src/main/java/com/android/vts/proto/
    Chứa các tệp Java cho Protobuf, bao gồm VtsReportMessage.java , đây là một triển khai Java của loại Protobuf được sử dụng để mô tả kết quả kiểm tra VTS.
  • src/main/java/com/android/vts/servlet/
    Chứa các tệp Java cho servlet.
  • src/main/java/com/android/vts/util/
    Chứa các tệp Java cho các hàm và lớp tiện ích được sử dụng bởi các servlet.
  • src/test/java/com/android/vts/
    Chứa các bài kiểm tra giao diện người dùng cho các servlet và utils.
  • src/main/webapp/
    Chứa các file liên quan đến UI (JSP, CSS, XML):
    • js/ . Chứa các tệp Javascript được sử dụng bởi các trang web.
    • WEB-INF/ . Chứa các tập tin cấu hình và giao diện người dùng.
    • jsp/ . Chứa các tập tin JSP cho mỗi trang web.
  • appengine-web.xml
    Tệp cài đặt nơi các biến môi trường được tải vào các biến.
  • web.xml
    Tệp cài đặt nơi xác định ánh xạ servlet và các ràng buộc bảo mật.
  • cron.xml
    Tệp cài đặt xác định các tác vụ theo lịch trình (tức là dịch vụ thông báo).

Thiết lập Bảng điều khiển

Để thiết lập Bảng điều khiển VTS:

  1. Tạo Dự án Google Cloud App Engine và thiết lập máy chủ triển khai bằng cách cài đặt:
    • Java 8
    • SDK công cụ ứng dụng của Google
    • Maven
  2. Tạo ID ứng dụng khách OAuth 2.0 trong Trình quản lý API Google Cloud.
  3. Tạo một Tài khoản dịch vụ và tạo một keyfile.
  4. Thêm địa chỉ email vào Danh sách người gửi được ủy quyền của API App Engine Email.
  5. Thiết lập Tài khoản Google Analytics.
  6. Chỉ định các biến môi trường trong Bảng điều khiển pom.xml :
    • Đặt ID ứng dụng khách bằng ID OAuth 2.0 (từ bước 2).
    • Đặt ID máy khách dịch vụ với mã định danh có trong tệp khóa (từ bước 3).
    • Chỉ định địa chỉ email người gửi để nhận thông báo (từ bước 4).
    • Chỉ định miền email mà tất cả email sẽ được gửi tới.
    • Chỉ định địa chỉ cho máy chủ Gerrit REST.
    • Chỉ định phạm vi OAuth 2.0 để sử dụng cho máy chủ Gerrit REST.
    • Chỉ định ID Google Analytics (từ bước 5).
    • Xây dựng và triển khai dự án.
  7. Trong một thiết bị đầu cuối, chạy mvn clean appengine:update .

Cân nhắc về Bảo mật

Thông tin bảo hiểm mạnh mẽ yêu cầu quyền truy cập vào mã nguồn ban đầu. Tuy nhiên, một số mã có thể nhạy cảm và một cổng bổ sung vào mã đó có thể cho phép khai thác danh sách kiểm soát truy cập hiện có.

Để tránh mối đe dọa này, thay vì cung cấp mã nguồn cùng với thông tin phạm vi, Bảng thông tin trực tiếp xử lý vectơ phạm vi (tức là vectơ thực thi tính ánh xạ tới các dòng trong tệp nguồn). Cùng với vectơ phạm vi, Trang tổng quan sẽ nhận được tên và đường dẫn dự án Git để khách hàng có thể tìm nạp mã từ API mã nguồn bên ngoài. Trình duyệt máy khách nhận được thông tin này và sử dụng chia sẻ tài nguyên nhiều nguồn gốc (CORS) trong Javascript để truy vấn máy chủ mã nguồn để tìm mã nguồn gốc; mã kết quả được kết hợp với vectơ bao phủ để tạo ra màn hình.

Cách tiếp cận trực tiếp này không mở rộng bề mặt tấn công vì Trang tổng quan sử dụng cookie của người dùng để xác thực bằng dịch vụ bên ngoài (nghĩa là người dùng không thể truy cập trực tiếp mã nguồn thì không thể khai thác Trang tổng quan để xem thông tin nhạy cảm).