package services import ( "strings" "testing" ) // 回归:DaemonSet 模式的"只采集这些命名空间"必须真正渲染进 promtail 配置, // 否则前端多选形同虚设(用户选了 astralx,实际还是全集群在采)。 func TestDaemonsetTargetNamespacesFilter(t *testing.T) { base := func(ns []string) string { return PromtailDaemonsetYAML("log", "http://loki.log.svc:3100", "c1", "", ns, "", nil) } // 1) 空 = 全集群:不应出现 namespaces 白名单 all := base(nil) if strings.Contains(all, "namespaces:") { t.Error("targetNamespaces 为空时不应生成命名空间白名单(应为全集群采集)") } // 2) 指定一个命名空间:必须出现白名单 one := base([]string{"astralx"}) if !strings.Contains(one, "namespaces:") { t.Fatal("targetNamespaces=[astralx] 时没有生成 namespaces 白名单") } if !strings.Contains(one, "astralx") { t.Error("白名单里没有 astralx") } // 3) 多个命名空间都要在 multi := base([]string{"astralx", "default"}) for _, want := range []string{"astralx", "default"} { if !strings.Contains(multi, want) { t.Errorf("多选时白名单缺少 %q", want) } } }