{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":1,"numPassedTests":12,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":12,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1792647958768,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":529,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 결제 취소 담당 변경 경합: 기업 잠금을 기다리는 사이 담당이 바뀌면 판정은 커밋된 담당을 보고 PG 를 부르지 않는다","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"결제 취소 담당 변경 경합: 기업 잠금을 기다리는 사이 담당이 바뀌면 판정은 커밋된 담당을 보고 PG 를 부르지 않는다"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":31,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 결제 취소 담당 변경 경합 · 반사실: 잠금 제거 시 위반 재현 (범위 밖 기업의 결제가 취소된다)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"결제 취소 담당 변경 경합 · 반사실: 잠금 제거 시 위반 재현 (범위 밖 기업의 결제가 취소된다)"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":15,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 판정 거부 시 PG 미호출: 담당 영업 범위 밖이면 PG 취소를 부르지 않고 결제는 그대로다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"판정 거부 시 PG 미호출: 담당 영업 범위 밖이면 PG 취소를 부르지 않고 결제는 그대로다"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":32,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) PG 호출 뒤 커밋 실패 조정 로그: PG 가 성공한 뒤 DB 쓰기가 실패하면 롤백하고 ERROR 로그 (pg_outcome=ok) 를 남긴다","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"PG 호출 뒤 커밋 실패 조정 로그: PG 가 성공한 뒤 DB 쓰기가 실패하면 롤백하고 ERROR 로그 (pg_outcome=ok) 를 남긴다"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 현행 흐름 PG 응답 유실 (트랜잭션 없음): PG 호출이 응답 없이 실패하면 상태 불명 키 (pg_outcome=unknown) 로그를 남기고 결제는 그대로다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"현행 흐름 PG 응답 유실 (트랜잭션 없음): PG 호출이 응답 없이 실패하면 상태 불명 키 (pg_outcome=unknown) 로그를 남기고 결제는 그대로다"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) PG 응답 유실 뒤 조정 로그: 영업 판정 경로에서 PG 호출이 응답 없이 실패하면 롤백 키 (pg_outcome=unknown) 로그를 남기고 결제는 그대로다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"PG 응답 유실 뒤 조정 로그: 영업 판정 경로에서 PG 호출이 응답 없이 실패하면 롤백 키 (pg_outcome=unknown) 로그를 남기고 결제는 그대로다"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":522,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 지정 적립 담당 변경 경합: 기업 잠금을 기다리는 사이 담당이 바뀌면 적립 배치를 만들지 않는다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"지정 적립 담당 변경 경합: 기업 잠금을 기다리는 사이 담당이 바뀌면 적립 배치를 만들지 않는다"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":21,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 지정 적립 담당 변경 경합 · 반사실: 잠금 제거 시 위반 재현 (범위 밖 기업에 적립이 생긴다)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"지정 적립 담당 변경 경합 · 반사실: 잠금 제거 시 위반 재현 (범위 밖 기업에 적립이 생긴다)"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":520,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 환불 담당 변경 경합: 기업 잠금을 기다리는 사이 담당이 바뀌면 환불 처리를 하지 않는다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"환불 담당 변경 경합: 기업 잠금을 기다리는 사이 담당이 바뀌면 환불 처리를 하지 않는다"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":18,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 환불 담당 변경 경합 · 반사실: 잠금 제거 시 위반 재현 (범위 밖 기업의 환불이 승인된다)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"환불 담당 변경 경합 · 반사실: 잠금 제거 시 위반 재현 (범위 밖 기업의 환불이 승인된다)"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 환불 거부 시 행 변화 0: 담당 범위 밖이면 환불 행의 상태가 그대로이고 지갑 행이 늘지 않는다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"환불 거부 시 행 변화 0: 담당 범위 밖이면 환불 행의 상태가 그대로이고 지갑 행이 늘지 않는다"},{"ancestorTitles":["머니 담당 변경 경합 (격리 MySQL 두 연결)"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"머니 담당 변경 경합 (격리 MySQL 두 연결) 지정 적립 전건 거부: 대상 중 한 명이라도 담당 밖이면 적립 배치 · 대상 행 · 지갑 행이 늘지 않는다","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"지정 적립 전건 거부: 대상 중 한 명이라도 담당 밖이면 적립 배치 · 대상 행 · 지갑 행이 늘지 않는다"}],"endTime":1792647961546,"message":"","name":"/home/madsc/work/insuniverse-temp/.worktrees/admin-rbac/insuniverse-server/apps/api/src/modules/money/money-race.itspec.ts","startTime":1792647958893,"status":"passed","summary":""}],"wasInterrupted":false}
