Eclipse 설정

Eclipse를 사용하여 Tradefed를 설정하려면 다음 단계를 따르세요.

별도의 작업공간을 형성하여 Trade Federation을 개발하고, 이미 Android 기기 개발에 사용된 작업공간은 재사용하지 않습니다.

필요한 경우 eclipse.org/downloads에서 자바 개발자용 Eclipse IDE를 다운로드할 수 있습니다.

프로젝트 생성

  1. 명령줄에서 make once를 실행합니다. 그러면 아래 프로젝트가 종속된 외부 라이브러리가 빌드됩니다.
  2. Window > Preferences > Java > Build Path> Classpath Variables에 TRADEFED_ROOT 클래스 경로 변수를 설정하고 tradefed 소스 루트를 가리킵니다.
  3. Window > Preferences > General > Workspace > Linked Resources에 TRADEFED_ROOT 경로 변수를 설정하고 tradefed 소스 루트를 가리킵니다.
  4. File > Import...-> General > Existing Projects into workspace" 마법사를 사용하여 다음 경로에 오픈소스 자바 프로젝트를 불러옵니다.

    prebuilts/misc/common/ddmlib\*
        tools/loganalysis
        tools/loganalysis/tests
        tools/tradefederation/core
        tools/tradefederation/core/tests
        tools/tradefederation/contrib
        tools/tradefederation/core/remote
        platform_testing/libraries/longevity
        platform_testing/libraries/annotations
        platform_testing/libraries/composer
        
  5. ddmlib 소스 코드를 확인하고 싶은 경우에는 /platform/tools/base/tools_r22/ddmlib/src/main/java/com/android/ddmlib/IDevice.java와 같이 번들화되지 않은 도구 브랜치에서 소스 코드를 연결할 수도 있습니다.

  6. CTS 하네스 프로젝트도 로드하고 싶은 경우에는 다음을 가져옵니다.

    test/suite_harness/common/util
        test/suite_harness/common/host-side/util
        test/suite_harness/common/host-side/tradefed
        

자동 형식

참고: 필수 파일은 전체 플랫폼 소스 트리의 development/ide/eclipse 내에 상주합니다. 따라서 master 등의 플랫폼 브랜치를 확인하여 이러한 파일을 가져와야 합니다(/development/master/ide/eclipse/).

Eclipse에서 환경설정 파일을 사용하여 형식 지정 도구를 Android 형식 가이드로 자동 설정합니다. Studio에서 설정하는 방법:

  1. 창 > 환경설정 > 자바 > 코드 형식으로 이동합니다.
  2. 형식 지정 도구에서 android-formatting.xml 파일을 가져옵니다.
  3. 구성 > 가져오기에서 android.importorder 파일을 가져옵니다.

후행 공백 삭제

Eclipse가 모든 후행 공백을 삭제하도록 강제하는 방법은 다음과 같습니다.

  1. 창 > 환경설정 -> 자바 -> 편집기 -> 작업 저장으로 이동합니다.
  2. 그런 다음 추가 작업 -> 구성 -> 코드 > 구성 탭 -> 형식 지정 도구로 이동합니다.
  3. 후행 공백 삭제를 선택합니다.
  4. 적용 및 닫기를 클릭합니다.

코드 형식 확인

변경 목록을 제출할 때는 자동 사전 업로드 후크가 실행되어 코드 형식 google-java-format을 확인합니다.

이는 코드 형식을 공통 표준에 맞게 지정하는 데 도움이 됩니다.

Eclipse 디버그

Eclipse의 디버거를 통해 TF 코드를 실행하고 싶은 경우에는 먼저 해당 코드의 유닛 테스트를 생성하는 것이 좋습니다. 이는 기능을 가장 간단하고 빠르게 실행할 수 있는 방법이기 때문입니다.

TF 유닛 테스트를 디버깅하려면 테스트를 마우스 오른쪽 버튼으로 클릭하고 다음으로 디버그: > JUnit 테스트를 선택하기만 하면 됩니다.

