Chromium Chronicle #14: 폭포식 구조에 테스트 추가

에피소드 14: MTV의 Zhaoyang Li, TOK의 Eric Aleshire 제공 (2020년 10월)
이전 에피소드

Chrome의 새 기능에 대한 회귀를 감지하고 싶으신가요? 폭포식 구조 (Chrome의 지속적 빌드 및 테스트 인프라)에 테스트를 추가하세요.

Chrome의 폭포식 구조에는 다양한 플랫폼에서 테스트를 실행하는 많은 빌더가 있습니다. 이 문서에서는 기존 빌더에 테스트 모음을 추가하는 방법을 설명합니다. 계속하기 전에 다음 사항을 고려하세요.

새 테스트는 새로운 도구 모음에 있어야 하나요, 아니면 기존 모음에 추가되어야 하나요?

  • 테스트는 소스 위치 및 테마의 근접성에 따라 테스트 모음으로 구성됩니다. 새 테스트가 기존 도구 모음에 논리적으로 맞지 않으면 새 도구 모음이 필요할 수 있습니다.

테스트는 공개 빌더와 내부 빌더에서 실행해야 하나요?

  • 코드가 내부 저장소에 있거나 테스트에 기밀 데이터가 포함된 경우 내부 빌더를 사용합니다.

FYI CI, 기본 CI 또는 커밋 큐(CQ)에서 테스트를 실행해야 하나요?

  • FYI CI에는 자체 모니터링이 필요하며 테스트 개선 또는 실험에 사용됩니다.
  • 보안관이 주요 CI 테스트를 정기적으로 모니터링합니다.
  • 실패 시 CQ가 CL 제출을 차단하지만 인프라 리소스가 더 많이 소모됩니다. 새 도구 모음은 항상 CQ로 승급되기 전에 CI에서 시작해야 합니다.
  • 확실하지 않다면 플랫폼의 EngProd팀에서 도움을 받을 수 있습니다.

이미 CI에서 실행 중인 테스트 모음을 CQ에 추가하려면 어떻게 해야 하나요? / 새 빌더가 필요하면 어떻게 해야 하나요?

테스트 모음을 기존 빌더에 추가하는 방법

테스트 모음을 기존 빌더에 추가하려면 //src/testing/buildbot/에서 일부 파일을 구성해야 합니다.

  1. gn_isolate_map.pyl에서 테스트 타겟 라벨 및 유형 정보로 새 테스트 모음의 키를 만듭니다.
  2. test_suites.pyl테스트 그룹에 키를 추가합니다. waterfalls.pyl의 빌더에서 빌더 이름에서 테스트 그룹으로의 매핑을 확인할 수 있습니다.

    'all_simulator_tests': {
      'previously_existing_test_suite': {},
      'exciting_new_feature_test_suite': {},
    },
    
  3. 추가 미세 조정

    • mixins.pyl에는 다양한 그룹 수준의 테스트 그룹에 적용할 수 있는 인수가 포함되어 있습니다.
    • variants.pyl서로 다른 인수를 사용하여 여러 인스턴스에서 도구 모음을 실행하는 데 도움이 됩니다.
  4. generate_buildbot_json.py를 실행하여 구성 파일을 재생성합니다.

그 이후에는 간단하게 구성 변경사항을 체크인하면 됩니다. 이 도구 모음을 실행하는 빌더가 자동으로 새 테스트를 선택하고 폭포식 구조에서 빌더의 결과가 웹 인터페이스에 전달되기 시작하며, 장애가 발생할 경우 다양한 디버그 정보와 함께 완료됩니다.