iop/apps/edge/internal/bootstrap/runtime_test.go
toki b4124f0bd6 feat: CLI setup, edge/node transport refactor, and infrastructure updates
- Add CLI core setup for edge and node services
- Refactor edge transport layer (server, integration tests)
- Refactor node transport layer (parser, session, heartbeat, client)
- Add main_test.go files for edge and node commands
- Add input package for edge service
- Add go.work and go.work.sum for workspace support
- Update configs, docs, and project rules
2026-05-20 16:37:42 +09:00

88 lines
2.2 KiB
Go

package bootstrap
import (
"testing"
"iop/packages/config"
)
func newTestConfig() *config.EdgeConfig {
return &config.EdgeConfig{
Server: config.EdgeServerConf{Listen: "127.0.0.1:0"},
Logging: config.LoggingConf{Level: "error"},
Metrics: config.MetricsConf{Port: 0},
Nodes: []config.NodeDefinition{
{ID: "node-1", Alias: "alias-1", Token: "tok-1"},
},
}
}
func TestNewRuntimeSeedsNodeStore(t *testing.T) {
cfg := newTestConfig()
rt, err := NewRuntime(cfg)
if err != nil {
t.Fatalf("NewRuntime: %v", err)
}
if rt.NodeStore == nil {
t.Fatal("NodeStore is nil")
}
rec, ok := rt.NodeStore.FindByToken("tok-1")
if !ok {
t.Fatal("expected node record seeded by token tok-1")
}
if rec.ID != "node-1" || rec.Alias != "alias-1" {
t.Errorf("unexpected record: id=%q alias=%q", rec.ID, rec.Alias)
}
if rt.Registry == nil || rt.EventBus == nil || rt.Service == nil || rt.Server == nil || rt.Logger == nil {
t.Error("runtime dependencies must be wired by NewRuntime")
}
}
func TestRuntimeWiresTransportHandlers(t *testing.T) {
cfg := newTestConfig()
rt, err := NewRuntime(cfg)
if err != nil {
t.Fatalf("NewRuntime: %v", err)
}
if rt.Server.HasRunEventHandler() || rt.Server.HasNodeEventHandler() {
t.Fatal("handlers must not be wired before wireHandlers")
}
rt.wireHandlers()
if !rt.Server.HasRunEventHandler() {
t.Error("run event handler not wired")
}
if !rt.Server.HasNodeEventHandler() {
t.Error("node event handler not wired")
}
}
func TestNewRuntimeWiresInputManager(t *testing.T) {
cfg := newTestConfig()
rt, err := NewRuntime(cfg)
if err != nil {
t.Fatalf("NewRuntime: %v", err)
}
if rt.Input == nil {
t.Fatal("Input manager is nil")
}
if rt.Input.OpenAI == nil {
t.Fatal("Input.OpenAI is nil")
}
if rt.Input.A2A == nil {
t.Fatal("Input.A2A is nil")
}
}
func TestNewRuntimeRejectsDuplicateToken(t *testing.T) {
cfg := &config.EdgeConfig{
Server: config.EdgeServerConf{Listen: "127.0.0.1:0"},
Logging: config.LoggingConf{Level: "error"},
Nodes: []config.NodeDefinition{
{ID: "node-1", Alias: "a1", Token: "dup"},
{ID: "node-2", Alias: "a2", Token: "dup"},
},
}
if _, err := NewRuntime(cfg); err == nil {
t.Fatal("expected error on duplicate token seed")
}
}