test: isolate conditional integration runner
This commit is contained in:
@@ -15,8 +15,14 @@ pnpm test:integration:conditional
|
||||
```
|
||||
|
||||
조건부 runner는 환경 변수 존재 여부만으로 안전성을 보장하지 않습니다.
|
||||
대상 host, port, database, schema와 Redis prefix가 해당 worktree 전용인지
|
||||
확인해 주세요.
|
||||
대상 host, port, database와 Redis prefix가 해당 worktree 전용인지 확인해
|
||||
주세요. Runner는 실행 ID가 포함된 game schema를 생성하고 성공, 테스트 실패,
|
||||
`HUP`, `INT`, `TERM` 종료에서 자신이 생성한 schema만 삭제합니다. 사용자가
|
||||
schema 환경 변수를 지정한 경우에도 이미 존재하는 schema는 거부합니다.
|
||||
HTTP transport fixture의 Redis key도 실행 ID를 profile namespace에 포함하고,
|
||||
runner 종료 시 그 실행 ID에 속한 key만 삭제합니다. 공유 Redis 전체에
|
||||
`FLUSHDB`나 `FLUSHALL`을 실행하지 않습니다.
|
||||
`SIGKILL`은 cleanup trap을 실행할 수 없으므로 자동 정리를 보장하지 않습니다.
|
||||
|
||||
## 준비
|
||||
|
||||
@@ -61,14 +67,19 @@ runtime role을 삭제하고 PID와 명령행 및 daemon 종료를 확인한 뒤
|
||||
경매 timer race
|
||||
|
||||
실제 포함 suite는 `tools/run-conditional-integration.sh`, 각 package의
|
||||
`package.json`, `*.integration.test.ts`를 기준으로 확인합니다.
|
||||
`package.json`, `*.integration.test.ts`를 기준으로 확인합니다. DB 조건부
|
||||
환경 변수는 `tools/conditional-integration-registry.tsv`에서 명시적으로
|
||||
관리합니다. 새 `*_DATABASE_URL` gate가 registry에 없거나 registry 항목이
|
||||
더 이상 테스트에 존재하지 않으면 runner가 테스트 실행 전에 실패합니다.
|
||||
|
||||
관리자 시간 조정의 PostgreSQL 경계는
|
||||
`runtimeClockShiftPersistence.integration.test.ts`, gateway action
|
||||
`PARTIAL → APPLIED` 경계는 `gatewayRuntimeAction.integration.test.ts`입니다.
|
||||
후자는 `GATEWAY_RUNTIME_ACTION_DATABASE_URL`, 전자는
|
||||
`INPUT_EVENT_DATABASE_URL`이 없으면 skip되므로 결과에서 실제 실행 여부를
|
||||
따로 확인해 주세요.
|
||||
Runner는 후자에 `GATEWAY_RUNTIME_ACTION_DATABASE_URL`, 전자에
|
||||
`INPUT_EVENT_DATABASE_URL`을 같은 격리 schema URL로 주입합니다. 장수 생성,
|
||||
선택 pool, 즉시 장수 action처럼 별도 marker를 사용하는 테스트도 registry를
|
||||
통해 포함합니다. DB와 Redis가 함께 필요한 파일은 DB group에서 한 번만
|
||||
실행하고 Redis-only 파일만 별도 group에서 실행합니다.
|
||||
|
||||
## 안전 경계
|
||||
|
||||
@@ -85,5 +96,9 @@ runtime role을 삭제하고 PID와 명령행 및 daemon 종료를 확인한 뒤
|
||||
PostgreSQL·Redis 경계를 증명하지 않습니다. Full suite 실패는 변경 worktree와
|
||||
변경 없는 `main`에서 각각 재현해 회귀와 baseline을 구분합니다.
|
||||
|
||||
조건부 runner는 마지막 줄에 통과, skip, 실패한 test file 수를 출력하며,
|
||||
하나라도 file 전체가 skip되면 성공으로 처리하지 않습니다. 실행이 중단된 경우도
|
||||
이미 완료된 group의 집계와 schema cleanup 결과를 확인해 주세요.
|
||||
|
||||
Ref 호환성 판정은 [차등 검증](architecture/turn-state-differential-testing.md),
|
||||
UI는 [프론트엔드 호환 검증](frontend-legacy-parity.md)을 함께 사용합니다.
|
||||
|
||||
Reference in New Issue
Block a user