Google 致力于为黑人社区推动种族平等。查看具体举措

通过全局配置加载协议

为了理解本部分内容,我们先研究一下 Tradefed @Option

Tradefed 中的典型选项允许测试类从 XML 配置或命令行接收附加信息。此功能允许您再往前迈一步,那就是在必要时解析其中某些附加信息。

文件选项示例

文件 @option 示例:

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

上例可以通过 XML 配置来设置:

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

也可以通过以下命令来设置:

--config-file /tmp/file

说明

该功能允许您从用户的角度将远程的文件类型 @Options 解析为可无缝使用的本地文件。

为实现此目的,需要使用远程样式路径来指定文件。例如:

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

此路径指向用于存储文件的 Google Cloud Storage (GCS) 存储分区中的文件。Tradefed 看到该远程路径后,会尝试在本地下载文件并将其分配给 @Option。这会导致 mConfigFile 变量现在指向文件的本地版本,该版本可供测试使用。

如果出于任何原因无法下载远程文件,Tradefed 将抛出 ConfigurationException,从而阻止测试运行。我们认为缺失这些文件是严重的故障,因为某些测试工件也会缺失。

支持的协议

正式支持的下载协议及其格式如下:

Google Cloud Storage,协议:gs,格式:gs://<bucket name>/path

限制

@Option 的动态解析目前仅支持有限数量的协议和下载位置。目前仅针对主要 XML Tradefed 配置启用了 @Option 的解析。如果作为套件运行,当前模块 (AndroidTest.xml) 将无法解析文件。这是为了防止模块创建一些未知的依赖项。

实现新协议

支持的协议在 Tradefed 中有 IRemoteFileResolver 接口的实现,它定义了将在文件路径中匹配的协议的短标记。例如,gs 用于 Google Cloud Storage 协议。

可以将实现的协议添加到 DynamicRemoteFileResolver 映射以正式启用支持。