전역 구성으로 프로토콜 로드

이 섹션을 이해하려면 먼저 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

이 경로는 경로가 저장되는 GCS(Google Cloud Storage) 버킷 내의 파일을 가리킵니다. Tradefed는 원격 경로를 보자마자 로컬에서 파일을 다운로드하여 @Option에 할당하려고 시도합니다. 따라서 mConfigFile 변수가 이제 테스트에서 사용할 수 있는 파일의 로컬 버전을 가리키게 됩니다.

어떠한 이유로든 원격 파일을 다운로드할 수 없는 경우 Tradefed에서 테스트의 실행을 막는 ConfigurationException이 발생합니다. 일부 테스트 아티팩트가 함께 누락될 수 있는 만큼 Google은 이러한 파일의 누락을 치명적인 결함으로 간주합니다.

쿼리 매개변수 사용

?를 사용하여 쿼리 매개변수를 URL에 추가할 수 있습니다. 예를 들면 다음과 같습니다. gs://bucket/path?unzip=true. 키/값 unzip=trueIRemoteFileResolver 인터페이스 구현에서 사용할 수 있습니다.

다음 두 가지 기본 제공 동작을 사용할 수 있습니다.

  • unzip: true로 설정하고 다운로드한 파일이 zip이면 임시 위치에 자동으로 압축 해제됩니다. 예: ?unzip=true
  • optional: 기본값은 false입니다. true로 설정하고 확인이 실패하면 예외가 발생하지 않으며 파일이 대체되지만 않습니다. 예: ?optional=true

호출에서 시도한 모든 동적 다운로드에 키/값을 전달하는 --dynamic-download-args key=value를 통해 전역 쿼리 인수를 전달할 수도 있습니다.

지원되는 프로토콜

공식적으로 지원되는 프로토콜과 이에 상응하는 형식은 다음과 같습니다.

  • Google Cloud Storage, 프로토콜: gs, 형식: gs://<bucket name>/path
  • 로컬 파일, 프로토콜: file, 형식: file:/local/path
  • http 링크, 프로토콜: http, 형식: http://url
  • https 링크, 프로토콜: https, 형식: https://url

제한사항

@Option의 동적 해결책은 현재 다운로드할 제한된 수의 프로토콜과 위치만 지원합니다. @Option의 해결책은 현재 기본 XML Tradefed 구성에 의해서만 사용 설정됩니다.

도구 모음으로 실행 중인 경우 현재 모듈(AndroidTest.xml)은 기본적으로 파일을 확인하지 않습니다. 이는 모듈에 의해 알 수 없는 종속 항목이 생성되지 않도록 하기 위함입니다. 도구 모음 수준에서 --enable-module-dynamic-download를 사용하여 이스케이프할 수 있지만 호환성 테스트 모음(CTS)공급업체 테스트 모음(VTS)과 같은 주요 도구 모음에서 사용 설정하지 않습니다.

새 프로토콜 구현

지원되는 프로토콜은 IRemoteFileResolver 인터페이스의 Tradefed에 구현되어 있으며 getSupportedProtocol을 통한 파일 경로에서 일치할 프로토콜의 짧은 태그를 정의합니다. 예를 들어 gs는 Google Cloud Storage 프로토콜에 사용됩니다. 구현할 권장 인터페이스는 #resolveRemoteFiles(RemoteFileResolverArgs)이며 장기적으로 유지되는 인터페이스입니다.

구현된 프로토콜은 하네스 META-INF 서비스 파일에 추가하여 공식적으로 지원을 사용 설정할 수 있습니다.