101 lines
3.1 KiB
Text
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 규칙/스킬 변경
|