Tải giao thức có cấu hình chung

Để hiểu phần này, trước tiên hãy nghiên cứu thẻ Tradefeed @Lựa chọn.

Các lựa chọn điển hình trong Tradefeed cho phép các lớp kiểm thử nhận được thêm thông tin từ cấu hình XML hoặc dòng lệnh. Tính năng này cho phép bạn để thực hiện thêm một bước và giải quyết một số thông tin bổ sung này nếu nếu cần.

Ví dụ về lựa chọn tệp

Tệp ví dụ @option:

@Option(name = 'config-file')
private File mConfigFile;

Bạn có thể thiết lập thông tin trên thông qua cấu hình XML:

<option name="config-file" value="/tmp/file" />

hoặc thông qua lệnh:

--config-file /tmp/file

Mô tả

Tính năng này cho phép bạn phân giải @Options kiểu tệp được nhập từ xa thành tệp cục bộ được cung cấp liền mạch từ góc độ người dùng.

Để làm được điều này, bạn cần chỉ định tệp bằng một đường dẫn kiểu từ xa. Ví dụ:

--config-file gs://bucket/tmp/file

Đường dẫn này trỏ đến một tệp trong bộ chứa Google Cloud Storage (GCS) nơi tệp đó được lưu trữ. Bị đánh đổi khi thấy đường dẫn từ xa đó, sẽ tìm cách tải tệp xuống cục bộ và gán mã đó cho @Option. Điều này dẫn đến việc biến mConfigFile hiện trỏ đến phiên bản cục bộ của tệp mà kiểm thử có thể sử dụng.

Nếu không thể tải tệp từ xa xuống vì bất kỳ lý do gì, Tradefeed sẽ gửi ra một ConfigurationException sẽ ngăn kiểm thử chạy. Chúng tôi xem xét thiếu các tệp đó là một lỗi nghiêm trọng do một số cấu phần phần mềm kiểm thử cũng sẽ bị bị thiếu.

Sử dụng tham số truy vấn

Bạn có thể thêm tham số truy vấn vào URL bằng ?. Ví dụ: gs://bucket/path?unzip=true. Khoá/giá trị unzip=true sẽ có trong IRemoteFileResolver giao diện trong quá trình triển khai.

Có 2 hành vi tích hợp sẵn:

  • giải nén: Nếu bạn đặt thành true và tệp đã tải xuống là tệp zip, đã tự động được giải nén vào một vị trí tạm thời. Ví dụ: ?unzip=true
  • không bắt buộc: Mặc định là false. Nếu bạn đặt thành true nhưng độ phân giải không thành công, thì sẽ không gửi một trường hợp ngoại lệ và sẽ không thay thế tệp. Ví dụ: ?optional=true

Bạn cũng có thể truyền các đối số truy vấn chung thông qua --dynamic-download-args key=value để chuyển khoá/giá trị tới tất cả các lần tải xuống động trong lời gọi.

Giao thức được hỗ trợ

Các giao thức được hỗ trợ chính thức và định dạng tương ứng là:

  • Google Cloud Storage, giao thức: gs, định dạng: gs://<bucket name>/path
  • Tệp cục bộ, giao thức: file, định dạng: file:/local/path
  • Đường liên kết http, giao thức: http, định dạng: http://url
  • Đường liên kết https, giao thức: https, định dạng: https://url

Các điểm hạn chế

Độ phân giải động của @Option hiện chỉ hỗ trợ một số giao thức và vị trí để tải xuống. Độ phân giải của @Option hiện là chỉ được bật cho cấu hình XML Tradefeed chính.

Nếu chạy dưới dạng một bộ, các mô-đun hiện tại (AndroidTest.xml) sẽ không phân giải được tệp theo mặc định. Điều này nhằm ngăn các mô-đun tạo ra một số phần phụ thuộc không xác định. Chiến dịch này có thể thoát bằng cách sử dụng --enable-module-dynamic-download ở cấp bộ, nhưng các bộ công cụ lớn như Bộ kiểm tra tính tương thích (CTS)Bộ kiểm thử nhà cung cấp (VTS) sẽ không bật chế độ này.

Triển khai giao thức mới

Các giao thức được hỗ trợ đã được triển khai trong Trade của IRemoteFileResolver giao diện ,xác định thẻ ngắn của giao thức sẽ được so khớp trong đường dẫn tệp thông qua getSupportedProtocol. Ví dụ: gs được dùng cho thuộc tính Giao thức Google Cloud Storage. Giao diện đề xuất để triển khai là #resolveRemoteFiles(RemoteFileResolverArgs) là giá trị dài hạn giao diện được duy trì.

Các giao thức đã triển khai có thể được thêm vào khai thác META-INF các dịch vụ để chính thức bật dịch vụ hỗ trợ.