여러 장치로 테스트 실행

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 페이지는 테스트 중에 여러 장치에서 Trade Federation Test Harness를 사용하는 데 도움이 됩니다. 먼저 종단 간 예제에 설명된 대로 일반적인 사용법에 익숙해져야 합니다.

여러 장치의 차이점은 무엇입니까?

Trade Federation에서 다중 장치 테스트를 구성하고 실행할 때 특히 다음과 같은 몇 가지 사항이 다릅니다.

기존의 모든 단일 장치 구성은 다중 장치 모드에 유효합니다.

TODO: 두 번째 문장에서 다중 장치 모드와 관련된 단일 장치 사용 사례를 추가하여 바로 위의 문장을 명확하게 합니다.

다중 장치 구성

이 문서에서는 사용자가 일반적인 TF 테스트 구성에 이미 익숙하다고 가정합니다. 다음은 두 개의 장치가 있는 일반적인 테스트 구성의 모습입니다.

<configuration description="A simple multi-devices example in Tradefed">

    <device name="device1">
        <target_preparer class="com.android.tradefed.targetprep.DeviceSetup" />
    </device>

    <device name="device2">
        <target_preparer class="com.android.tradefed.targetprep.DeviceSetup" />
    </device>

    <option name="log-level" value="verbose" />
    <test class="com.android.tradefed.HelloWorldMultiDevices" />

    <logger class="com.android.tradefed.log.FileLogger" />
    <result_reporter class="com.android.tradefed.result.ConsoleResultReporter" />

</configuration>

구조에 대해 몇 가지 사항을 언급해야 합니다.

  • 필요한 각 장치에 대해 <device> 가 필요합니다.
  • <build_provider> , <target_preparer> , <device_recovery> , <device_requirements><device_options> 필요한 경우 <device> 태그 내에 포함되어야 합니다. 그렇지 않으면 예외가 발생합니다.
  • <device>name 속성은 필수이며 구성에 있는 모든 장치에서 고유해야 합니다. 연결된 특정 장치를 참조하는 데 사용됩니다. 이렇게 하면 테스트에서 특정 장치를 대상으로 할 수 있습니다.
  • <option> 은 구성의 루트에 있을 때 전역 범위를 가지거나 <device> 태그 내부에 지정된 경우 장치 범위로 제한될 수 있습니다.

단일 장치 구성에 적용되는 다른 모든 규칙은 여기에서도 여전히 적용됩니다. 자세한 내용은 아래 Hello World 예제 를 참조하세요.

명령줄 업데이트

TF 명령줄에서 옵션을 지정할 때 {<device name>} 을 사용하여 장치 범위를 지정할 수도 있습니다. 여기서 <device name> 은 XML 구성에 지정된 이름입니다.

위의 예에서는 다음 옵션이 허용되었습니다.

  • --com.android.tradefed.targetprep.DeviceSetup:disable
  • --device-setup:disable

다음과 같이 장치 이름을 사용하여 장치 build_provider 개체 중 하나만 대상으로 지정할 수 있습니다.

--{device2}device-setup:disable

이 예에서 device2 는 장치 설정을 건너뛰지만 device1 은 건너뜁니다.

TF는 장치를 어떻게 선택합니까?

Trade Federation은 device_requirements (일반적으로 장치 풍미, 제품 등)와 일치하는 장치를 구성에서 장치 모양 순서대로 찾습니다. 장치가 할당될 때마다 TF는 다음 장치를 할당하려고 합니다. 모든 장치를 할당할 수 없는 경우 모든 장치가 해제되고 모든 장치가 일치하면 명령이 다시 시도됩니다.

TF는 장치를 어떻게 준비합니까?

다중 장치의 준비 단계는 대부분 단일 장치와 동일합니다. 각 장치는 <device> 내부에 나타나는 순서대로 <target_preparer> 를 호출하여 준비됩니다.

장치 페어링과 같이 여러 장치가 필요한 준비 단계를 활성화하는 구성의 루트에 지정된 <multi_target_preparer> 를 사용할 수도 있습니다. target_preparer 단계 후에 실행됩니다.

대안은 target_preparer 단계 전에 실행되는 <pre_multi_target_preparer> 입니다.

  • <pre_multi_target_preparer> 는 개별 장치 설정 전에 수행해야 하는 설정에 사용해야 합니다 .
  • <multi_target_preparer> 는 개별 장치 설정 후에 수행해야 하는 설정에 사용해야 합니다.

예: 플래시 장치 1(target_preparer) 플래시 장치 2(target_preparer) 블루투스 두 장치 모두 연결(multi_target_preparer)

다중 장치 테스트 작성

일반 단일 장치 테스트를 작성할 때 IDeviceTest 인터페이스를 구현합니다.

테스트에서 테스트 중인 장치를 수신하려면 IMultiDeviceTest 또는 IInvocationContextReceiver 를 구현할 수 있습니다.

IMultiDeviceTest는 IBuildInfo 에 대한 장치의 직접 맵을 제공하는 반면 IInvocationContextReceiver는 나중에 완전한 컨텍스트(장치, IBuildInfo 및 메타데이터)를 제공합니다.

그러면 TF가 테스트 작성을 위해 배치한 일반적인 ITestDevice API를 사용할 수 있습니다.

device1.sync(device2) 와 같이 한 장치에서 다른 장치로 작업을 수행하는 API는 아직 없습니다. 지원해야 할 강력한 사용 사례가 있다고 생각되면 추론을 android-platform 목록으로 보내십시오.

다중 장치 hello world 예

Hello World와 같은 예제 구성을 추가했습니다. multi-devices.xml 장치 및 해당 빌드 목록을 수신하는 방법을 보여주는 multi_target_preparer 구현 HelloWorldMultiTargetPreparer 의 예제도 있습니다.

다음이 포함된 전체 예입니다.

  • 두 개의 장치 할당
  • multi_target_preparer 를 통해 두 장치에 액세스
  • 두 장치를 사용하는 테스트 실행

Tradefed를 구축했으면 TF 셸에서 다음 명령을 사용할 수 있습니다.

run example/multi-devices

다음을 포함하는 일부 출력이 표시되어야 합니다.

08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device '00b4e73b4cbcd162' with build id '3146108'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device 'LP5A390056' with build id '3146108'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device '00b4e73b4cbcd162' from context with build 'com.android.tradefed.build.DeviceBuildInfo@c99cbc1'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device 'LP5A390056' from context with build 'com.android.tradefed.build.DeviceBuildInfo@b41f20c5'

위의 작업을 실행하려면 두 개의 장치가 연결되어 있어야 합니다. 이것은 adb devices 를 통해 확인할 수 있습니다.

호출이 진행 중일 때 list ilist d 를 사용하여 단일 장치처럼 모니터링할 수 있습니다.

tf >list i
Command Id  Exec Time  Device                          State
1           0m:35      [00b4e73b4cbcd162, LP5A390056]  fetching build
tf >list d
Serial            State      Product   Variant   Build   Battery
00b4e73b4cbcd162  Allocated  bullhead  bullhead  NRD90O  100
LP5A390056        Allocated  shamu     shamu     NRD90I  100

각 호출에 관련된 장치와 사용 가능한 모든 장치 및 해당 상태를 볼 수 있어야 합니다.

이 예에서는 구성 device1device2 에서 두 개의 장치를 호출했습니다. 설정하려는 장치의 유형에 따라 가능하면 더 설명적인 이름을 지정해야 합니다.