package bootstrap import ( "context" "net" "testing" "iop/packages/go/config" ) // TestNewRuntimeWiresControlPlaneConnector verifies that NewRuntime always // wires a non-nil ControlPlane connector regardless of config. func TestNewRuntimeWiresControlPlaneConnector(t *testing.T) { cfg := newTestConfig() rt, err := NewRuntime(cfg) if err != nil { t.Fatalf("NewRuntime: %v", err) } if rt.ControlPlane == nil { t.Fatal("expected non-nil ControlPlane connector") } } // TestNewRuntimeWiresStatusProviderIntoConnector verifies that NewRuntime wires // the edge service as the Control Plane connector's status provider, so status // requests are answered from the Edge-owned node snapshot surface. func TestNewRuntimeWiresStatusProviderIntoConnector(t *testing.T) { cfg := newTestConfig() rt, err := NewRuntime(cfg) if err != nil { t.Fatalf("NewRuntime: %v", err) } if !rt.ControlPlane.StatusProviderConfigured() { t.Fatal("expected NewRuntime to wire a status provider into the connector") } } // TestNewRuntimeWiresNodeEventBusIntoConnector verifies that node lifecycle // events are relayed through the shared events.Bus boundary. func TestNewRuntimeWiresNodeEventBusIntoConnector(t *testing.T) { cfg := newTestConfig() rt, err := NewRuntime(cfg) if err != nil { t.Fatalf("NewRuntime: %v", err) } if !rt.ControlPlane.NodeEventBusConfigured() { t.Fatal("expected NewRuntime to wire the node event bus into the connector") } } // TestRuntimeStartsControlPlaneConnectorWhenEnabled verifies that Start does // not fail when a Control Plane connector is configured with a local fake // server accepting hello. Uses a local TCP fake endpoint. func TestRuntimeStartsControlPlaneConnectorWhenEnabled(t *testing.T) { // Start a minimal fake Control Plane server. ln, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { t.Fatalf("listen fake cp: %v", err) } cpAddr := ln.Addr().String() go func() { // Accept and immediately close; connector will fail hello and retry, // but Start() itself must succeed (connector errors are async). conn, err := ln.Accept() if err != nil { return } _ = conn.Close() _ = ln.Close() }() cfg := newTestConfig() cfg.ControlPlane = config.EdgeControlPlaneConf{ Enabled: true, WireAddr: cpAddr, ReconnectIntervalSec: 60, } rt, err := NewRuntime(cfg) if err != nil { t.Fatalf("NewRuntime: %v", err) } if !rt.ControlPlane.IsEnabled() { t.Fatal("expected connector IsEnabled()==true") } ctx := context.Background() if err := rt.Start(ctx); err != nil { t.Fatalf("Start with enabled connector: %v", err) } if err := rt.Stop(); err != nil { t.Fatalf("Stop: %v", err) } } // TestRuntimeStopsControlPlaneConnector verifies that Stop() reaches the // ControlPlane connector. A disabled connector is used so no real network // activity occurs. func TestRuntimeStopsControlPlaneConnector(t *testing.T) { cfg := newTestConfig() // disabled connector; Start/Stop must be no-ops on the connector side. cfg.ControlPlane = config.EdgeControlPlaneConf{ Enabled: false, WireAddr: "", } rt, err := NewRuntime(cfg) if err != nil { t.Fatalf("NewRuntime: %v", err) } ctx := context.Background() if err := rt.Start(ctx); err != nil { t.Fatalf("Start: %v", err) } if err := rt.Stop(); err != nil { t.Fatalf("Stop: %v", err) } // After Stop, the connector must be in a stopped-or-no-op state. // For disabled connector, CurrentState is Disconnected (never started). // Calling Stop again must not panic. rt.ControlPlane.Stop() }