TF 기능 테스트를 디버깅하려면 이전 섹션의 기능 테스트 실행 관련 안내를 따르되 실행 > 디버그 구성 메뉴를 사용하세요.

TF 프로그램 자체를 디버깅하려면 구성을 실행할 때 이전 섹션의 기능 테스트 실행 관련 안내를 따르되 4단계에서 실행하려는 구성의 명령줄 인수를 제공하세요. 따라서 '계측' 구성을 디버깅하려면 실행 > 디버그 구성 메뉴로 이동한 다음 Eclipse 디버그 구성의 인수 탭을 -- package <package to run> instrument로 설정합니다.

Eclipse를 사용한 원격 디버깅

tradefed.sh 명령줄에서 시작된 Tradefed 세션을 원격으로 디버깅하려면 다음 단계를 따르세요.

  1. 디버그 플래그 TF_DEBUG=1 tradefed.sh로 tradefed.sh를 시작합니다.
  2. JVM에서 Listening for transport dt_socket at address: 10088 메시지가 표시될 때까지 기다립니다. 이는 JVM에서 디버거가 포트 10088에 연결되기를 기다리고 있음을 의미합니다.
  3. 실행 > 디버그 구성...을 선택하여 기본 메뉴에서 Eclipse의 원격 디버깅을 연결합니다.
  4. 팝업 대화상자의 왼쪽 메뉴에서 원격 자바 애플리케이션을 선택합니다.
  5. 작업 모음에서 새 실행 구성 아이콘을 클릭합니다.
  6. 구성에 원하는 이름을 지정하고 tradefederation을 프로젝트로 선택합니다.
  7. 앞에서 제공된 주소를 사용하여 포트를 채웁니다.
  8. 소스 탭으로 전환하고 프로젝트 tradefederationgoogle-tradefed를 소스 조회 경로에 추가합니다.
  9. 디버그를 클릭하여 디버깅 세션을 시작합니다.

디버거가 수신 중인 JVM 프로세스에 연결되고 tradefed.sh를 실행 중인 터미널에 tf> 프롬프트가 표시됩니다.

디버그 모드에서 코드를 단계별로 실행하려면 Eclipse에서 중단 지점을 설정하고 터미널에서 Tradefed 명령어(run <test>)를 호출합니다. TF 시작 도중에 디버깅하려면 먼저 중단 지점부터 설정한 다음 Eclipse 디버거를 연결합니다.

팁: 대체 포트를 사용하려면 위의 1 단계에서 명령어에 TF_DEBUG_PORT=nnn을 추가합니다. 이는 알 수 없는 버그를 조사해야 하는 경우 프로덕션 환경에서 사용할 수 있습니다. suspend=ytradefed.shsuspend=n으로 변경하고 디버그 플래그로 시작하세요. JVM은 디버거가 연결될 때까지 대기하지 않지만 프로세스가 실행 중인 경우 언제든지 연결할 수 있습니다.

JDB를 사용한 원격 디버그

자바 디버거 JDB를 사용하려면 Eclipse의 경우와 유사한 단계를 따르세요.

  1. 디버그 플래그 TF_DEBUG=1 tradefed.shtradefed.sh를 시작합니다.
  2. JVM에서 프롬프트 Listening for transport dt_socket at address: 10088이 표시될 때까지 기다립니다.
  3. jdb를 연결합니다. 예를 들면 croot에서 다음을 실행합니다.

    jdb -attach 10088 \
            -sourcepath tools/tradefederation/core/src:vendor/google_tradefederation/core/src
        
  4. 연결될 때까지 기다렸다가 디버깅합니다. 도움이 필요한 경우 man jdb를 실행하세요.

코드 범위 검토

  1. Eclemma 플러그인을 설치합니다.
  2. 도움말 > 새 소프트웨어 설치로 이동한 다음 마법사로 http://update.eclemma.org/를 가리킵니다.
  3. 설치되면 다음을 범위에 포함: > JUnit 테스트 옵션을 선택하여 코드 범위 실행을 수행합니다.