이슈 #441
진행중Desktop SDK 스모크 테스트 클라이언트 (alphea-rpc/cmd/sdktest) — GoTrue + NodeService 흐름
0%
설명
배경¶
GoTrue + NodeService challenge-signature + ConnectNode bidi 의 새 인증/통신 흐름을 Android 앱 재빌드 없이 빠르게 검증할 수 있는 데스크톱 (macOS/Linux) CLI 가 필요했다. sdk/auth.go 의 Authenticate* 가 제거된 RPC 를 호출하는 stale 상태라, 새 흐름의 reference implementation 이 별도로 존재해야 모바일 SDK 재작성(#439) 의 청사진이 된다.
작업 내용¶
-
alphea-rpc/cmd/sdktest/main.go— Connect RPC + GoTrue REST + secp256k1 서명을 직접 호출하는 CLI -
alphea-rpc/cmd/sdktest/README.md— 사용법 -
alphea-rpc/Makefile—make sdktest ARGS="..."타겟 추가
지원 명령¶
keygen 노드 secp256k1 키페어 생성/저장
signup GoTrue 사용자 생성 → user JWT
login GoTrue 로그인
refresh user JWT 갱신
node-register NodeChallenge + RegisterNode (user JWT bearer)
connect ConnectNode bidi 스트림 (sdk.NodeAgent)
vfs-read/write/list VFS smoke (Phase 1 후 dFS 명령으로 교체 예정)
state 저장된 상태 조회
State 는 ~/.alphea/sdktest.json 에 저장.
흐름¶
keygen → signup/login → node-register → connect
↓
(user JWT bearer)
NodeChallenge + sign + RegisterNode
↓
node JWT (typ:"node", sub:node_id)
↓
ConnectNode bidi
DoD¶
-
make sdktest ARGS="..."로 모든 명령 동작 -
GoTrue user JWT 로
NodeService.RegisterNode호출 성공 (owner_user_id 매핑) - ConnectNode bidi 스트림 유지 (JobAssigned / BalanceUpdate 이벤트 수신)
-
후속: Phase 0.7
wallet-login/ Phase 1dfs-*명령 추가
관련 이슈¶
HP Henry Park이(가) 6달 전에 변경
- 상태을(를) 신규에서 해결(으)로 변경되었습니다.
sdktest CLI 완성¶
commit:server|94d7be4
결과물¶
-
alphea-rpc/cmd/sdktest/main.go— Connect RPC + GoTrue REST + secp256k1 서명 CLI -
alphea-rpc/cmd/sdktest/README.md— 사용법 -
Makefile에make sdktest ARGS="..."타겟 추가
지원 명령¶
keygen / signup / login / refresh / node-register / connect / vfs-read·write·list / state. State 는 ~/.alphea/sdktest.json 에 저장.
DoD¶
-
make sdktest ARGS="..."로 모든 명령 동작 -
GoTrue user JWT 로
NodeService.RegisterNode호출 성공 (owner_user_id 매핑) - ConnectNode bidi 스트림 유지 (JobAssigned / BalanceUpdate)
-
후속: Phase 0.7
wallet-login, Phase 1dfs-*명령 추가 (별도 이슈)
비고¶
Mobile SDK GoTrue backport (#439 / dceda06) 가 push 됐으므로 sdktest 와 SDK 실제 구현 사이의 정렬 검증 필요.
HP Henry Park이(가) 6달 전에 변경
HP Henry Park이(가) 6달 전에 변경
sdktest dev loop 구성¶
commit:server|a2aaa74 에서 sdktest 개발 루프를 운영 토폴로지와 동일하게 구성하는 Makefile 타겟 5개 추가:
-
make dev-up— 전체 compose (postgres + gotrue + redis + server) 운영 동등 -
make dev-deps— deps 만 (빠른 서버 개발 루프용) -
make dev-server— 호스트에서go run ./cmd/server(PORT=3001) make dev-down-
make dev-logs— server / gotrue / postgres follow
이로 sdktest 구현·검증 루프가 일관되고, Phase 0.7 (#443) 의 WalletChallenge/Verify 같은 RPC 도입 때 다음 패턴으로 테스트 가능:
make dev-deps # postgres + gotrue + redis
make dev-server # 서버 코드 수정 후 즉시 반영
make sdktest ARGS="..." # 검증
HP Henry Park이(가) 6달 전에 변경
dev compose override 추가¶
commit:server|52156c7
로컬 dev 루프에서 SigNoz 스택이 없는 박스에서도 make dev-up 이 성공하도록 docker-compose.local.yml 추가:
-
server.OTEL_EXPORTER_OTLP_ENDPOINT빈 값 (OTel OFF graceful) -
server.networks를[default]만으로 replace -
signoz-net을external:false로 만들어 compose 가 ad-hoc 로컬 네트워크 생성
Makefile dev-* 타겟이 새 COMPOSE_DEV 변수로 -f docker-compose.yml -f docker-compose.local.yml 을 항상 묶음. 운영 compose 는 그대로 두고 로컬만 덼어쓰는 패턴.
이제 sdktest 루프가 SigNoz 설치 없는 개발 매시도 탄탄하게 도는 상태.
HP Henry Park이(가) 6달 전에 변경
SDK smoke harness 추가¶
commit:server|6c63ffc
sdktest 를 회귀 테스트 엔진으로 쓸 수 있게 완성:
-
make smoke(dev-up+smoke-check) /make smoke-check신규 타겟 - 자동 시퀀스: /monitor + /monitor/test-client HTTP 200 → signup → state → keygen → node-register → connect (3s)
- 임시 state 파일은 trap 으로 자동 정리
- COMPOSE_DEV 가
--env-file .env.sdktest사용으로 dev env 격리 -
.env.sdktest.example신규 — dev 친화 기본값 -
TEST_CLIENT_CHECKLIST.md신규 — Phase 별 회귀 체크리스트. 새 SDK/RPC 추가 시 같은 PR 에서 항목 추가 룰이 박힌 형태
Phase 0 자동화 항목 모두 철덼. Phase 0.7 (#443) / Phase 1 dFS / #444 production guards 도 체크리스트에 트래킹되어 있다.
CP Chris Park이(가) 6달 전에 변경
- 담당자을(를) James Lee에서 Henry Park(으)로 변경되었습니다.