디버깅
디버깅 (Debugging)
테스트의 목적은 언제 문제가 깨지는지 알아내는 것이에요. 필연적으로 시스템에 가해지는 변경이 테스트 중 하나를 실패하게 만들고, 그럴 때 그 테스트를 디버깅해야 해요.
먼저 항상 디버그 모드로 실행하는 걸 권장해요. 시스템을 make debug 명령으로 컴파일하면 돼요. 둘째, 깨지는 테스트만 실행하는 걸 권장해요. 깨지는 테스트의 파일 이름을 명령줄 파라미터로 테스트 스위트에 넘기면 돼요 (예: build/debug/test/unittest test/sql/projection/test_simple_projection.test). 테스트 부분집합 실행의 더 많은 옵션은 어떤 테스트를 실행할지 트리거 섹션을 참고하세요.
그다음 디버거를 프로그램에 부착해 테스트를 디버깅할 수 있어요. sqllogictest에서는 특정 쿼리에 중단점을 거는 게 보통 어렵지만, 테스트 스위트를 확장해서 실행되는 모든 쿼리에 대해 query_break라는 함수가 줄 번호 line을 파라미터로 호출되게 만들었어요. 이를 통해 특정 쿼리에 조건부 중단점을 걸 수 있어요. 예를 들어 테스트 파일의 43번 줄에서 중단하고 싶다면 다음 중단점을 만들 수 있어요.
gdb: break query_break if line==43
lldb: break s -n query_break -c line==43
파일에 mode skip을 넣고 선택적으로 mode unskip을 넣어 특정 쿼리 실행을 건너뛸 수도 있어요. 두 문 사이의 쿼리는 실행되지 않아요.
출처: 문서
본문
어떤 테스트를 실행할지 트리거
unittest 프로그램을 실행하면 기본적으로 모든 빠른(fast) 테스트가 실행돼요. 특정 테스트는 테스트 이름을 인자로 추가해 실행할 수 있어요. sqllogictest의 경우 이는 테스트 파일의 상대 경로예요.
단일 테스트만 실행하려면:
build/debug/test/unittest test/sql/projection/test_simple_projection.test
주어진 디렉터리의 모든 테스트는 디렉터리를 대괄호로 감싼 파라미터로 제공해 실행할 수 있어요.
"projection" 디렉터리의 모든 테스트를 실행하려면:
build/debug/test/unittest "[projection]"
느린 테스트를 포함한 모든 테스트는 별표로 테스트를 실행하면 돼요.
느린 테스트를 포함한 모든 테스트를 실행하려면:
build/debug/test/unittest "*"
--start-offset과 --end-offset 파라미터로 테스트 부분집합을 실행할 수 있어요.
200...250 테스트를 실행하려면:
build/debug/test/unittest --start-offset=200 --end-offset=250
이들은 백분율로도 사용할 수 있어요. 10% - 20% 테스트를 실행하려면:
build/debug/test/unittest --start-offset-percentage=10 --end-offset-percentage=20
실행할 테스트 집합은 줄마다 테스트 이름 하나를 담은 파일에서 로드할 수도 있고, -f 명령으로 로드해요.
cat test.list
test/sql/join/full_outer/test_full_outer_join_issue_4252.test
test/sql/join/full_outer/full_outer_join_cache.test
test/sql/join/full_outer/test_full_outer_join.test
파일에 표시된 테스트만 실행하려면:
build/debug/test/unittest -f test.list