test(backend): CPU 시간 단언을 지금 스레드의 user 시간으로 — CI 흔들림 고침
CI / Backend (lint · type-check · test · e2e · build) (pull_request) Successful in 13m21s
CI / Frontend (lint · type-check · test · build) (pull_request) Successful in 12m37s
CI / Infra (compose · Dockerfile · nginx · 운영 스크립트) (pull_request) Successful in 2m18s
CI / 에러 코드 SSOT 동기화 검사 (pull_request) Successful in 11m10s
CI / Backend (lint · type-check · test · e2e · build) (push) Successful in 14m41s
CI / Frontend (lint · type-check · test · build) (push) Successful in 14m29s
CI / Infra (compose · Dockerfile · nginx · 운영 스크립트) (push) Successful in 2m26s
CI / 에러 코드 SSOT 동기화 검사 (push) Successful in 12m27s

문서만 바꾼 PR(#8, run 138)의 CI 에서 할당이 많은 성능 단언 셋이 넘쳤다(받는 사람 맞추기 3.29초 · JSON 모양 1.35초 · DTO 2.94초).
프로세스 user + system 시간에는 V8 의 GC · JIT 도우미 스레드와 페이지 폴트 몫이 들어가 기계 사정을 따라 크게 흔들린다.
같은 Linux 컨테이너에서 전체 테스트 16회: 프로세스 user + system 은 4회 넘침, 스레드 user 는 0회.
막으려는 옛 경로(제곱)는 거의 user 시간이라 그대로 잡힌다(받는 사람 맞추기 옛 방법 51~70초).
받는 사람 맞추기 한도는 CI 쪽 값(0.17~0.25초)의 10배쯤인 2.5초로 올렸다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit was merged in pull request #12.
This commit is contained in:
2026-10-31 11:30:18 +09:00
parent 349c312989
commit bc22f5f3ba
4 changed files with 51 additions and 15 deletions
@@ -140,8 +140,10 @@ describe('받는 사람 맞추기 (recipient-match — 쓰기 화면과 같은
expect(recipientNameMatcher(`${'가'.repeat(99)}나`)(name)).toBe(true);
const matches = recipientNameMatcher(`${'가'.repeat(99)}다`);
expect(names.filter(matches)).toEqual([]);
// 지금 0.06~0.14초 — 한도는 10배쯤 (testing 규칙). 옛 방법(1억 번 비교)은 확실히 넘는다
expect(cpuMs()).toBeLessThan(1_500);
// 지금 스레드 user 0.13초 안팎(호스트 Windows · Node 22), CI 와 같은 Linux 컨테이너(Node 24)에서는 혼자 0.17~0.25초 —
// 한도는 그 10배쯤 (testing 규칙 — 1.5초였을 때 2026-10-31 CI 에서 프로세스 시간 3.29초로 넘쳤다, test/cpu-time.ts).
// 옛 방법(1억 번 비교)은 그 컨테이너에서 51~70초로 확실히 넘는다 (2026-10-31 되살려 잼)
expect(cpuMs()).toBeLessThan(2_500);
});
it('추천 줄 거르기 — 같은 이름은 한 번만 견준다 (연락처 하나의 주소 여러 줄)', () => {