유닛 테스터 구성

유닛 테스터 구성

테스트 러너(unittest)의 옵션을 설정하는 방법은 크게 세 가지가 있어요. 명령줄 인자, 구성 파일, 환경 변수예요. 각 방법과 가능한 모든 구성 옵션을 살펴볼게요.

출처: 문서

본문

유닛 테스터의 옵션을 설정하는 방법은 세 가지가 있어요.

  • 명령줄 인자
  • 구성 파일
  • 환경 변수
  • 구성 옵션 목록

전체 옵션 목록은 구성 옵션 목록에서 확인할 수 있어요.

명령줄 인자

사용 가능한 모든 옵션은 구성 옵션 목록에서 확인하세요.

# 불리언
unittest --checkpoint-on-shutdown
unittest --no-checkpoint-on-shutdown

# 기타 타입
unittest --checkpoint-wal-size 100000

명령줄 옵션 --settings, --on-init, --init-script는 DuckDB 구성을 지정하는 데 쓸 수 있어요.

구성 파일

--test-config로 전달할 수 있는 JSON 파일이에요. 사용 가능한 모든 옵션은 구성 옵션 목록에서 -_로 바꿔 확인하세요.

예시:

{
   "checkpoint_wal_size": 100000,
   "checkpoint_on_shutdown": "false"
}

구성 파일에서는 다음 추가 옵션도 사용할 수 있어요.

옵션 설명
extends 확장할 구성 파일 목록
inherit_skip_tests 'skip_tests'를 상속할 구성의 경로
skip_tests 건너뛸 테스트

예시:

{
    "extends": ["base_config.json"],
    "inherit_skip_tests": "test/configs/force_storage.json",
    "skip_tests": [
        {
            "reason": "메모리 카탈로그의 명시적 사용이 포함됨.",
            "paths": [
                "test/sql/attach/attach_use_rollback.test",
                "test/sql/function/list/lambdas/arrow/warn_deprecated_arrow.test",
                "test/sql/cte/warn_deprecated_union_in_using_key.test"
            ]
        }
    ]
}

환경 변수

대부분의 구성 옵션은 DUCKDB_TEST_ 프리픽스를 붙이고 대문자로 밑줄로 변환한 환경 변수로도 설정할 수 있어요.

예시:

DUCKDB_TEST_CHECKPOINT_ON_SHUTDOWN=1 unittest

구성 옵션 목록

다음 구성 옵션들이 사용 가능해요.

옵션 설명
`--autoloading <none available
--base-config <경로> 로드해 초기 설정의 기반으로 삼을 구성 파일
--block-size <num> 블록 할당 크기; 2의 거듭제곱이어야 함
--checkpoint-on-shutdown, --no-checkpoint-on-shutdown 데이터베이스 종료 시 체크포인트 여부
--checkpoint-wal-size <num> 자동 체크포인트를 트리거할 크기(바이트)
--comment <문자열> 추가 자유 형식 주석 줄
--data-dir <경로> 테스트 데이터의 루트 디렉토리; 기본 WORKING_DIR/data. 상대 값은 테스트 cwd 기준으로 해석되고, 절대/원격(예: az://...) 값은 그대로 사용됨.
`--database-destroy <on off
--description <문자열> 구성 설명
--emit-on-skip 건너뛴 테스트마다 SKIP_TEST 마커 출력
--emit-test-events 테스트 이벤트가 담긴 JSON을 stderr에 기록
--force-reload 테스트 프레임워크 강제 재로드
--force-restart, --no-force-restart 실행 사이 데이터베이스 강제 재시작
--force-storage 영속 스토리지 파일로 테스트
--init-script <경로> init 시 실행할 SQL 스크립트
--initial-db <경로> 초기 데이터베이스 경로
--keep-home 샌드박스 temp-dir 홈 대신 $HOME/USERPROFILE 사용
--max-test-threads <num> 테스트 러너 자체가 사용할 최대 스레드 수 (예: 동시 루프용)
--max-threads <num> 테스트 중 사용할 최대 스레드 수
--on-cleanup <문자열> 테스트 종료 시 실행할 SQL 문
--on-init <문자열> init 시 실행할 SQL 문
--on-load <문자열> 명시적 로드 시 실행할 SQL 문
--on-new-connection <문자열> 연결 시 실행할 SQL 문
--one-initialize 버퍼를 모두 1로 초기화; --zero-initialize도 참고
--require <확장_이름> 확장이 없으면: 그 확장이 필요한 테스트를 건너뛰지 말고 실패
`--run-id <'auto' <문자열>>`
--select-tag <문자열> 명명된 태그와 일치하는 테스트 선택 (단일 집합으로; 여러 집합은 OR로 결합)
--select-tag-set <쉼표 구분 문자열> 모든 명명된 태그와 일치하는 테스트 선택 (여러 집합은 OR로 결합)
--settings <list[struct]> DuckDB 구성 설정, struct는 name과 value 키를 가져야 함
--skip-compiled, --no-skip-compiled 컴파일된 테스트 건너뛰기
--skip-error-messages <쉼표 구분 문자열> 이 하위 문자열 중 하나를 포함하는 메시지로 실패하는 테스트를 실패가 아닌 건너뛰기
--skip-tag <문자열> 명명된 태그와 일치하는 테스트 건너뛰기 (단일 집합으로; 여러 집합은 OR로 결합)
--skip-tag-set <쉼표 구분 문자열> 모든 명명된 태그와 일치하는 테스트 건너뛰기 (여러 집합은 OR로 결합)
`--sort-style <none rowsort
--statically-loaded-extensions <쉼표 구분 문자열> 로드할 확장 (정적으로 사용 가능한 것들 중에서)
--stdin stdin에서 단일 sqllogictest 스크립트 읽기
--storage-fuzzer, --no-storage-fuzzer storage fuzzer 테스트 실행
--storage-version <문자열> 기본으로 사용할 데이터베이스 스토리지 버전
--summarize-failures, --no-summarize-failures 실행 후 모든 테스트 실패 요약 출력
--temp-dir-base <경로> temp-dir 트리의 루트 덮어쓰기; 로컬 또는 원격(예: s3://)일 수 있음
`--temp-dir-create <never on-absent
`--temp-dir-destroy <never on-success
`--temp-dir-run-id <on off>`
`--temp-dir-test-id <on off>`
--test-config <경로> 구성 파일 경로
--test-dir <경로> 테스트 러너의 기본 작업 디렉토리 덮어쓰기, 테스트에서 {WORKING_DIRECTORY}로 사용 가능
--test-env <list[struct]> 테스트 변수, struct는 env_name과 env_value 키를 가져야 함
--test-memory-leaks, --no-test-memory-leaks 메모리 누수 테스트 실행
--verify-vector <문자열> 특정 벡터 타입에 대한 벡터 검증 실행 (옵션: dictionary_expression, dictionary_operator, constant_operator, sequence_operator, nested_shuffle, variant_vector)
--zero-initialize 버퍼를 모두 0으로 초기화; --one-initialize도 참고

더 알아보기 (Learn more)

  • 결과 검증 문법은 dev/sqllogictest/result_verification 문서를 참고해 주세요.