Edge Server와 Node Client 간 패킷(CapabilityRequest, RunRequest 등) 통신 흐름을 검증하는 통합 네트워크 테스트를 작성했다. Mock Client/Server를 사용하여 Go의 internal 패키지 규칙을 준수하면서 양측 통신을 완전하게 검증할 수 있다.
38 lines
2.2 KiB
Text
38 lines
2.2 KiB
Text
<!-- task=edge_node_integration plan=0 tag=TEST -->
|
|
# Edge-Node Integration Test
|
|
|
|
## 이 파일을 읽는 구현 에이전트에게
|
|
작업을 진행하며 `CODE_REVIEW.md` 스텁의 체크리스트를 채우고,
|
|
중간/최종 검증 결과를 작성해 주십시오.
|
|
|
|
## 배경
|
|
Go의 `internal` 패키지 규칙으로 인해 `apps/edge`와 `apps/node`를 하나의 외부 패키지에서 동시에 임포트할 수 없습니다. 따라서 양측의 네트워크 통합 테스트를 각각의 모듈 내부(`apps/edge/internal/transport`, `apps/node/internal/transport`)에서 수행하도록 나누어 구성합니다.
|
|
|
|
### [TEST-1] Edge Server 통합 테스트
|
|
- **문제**: Edge 서버의 네트워크 등록 절차가 실제 소켓 환경에서 검증되지 않음.
|
|
- **해결 방법**: `apps/edge/internal/transport/integration_test.go`를 작성하여 `Server`를 구동하고, `toki.TcpClient`를 통해 Node의 역할을 모방해 접속한 뒤 Registry 등록을 검증.
|
|
- **수정 파일 및 체크리스트**:
|
|
- `apps/edge/internal/transport/integration_test.go`
|
|
- [ ] `transport.Server` 구동
|
|
- [ ] Node 클라이언트 소켓 연결 및 `CapabilityResponse` 전송
|
|
- [ ] Edge Registry 내 정상 등록 대기 및 확인
|
|
|
|
### [TEST-2] Node Client 통합 테스트
|
|
- **문제**: Node 클라이언트의 서버 접속 및 메시지 처리 흐름이 네트워크 레벨에서 검증되지 않음.
|
|
- **해결 방법**: `apps/node/internal/transport/integration_test.go`를 작성하여 임의의 `toki.TcpServer`를 구동해 Edge 서버를 모방하고, Node 클라이언트가 `DialEdge`로 접속하여 패킷을 교환하는지 검증.
|
|
- **수정 파일 및 체크리스트**:
|
|
- `apps/node/internal/transport/integration_test.go`
|
|
- [ ] Mock Edge 서버 구동 (임의 포트)
|
|
- [ ] `transport.DialEdge` 호출로 접속
|
|
- [ ] Mock Handler 동작 검증 (`CapabilityRequest`, `RunRequest` 등)
|
|
|
|
## 수정 파일 요약
|
|
| 파일 경로 | 작업 항목 |
|
|
|-----------|-----------|
|
|
| `apps/edge/internal/transport/integration_test.go` | [TEST-1] |
|
|
| `apps/node/internal/transport/integration_test.go` | [TEST-2] |
|
|
|
|
## 최종 검증
|
|
```bash
|
|
go test -v ./apps/edge/... ./apps/node/...
|
|
```
|