proto-socket/agent-task/crosstest_coverage_gaps/plan_1.log

101 lines
3.1 KiB
Text

<!-- task=crosstest_coverage_gaps plan=1 tag=REVIEW_CROSSTEST-COVERAGE -->
# Review Follow-up Plan - REVIEW_CROSSTEST-COVERAGE
## 개요
date=2026-04-25
task=crosstest_coverage_gaps, plan=1, tag=REVIEW_CROSSTEST-COVERAGE
## 배경
plan=0 리뷰 결과 `FAIL` 판정이 나왔다. 구현 자체의 주요 범위는 맞지만, Kotlin self-cell 검증 신뢰도가 확보되지 않았다.
재검증 결과:
- `TcpTest.testTcpConcurrentRequests` 단독 실행 통과
- `WsTest.testWsConcurrentRequests` 단독 실행 통과
- `TcpTest.testTcpSendReceive` 단독 실행 통과
- `./gradlew test` 및 `--tests com.tokilabs.toki_socket.TcpTest`는 `:test` 단계에서 타임아웃 재현
## 작업 범위
### [REVIEW_CROSSTEST-COVERAGE-1] Kotlin 전체 test suite hang 원인 수정
**문제**
`kotlin && ./gradlew test`가 전체 suite에서 완료되지 않는다. 리뷰 중 jstack은 `TcpTest.testTcpSendReceive`의 `received.await()` 대기와 TCP accept/readLoop가 남아 있는 상태를 보였다.
**해결 방향**
- Kotlin TCP/WS 테스트의 서버 시작, 클라이언트 연결, listener 등록 순서를 재검토한다.
- 테스트 간 서버/클라이언트 상태가 남아 다음 테스트에 영향을 주지 않도록 정리 흐름을 통일한다.
- 기존 구현 코어를 불필요하게 바꾸지 말고, 우선 테스트 안정성 문제를 좁혀 수정한다.
**체크리스트**
- [ ] `./gradlew test --tests com.tokilabs.toki_socket.TcpTest`가 타임아웃 없이 통과한다.
- [ ] `./gradlew test`가 타임아웃 없이 통과한다.
- [ ] 기존 TCP/WS self-cell 시나리오 1-4 의미가 약화되지 않는다.
**검증**
```bash
cd kotlin && ./gradlew test --tests com.tokilabs.toki_socket.TcpTest
cd kotlin && ./gradlew test
```
### [REVIEW_CROSSTEST-COVERAGE-2] Kotlin concurrent 테스트 cleanup 보장
**문제**
`testTcpConcurrentRequests`와 `testWsConcurrentRequests`는 `awaitAll()` 뒤에만 `client.close()` / `server.stop()`을 호출한다. 요청 실패나 timeout이 발생하면 cleanup이 건너뛰어 후속 테스트가 hang 될 수 있다.
**해결 방향**
Before:
```kotlin
deferred.awaitAll()
client.close()
server.stop()
```
After:
```kotlin
try {
deferred.awaitAll()
} finally {
client.close()
server.stop()
}
```
필요하면 기존 다른 Kotlin 테스트도 같은 패턴으로 정리하되, 이번 리뷰 이슈와 무관한 리팩터링은 하지 않는다.
**체크리스트**
- [ ] TCP concurrent 테스트가 실패해도 client/server cleanup이 실행된다.
- [ ] WS concurrent 테스트가 실패해도 client/server cleanup이 실행된다.
- [ ] cleanup 보강으로 assertion 의미가 바뀌지 않는다.
**검증**
```bash
cd kotlin && ./gradlew test --tests com.tokilabs.toki_socket.TcpTest.testTcpConcurrentRequests
cd kotlin && ./gradlew test --tests com.tokilabs.toki_socket.WsTest.testWsConcurrentRequests
```
## 최종 검증
```bash
cd kotlin && ./gradlew test
git diff --check
```
## 범위 밖
- Kotlin secure transport API 신규 구현
- Dart/Go/Python/TypeScript 구현 변경
- agent-ops 규칙/스킬 변경