iop/apps/edge/internal/service/service_test.go
toki cf3760f394 feat: console emitter interface, persistent status, and profile proto message updates
- Add console emitter interface for event-driven console output
- Implement persistent cancel reason and explicit completion tracking
- Add profile proto message definitions
- Update edge and node transport layers with adapter execution terminology
- Add new packages/events module
- Update architecture documentation and README files
2026-05-16 21:16:48 +09:00

45 lines
1.5 KiB
Go

package service_test
import (
"testing"
"time"
edgeservice "iop/apps/edge/internal/service"
iop "iop/proto/gen/iop"
)
func TestBuildRunRequestNormalizesSessionAndTimeout(t *testing.T) {
req, runID, err := edgeservice.BuildRunRequest(edgeservice.SubmitRunRequest{
Adapter: "cli",
Target: "codex",
Prompt: "hello",
})
if err != nil {
t.Fatalf("BuildRunRequest: %v", err)
}
if runID == "" || req.GetRunId() != runID {
t.Fatalf("run id mismatch: runID=%q req=%q", runID, req.GetRunId())
}
if req.GetSessionId() != edgeservice.DefaultSessionID {
t.Fatalf("SessionId: got %q want %q", req.GetSessionId(), edgeservice.DefaultSessionID)
}
if req.GetTimeoutSec() != edgeservice.DefaultTimeoutSec {
t.Fatalf("TimeoutSec: got %d want %d", req.GetTimeoutSec(), edgeservice.DefaultTimeoutSec)
}
if req.GetSessionMode() != iop.RunSessionMode_RUN_SESSION_MODE_CREATE_IF_MISSING {
t.Fatalf("SessionMode: got %v", req.GetSessionMode())
}
}
func TestBuildUsageStatusRequestAndWaitTimeout(t *testing.T) {
req := edgeservice.BuildUsageStatusRequest("cli", "gemini", "", 0)
if req.GetSessionId() != edgeservice.DefaultSessionID {
t.Fatalf("SessionId: got %q want %q", req.GetSessionId(), edgeservice.DefaultSessionID)
}
if req.GetTimeoutSec() != edgeservice.DefaultTimeoutSec {
t.Fatalf("TimeoutSec: got %d want %d", req.GetTimeoutSec(), edgeservice.DefaultTimeoutSec)
}
if got, want := edgeservice.StatusWaitTimeout(req), 35*time.Second; got != want {
t.Fatalf("StatusWaitTimeout: got %v want %v", got, want)
}
}