From 9f0e911b9d9e836cb5ac20204e268cd2c3a92e03 Mon Sep 17 00:00:00 2001 From: Naeel Date: Sun, 26 Apr 2026 11:46:15 +0300 Subject: [PATCH] layer1: stabilize namespace summary contract --- pkg/utils/namespace_manager.go | 3 +++ pkg/utils/namespace_manager_test.go | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/pkg/utils/namespace_manager.go b/pkg/utils/namespace_manager.go index c1ba15f4..4f0e7ba0 100644 --- a/pkg/utils/namespace_manager.go +++ b/pkg/utils/namespace_manager.go @@ -283,6 +283,9 @@ func (m *inMemoryNamespaceManager) Summary() NamespaceManagerSummary { SourceCounts: make(map[NamespaceSource]int), Subscribers: m.SnapshotSubscribers(), } + if summary.Subscribers == nil { + summary.Subscribers = []string{} + } for _, record := range records { summary.PhaseCounts[record.Phase]++ summary.SourceCounts[record.Source]++ diff --git a/pkg/utils/namespace_manager_test.go b/pkg/utils/namespace_manager_test.go index cecec3d2..c2930453 100644 --- a/pkg/utils/namespace_manager_test.go +++ b/pkg/utils/namespace_manager_test.go @@ -582,6 +582,23 @@ func TestLogNamespaceManagerSummary(t *testing.T) { LogNamespaceManagerSummary(logger, "namespace summary", summary) } + +func TestNamespaceManagerSummaryEmptyContract(t *testing.T) { + manager := NewNamespaceManager() + summary := manager.Summary() + if summary.PhaseCounts == nil { + t.Fatalf("expected phase counts map to be initialized") + } + if summary.SourceCounts == nil { + t.Fatalf("expected source counts map to be initialized") + } + if summary.Subscribers == nil { + t.Fatalf("expected subscribers slice to be initialized") + } + if len(summary.Subscribers) != 0 { + t.Fatalf("expected no subscribers in empty summary") + } +} func TestLogNamespaceManagerSummaryWithNilLogger(t *testing.T) { LogNamespaceManagerSummary(nil, "ignored", NamespaceManagerSummary{TotalNamespaces: 1}) }