134 lines
4.9 KiB
Go
134 lines
4.9 KiB
Go
package supervisor
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/example/remote-access-platform/agents/rap-node-agent/internal/client"
|
|
)
|
|
|
|
func TestStubSupervisorReportsDegradedForEnabledWorkload(t *testing.T) {
|
|
statuses, err := (StubSupervisor{Version: "test"}).Apply(context.Background(), []client.DesiredWorkload{
|
|
{ServiceType: "rdp-worker", DesiredState: "enabled", RuntimeMode: "container"},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("apply desired workload: %v", err)
|
|
}
|
|
if len(statuses) != 1 {
|
|
t.Fatalf("statuses length = %d", len(statuses))
|
|
}
|
|
if statuses[0].ReportedState != "degraded" {
|
|
t.Fatalf("ReportedState = %q", statuses[0].ReportedState)
|
|
}
|
|
}
|
|
|
|
func TestStubSupervisorReportsStoppedForDisabledWorkload(t *testing.T) {
|
|
statuses, err := (StubSupervisor{Version: "test"}).Apply(context.Background(), []client.DesiredWorkload{
|
|
{ServiceType: "relay-node", DesiredState: "disabled", RuntimeMode: "container"},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("apply desired workload: %v", err)
|
|
}
|
|
if statuses[0].ReportedState != "stopped" {
|
|
t.Fatalf("ReportedState = %q", statuses[0].ReportedState)
|
|
}
|
|
}
|
|
|
|
func TestStubSupervisorRunsInternalSyntheticEchoWorkload(t *testing.T) {
|
|
statuses, err := (StubSupervisor{Version: "test"}).Apply(context.Background(), []client.DesiredWorkload{
|
|
{ServiceType: "synthetic.echo", DesiredState: "enabled", RuntimeMode: "native"},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("apply desired workload: %v", err)
|
|
}
|
|
if statuses[0].ReportedState != "running" {
|
|
t.Fatalf("ReportedState = %q", statuses[0].ReportedState)
|
|
}
|
|
if statuses[0].StatusPayload["reason"] != "internal_synthetic_echo_ready" {
|
|
t.Fatalf("reason = %v", statuses[0].StatusPayload["reason"])
|
|
}
|
|
if statuses[0].StatusPayload["execution_mode"] != "builtin" {
|
|
t.Fatalf("execution_mode = %v", statuses[0].StatusPayload["execution_mode"])
|
|
}
|
|
}
|
|
|
|
func TestStubSupervisorReportsBuiltinFabricServicesRunning(t *testing.T) {
|
|
statuses, err := (StubSupervisor{Version: "test"}).Apply(context.Background(), []client.DesiredWorkload{
|
|
{ServiceType: "core-mesh", DesiredState: "enabled", RuntimeMode: "container"},
|
|
{ServiceType: "mesh-listener", DesiredState: "enabled", RuntimeMode: "container"},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("apply desired workload: %v", err)
|
|
}
|
|
if len(statuses) != 2 {
|
|
t.Fatalf("statuses length = %d", len(statuses))
|
|
}
|
|
for _, status := range statuses {
|
|
if status.ReportedState != "running" {
|
|
t.Fatalf("ReportedState = %q", status.ReportedState)
|
|
}
|
|
if status.StatusPayload["reason"] != "builtin_node_agent_service_ready" {
|
|
t.Fatalf("reason = %v", status.StatusPayload["reason"])
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestStubSupervisorKeepsUnsupportedEnabledWorkloadDegraded(t *testing.T) {
|
|
statuses, err := (StubSupervisor{Version: "test"}).Apply(context.Background(), []client.DesiredWorkload{
|
|
{ServiceType: "rdp-worker", DesiredState: "enabled", RuntimeMode: "container"},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("apply desired workload: %v", err)
|
|
}
|
|
if statuses[0].ReportedState != "degraded" {
|
|
t.Fatalf("ReportedState = %q", statuses[0].ReportedState)
|
|
}
|
|
if statuses[0].StatusPayload["reason"] != "service_runtime_not_implemented" {
|
|
t.Fatalf("reason = %v", statuses[0].StatusPayload["reason"])
|
|
}
|
|
}
|
|
|
|
func TestStubSupervisorRunsRDPWorkerAdapterContractProbeOnly(t *testing.T) {
|
|
statuses, err := (StubSupervisor{Version: "test"}).Apply(context.Background(), []client.DesiredWorkload{
|
|
{
|
|
ServiceType: "rdp-worker",
|
|
DesiredState: "enabled",
|
|
RuntimeMode: "native",
|
|
Config: map[string]any{
|
|
"adapter_contract_probe": true,
|
|
},
|
|
},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("apply desired workload: %v", err)
|
|
}
|
|
if statuses[0].ReportedState != "running" {
|
|
t.Fatalf("ReportedState = %q", statuses[0].ReportedState)
|
|
}
|
|
if statuses[0].StatusPayload["reason"] != "remote_workspace_adapter_contract_probe_ready" {
|
|
t.Fatalf("reason = %v", statuses[0].StatusPayload["reason"])
|
|
}
|
|
if statuses[0].StatusPayload["service_class"] != "remote_workspace" {
|
|
t.Fatalf("service_class = %v", statuses[0].StatusPayload["service_class"])
|
|
}
|
|
if statuses[0].StatusPayload["backend_relay_steady_state"] != false {
|
|
t.Fatalf("backend_relay_steady_state = %v", statuses[0].StatusPayload["backend_relay_steady_state"])
|
|
}
|
|
channels, ok := statuses[0].StatusPayload["channels"].([]map[string]any)
|
|
if !ok || len(channels) != 9 {
|
|
t.Fatalf("channels = %#v", statuses[0].StatusPayload["channels"])
|
|
}
|
|
if channels[0]["name"] != "input" || channels[0]["priority"] != "critical" || channels[0]["droppable"] != true || channels[0]["may_block_input"] != false {
|
|
t.Fatalf("unexpected input channel: %#v", channels[0])
|
|
}
|
|
frameBatch, ok := statuses[0].StatusPayload["frame_batch_contract"].(map[string]any)
|
|
if !ok {
|
|
t.Fatalf("frame_batch_contract = %#v", statuses[0].StatusPayload["frame_batch_contract"])
|
|
}
|
|
if frameBatch["schema_version"] != "rap.remote_workspace_frame_batch.v1" ||
|
|
frameBatch["payload_forwarding"] != "not_implemented" ||
|
|
frameBatch["service_class"] != "remote_workspace" {
|
|
t.Fatalf("unexpected frame batch contract: %#v", frameBatch)
|
|
}
|
|
}
|