Skip to main content
이 가이드는 디버깅, 서버 테스트 스위트 실행, VillageSQL에 기여하는 방법을 다룹니다. 작동하는 소스 빌드를 전제로 합니다 — 아직 하지 않았다면 소스에서 빌드를 참조하세요.

디버깅

VillageSQL 서버 디버깅은 Linux에서는 GDB를, macOS에서는 lldb를 사용합니다. macOS의 GDB는 코드 서명이 필요하여 설정하기 번거롭습니다 — lldb는 macOS의 표준 디버거이며 별도 설정 없이 바로 작동합니다.

Linux (GDB)

VillageSQL을 GDB에서 실행:
GDB 내부:
일반적인 GDB 명령어:

macOS (lldb)

VillageSQL을 lldb에서 실행:
lldb 내부:
일반적인 lldb 명령어:

테스트 실행

VillageSQL은 기능을 검증하기 위해 단위 테스트와 회귀 테스트를 포함합니다.

단위 테스트

VillageSQL 전용 단위 테스트 실행 (빌드 디렉터리 내에서):
또는 모든 단위 테스트 실행:

회귀 테스트

mysql-test 디렉터리로 이동:
전체 MySQL 테스트 스위트 실행 (느림):
VillageSQL 하위 스위트 하나 실행:
모든 하위 스위트를 포함한 VillageSQL 테스트 실행:
—suite vs —do-suite:
  • --suite=villagesql/insert는 하위 스위트 하나를 실행합니다
  • --do-suite=villagesql은 하위 스위트(insert, select, stored_procedure 등)를 포함한 모든 테스트를 실행합니다
  • --nounit-tests는 MTR이 스위트와 함께 실행할 단위 테스트를 건너뜁니다. 그 단위 테스트는 업스트림 MySQL 단위 테스트이며 알려진 실패를 포함합니다. VillageSQL 단위 테스트는 위의 단위 테스트 명령으로 따로 실행하세요.

개별 테스트 실행

테스트 이름으로 특정 테스트 실행:
하위 스위트에서 테스트 실행:

테스트 결과 업데이트

기능 변경 후 예상 테스트 출력을 업데이트해야 하는 경우:
테스트 기록: 항상 .result 파일 변경 사항을 검토하여 버그가 아닌 의도된 동작을 반영했는지 확인하세요. --record 플래그는 예상 출력을 맹목적으로 덮어씁니다.

테스트 이식성

테스트 출력에 테스트 실행기의 임시 디렉터리 경로가 포함된 경우, 기록된 결과에 다른 머신에서 작동하지 않는 절대 경로가 포함되지 않도록 경로를 출력하는 각 문 앞에 다음 지시문을 추가하세요:

테스트 실패 디버깅

VillageSQL 전용 로그 메시지(LogVSQL()을 통해 출력)는 --log-error-verbosity=3에서 오류 로그에 기록되며, MTR은 기본적으로 이 값을 설정합니다. 한 번의 실행에 대해 수준을 설정하려면:
단일 워커 실행의 경우 전체 오류 로그는 mysql-test/var/log/mysqld.1.err에 있습니다. --parallel을 사용하면 각 워커는 대신 mysql-test/var/<N>/log/mysqld.1.err에 기록합니다. 확장 회귀 테스트 작성에 대한 자세한 내용은 C++ 테스트를 참조하세요.

바이너리 설치

VillageSQL을 시스템 전체에 설치하려면 (적절한 권한이 필요):
기본적으로 바이너리가 /usr/local/mysql/에 설치됩니다. 설치 접두사를 사용자 정의할 수 있습니다:

기여하기

VillageSQL에 기여하는 경우, 코딩 표준 및 개발 워크플로우에 대한 기여 가이드라인을 참조하세요.