100 lines
4.2 KiB
Markdown
100 lines
4.2 KiB
Markdown
---
|
|
test_env: dev
|
|
test_profile: edge-smoke
|
|
domain: edge
|
|
verification_type: smoke
|
|
last_rule_updated_at: 2026-06-12
|
|
---
|
|
|
|
# edge-smoke dev 테스트
|
|
|
|
## 읽기 조건
|
|
|
|
- `apps/edge/**` 변경 또는 edge registry, transport, service, console, OpenAI-compatible/A2A 입력 표면 dev 검증 판단이 필요한 경우
|
|
|
|
## 적용 범위
|
|
|
|
- `apps/edge/cmd/edge/**`
|
|
- `apps/edge/internal/bootstrap/**`
|
|
- `apps/edge/internal/transport/**`
|
|
- `apps/edge/internal/service/**`
|
|
- `apps/edge/internal/events/**`
|
|
- `apps/edge/internal/input/**`
|
|
- `apps/edge/internal/openai/**`
|
|
- `apps/edge/internal/opsconsole/**`
|
|
- `apps/edge/internal/node/**`
|
|
|
|
## 분류
|
|
|
|
- domain: edge
|
|
- verification_type: smoke
|
|
- scope: edge 실행 그룹, node registry, input surface baseline
|
|
|
|
## 환경
|
|
|
|
- host: local checkout. dev runtime, external CLI, shared port evidence가 필요하면 원격 runner를 사용한다.
|
|
- port: compose Edge-Node TCP transport `19003`; dev artifact/bootstrap HTTP 후보 `18082`, dev Edge OpenAI-compatible HTTP 후보 `18083`, dev Edge metrics 후보 `19101`.
|
|
- runtime: Go `1.24`
|
|
- package manager: Go modules / Makefile
|
|
- docker: unit/smoke quick check는 Docker를 요구하지 않는다. compose dev 검증은 `docker compose --env-file .env.dev.example ...`로 수행한다.
|
|
- external service: dev artifact/base URL 후보 `http://toki-labs.com:18082`, dev Edge runtime 주소 후보 `toki-labs.com:19003`
|
|
- model endpoint: dev OpenAI-compatible base URL 후보 `http://toki-labs.com:18083/v1`
|
|
- credential: token/secret 원문은 문서에 기록하지 않는다.
|
|
|
|
## 명령
|
|
|
|
- setup:
|
|
- lint:
|
|
- unit: `go test ./apps/edge/...`
|
|
- smoke: `./scripts/e2e-smoke.sh`는 기본 포트 임시 설정을 쓰는 보조 smoke이므로 dev 포트 override 필요 여부를 먼저 확인한다.
|
|
- e2e: `make test-e2e`는 보조 smoke이며 full-cycle 실제 구동을 대체하지 않는다.
|
|
- model: dev OpenAI-compatible profile을 띄운 경우 `iop-edge smoke openai --base-url http://127.0.0.1:18083`
|
|
- full-cycle: repo 내부 edge-node 진단, `iop-edge smoke openai`, OpenAI-compatible 입력 표면 수동 검증
|
|
|
|
## 필수 검증
|
|
|
|
- 변경한 edge 패키지 또는 `go test ./apps/edge/...`를 실행한다.
|
|
- registry, service, transport, console, HTTP/A2A 입력 표면을 바꾼 경우 edge-node 메시지 2회 왕복과 command 응답을 확인한다.
|
|
- OpenAI-compatible 경계를 바꾼 경우 dev `18083` 기준 `iop-edge smoke openai` 또는 동등한 `/healthz`, `/v1/models`, `/v1/responses` 확인으로 edge service와 node adapter 경로 수렴을 확인한다.
|
|
- bootstrap/artifact 경계를 바꾼 경우 dev artifact/base URL 후보 `18082`가 local/test `18080` field baseline을 덮어쓰지 않는지 확인한다.
|
|
|
|
## 보조 검증
|
|
|
|
- `./scripts/e2e-smoke.sh`는 edge-node 최소 생존 확인에 사용한다.
|
|
- `./scripts/e2e-openai-ollama.sh`는 OpenAI-compatible Ollama 입력 표면 보조 확인에 사용한다.
|
|
|
|
## 판정 기준
|
|
|
|
- node 등록, `/nodes`, console 메시지 전송, 기대 payload를 포함한 `[node-*-message]` 출력, 같은 run의 complete event가 확인된다.
|
|
- node 로컬 `[node-message]` payload 라인 목록과 edge `[node-*-message]` payload 라인 목록이 run별로 내용/순서까지 동일해야 한다.
|
|
- edge complete는 같은 run의 마지막 `[node-*-message]` 이후에만 정상이다.
|
|
- OpenAI-compatible smoke에서 `/healthz`, `/v1/models`, `/v1/responses`가 기대 상태로 응답한다.
|
|
- bootstrap 사용자 명령은 완성된 URL과 positional token 하나만 포함한다.
|
|
|
|
## 기준 출력 예시
|
|
|
|
```text
|
|
edge> /nodes
|
|
[edge] sent run_id=...
|
|
[node-*-message] IOP_EXPECTED_REPLY
|
|
[node-*-event] complete
|
|
```
|
|
|
|
## 차단 기준
|
|
|
|
- dev host 또는 Edge-Node TCP port 접근이 불가능하다.
|
|
- 외부 CLI profile 검증에 필요한 CLI 설치, 계정, provider 상태가 없다.
|
|
- dev artifact/model/metrics 포트가 기존 field baseline과 충돌한다.
|
|
|
|
## 보고 항목
|
|
|
|
- 실행한 명령:
|
|
- 성공한 검증:
|
|
- 실패/차단된 검증:
|
|
- 생략 사유:
|
|
- 남은 위험:
|
|
|
|
## 금지 사항
|
|
|
|
- secret, token, 개인 endpoint 원문은 tracked 파일에 기록하지 않는다.
|
|
- field baseline 포트(`18080`, `18081`, `19090`, `19092`)를 dev 전용 포트로 재사용하지 않는다.
|