{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":1,"numPassedTests":9,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":9,"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":1792635959084,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["조직 이동 경합 (격리 MySQL 두 연결)"],"duration":516,"failureDetails":[],"failureMessages":[],"fullName":"조직 이동 경합 (격리 MySQL 두 연결) 조직 이동 경합: 다른 연결이 대상 조직 행을 잠그고 있으면 이동 (lock=true) 은 기다리고, 잠금이 풀린 뒤 한 번만 바꾼다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"조직 이동 경합: 다른 연결이 대상 조직 행을 잠그고 있으면 이동 (lock=true) 은 기다리고, 잠금이 풀린 뒤 한 번만 바꾼다"},{"ancestorTitles":["조직 이동 경합 (격리 MySQL 두 연결)"],"duration":28,"failureDetails":[],"failureMessages":[],"fullName":"조직 이동 경합 (격리 MySQL 두 연결) 낡은 스냅샷 이동: 잠금 뒤 최신 경로로 하위 전체를 다시 쓴다 (X·W 를 Z 아래로)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"낡은 스냅샷 이동: 잠금 뒤 최신 경로로 하위 전체를 다시 쓴다 (X·W 를 Z 아래로)"},{"ancestorTitles":["조직 이동 경합 (격리 MySQL 두 연결)"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"조직 이동 경합 (격리 MySQL 두 연결) 낡은 스냅샷 순환: 잠금 뒤 최신 경로로 순환을 다시 판정해 거부하고 아무것도 쓰지 않는다","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"낡은 스냅샷 순환: 잠금 뒤 최신 경로로 순환을 다시 판정해 거부하고 아무것도 쓰지 않는다"},{"ancestorTitles":["조직 이동 경합 (격리 MySQL 두 연결)"],"duration":517,"failureDetails":[],"failureMessages":[],"fullName":"조직 이동 경합 (격리 MySQL 두 연결) 하위 추가 경합: 부모 행이 잠겨 있으면 하위 추가는 기다리고, 풀린 뒤 최신 경로로 들어간다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"하위 추가 경합: 부모 행이 잠겨 있으면 하위 추가는 기다리고, 풀린 뒤 최신 경로로 들어간다"},{"ancestorTitles":["조직 이동 경합 (격리 MySQL 두 연결)"],"duration":539,"failureDetails":[],"failureMessages":[],"fullName":"조직 이동 경합 (격리 MySQL 두 연결) 소속 쓰기 후 삭제: 소속 쓰기가 잠금을 쥔 동안 삭제는 기다리고, 커밋 뒤 재확인으로 새 회원을 떼어 낸다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"소속 쓰기 후 삭제: 소속 쓰기가 잠금을 쥔 동안 삭제는 기다리고, 커밋 뒤 재확인으로 새 회원을 떼어 낸다"},{"ancestorTitles":["조직 이동 경합 (격리 MySQL 두 연결)"],"duration":527,"failureDetails":[],"failureMessages":[],"fullName":"조직 이동 경합 (격리 MySQL 두 연결) 삭제 후 소속 쓰기: 삭제가 회원 잠금을 쥔 동안 소속 쓰기는 기다리고, 삭제 뒤 대상 조직이 없어 거부된다","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"삭제 후 소속 쓰기: 삭제가 회원 잠금을 쥔 동안 소속 쓰기는 기다리고, 삭제 뒤 대상 조직이 없어 거부된다"},{"ancestorTitles":["조직 이동 경합 (격리 MySQL 두 연결)"],"duration":110,"failureDetails":[],"failureMessages":[],"fullName":"조직 이동 경합 (격리 MySQL 두 연결) 구 순서 반사실: 기업 잠금 뒤 회원을 갱신하는 옛 순서는 소속 쓰기 (회원 → 기업) 와 교착한다 (1213)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"구 순서 반사실: 기업 잠금 뒤 회원을 갱신하는 옛 순서는 소속 쓰기 (회원 → 기업) 와 교착한다 (1213)"},{"ancestorTitles":["조직 이동 경합 (격리 MySQL 두 연결)"],"duration":532,"failureDetails":[],"failureMessages":[],"fullName":"조직 이동 경합 (격리 MySQL 두 연결) 삭제 경로 회원 선행 잠금: 삭제는 기업 잠금 전에 부분트리 회원 (1002) 을 잠근다","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"삭제 경로 회원 선행 잠금: 삭제는 기업 잠금 전에 부분트리 회원 (1002) 을 잠근다"},{"ancestorTitles":["조직 이동 경합 (격리 MySQL 두 연결)"],"duration":520,"failureDetails":[],"failureMessages":[],"fullName":"조직 이동 경합 (격리 MySQL 두 연결) 조직 라우트 쓰기 잠금: 영업 판정은 기업 잠금 뒤의 담당 영업으로 한다 (기다린 뒤 거부)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"조직 라우트 쓰기 잠금: 영업 판정은 기업 잠금 뒤의 담당 영업으로 한다 (기다린 뒤 거부)"}],"endTime":1792635963136,"message":"","name":"/home/madsc/work/insuniverse-temp/.worktrees/admin-rbac/insuniverse-server/apps/api/src/modules/agency/organization/organization.race.itspec.ts","startTime":1792635959215,"status":"passed","summary":""}],"wasInterrupted":false}
