- Dart: Replace ResponseChecker with HeartbeatMixin - Dart: Remove heartbeat-related fields from ProtobufClient/Server - Dart: Add HeartbeatMixin for cleaner heartbeat logic - Go: Add timeout test in communicator_test.go - Go: Add heartbeat_test.go with heartbeat functionality tests - Go: Add TLS test in tls_test.go - Go: Add message type mismatch tests - Go: Improve tcp_test.go and ws_test.go with comprehensive tests - Dart: Add comprehensive socket_test.dart with multiple test scenarios - Add untracked documentation files
3 KiB
3 KiB
테스트 보강 코드리뷰 후속 작업계획서
개요
IMPROVEMENT_PLAN_TEST.md 기반 테스트 추가 작업에 대한 코드리뷰 결과, 두 가지 후속 수정이 필요하다.
개선 항목
[Review-1] Dart 서버 print() 제거 ⭐ 필수
문제
이전 Dart 개선 작업([Dart-4])에서 라이브러리 코드의 print()를 제거했으나 서버 파일 두 곳이 누락됐다.
// protobuf_server.dart:69
void onDisconnectedClient(ProtobufClient client) {
_clientList.remove(client);
client.dispose();
print('Client disconnected'); // ← 제거 대상
}
// ws_protobuf_server.dart:70
void onDisconnectedClient(WsProtobufClient client) {
_clientList.remove(client);
client.dispose();
print('WS Client disconnected'); // ← 제거 대상
}
파일 상단의 // ignore_for_file: avoid_print suppress 주석도 함께 삭제한다.
수정 파일
dart/lib/src/protobuf_server.dart- 1행
// ignore_for_file: avoid_print, prefer_final_fields→// ignore_for_file: prefer_final_fields print('Client disconnected')한 줄 제거
- 1행
dart/lib/src/ws_protobuf_server.dart- 1행
// ignore_for_file: avoid_print, prefer_final_fields→// ignore_for_file: prefer_final_fields print('WS Client disconnected')한 줄 제거
- 1행
검증
cd dart && dart analyze && dart test
[Review-2] Go 서버 종료 테스트 — 이중 Stop() 명확화 ⭐ 선택
문제
TestTcpServerStopDisconnectsClients와 TestWsServerStopDisconnectsClients에서 server.Stop()이 두 번 호출된다.
defer server.Stop() // ← defer 등록
// ... 테스트 본문 ...
if err := server.Stop(); err != nil { // ← 명시적 호출
t.Fatal(err)
}
테스트 목적상 Stop() 이후 disconnect 콜백이 울리는지를 검증하는 것이 핵심이므로, defer server.Stop()은 불필요하다. 오히려 이중 호출이 Stop() 멱등성에 의존하는 것처럼 읽혀 의도를 흐린다.
해결 방법
defer server.Stop()을 제거한다. 명시적 server.Stop() 호출 이후 서버는 이미 중단 상태이므로 teardown 역할은 필요 없다.
// defer server.Stop() ← 제거
// ...
if err := server.Stop(); err != nil {
t.Fatal(err)
}
수정 파일
go/test/tcp_test.go—TestTcpServerStopDisconnectsClients내defer server.Stop()제거go/test/ws_test.go—TestWsServerStopDisconnectsClients내defer server.Stop()제거
검증
cd go && go test ./test/... -run "TestTcpServerStopDisconnectsClients|TestWsServerStopDisconnectsClients" -v
우선순위
| 우선순위 | 항목 | 이유 |
|---|---|---|
| 1 | Review-1 (print 제거) | 라이브러리 코드에 로그가 남는 버그. analyze 경고 발생 |
| 2 | Review-2 (이중 Stop 정리) | 기능 문제 아님. 가독성 개선 |
최종 검증
# Go
cd go && go test ./test/... -v
# Dart
cd dart && dart analyze && dart test