From 9c6770faa3ec1747bcf79799b6f10a66dd9c3b99 Mon Sep 17 00:00:00 2001 From: Stephen Benjamin Date: Sat, 1 Aug 2026 19:16:53 -0400 Subject: [PATCH] NO-JIRA: Scope HyperShift etcd leader metrics --- test/extended/etcd/leader_changes.go | 13 ++++++++----- test/extended/etcd/leader_changes_test.go | 10 ++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 test/extended/etcd/leader_changes_test.go diff --git a/test/extended/etcd/leader_changes.go b/test/extended/etcd/leader_changes.go index 8b6f55abf54a..31496994d014 100644 --- a/test/extended/etcd/leader_changes.go +++ b/test/extended/etcd/leader_changes.go @@ -28,7 +28,10 @@ var _ = g.Describe("[sig-etcd] etcd", func() { g.It("leader changes are not excessive [Late]", func(ctx g.SpecContext) { controlPlaneTopology, err := exutil.GetControlPlaneTopology(oc) o.Expect(err).NotTo(o.HaveOccurred()) + etcdNamespace := "openshift-etcd" if *controlPlaneTopology == configv1.ExternalTopologyMode { + _, etcdNamespace, err = exutil.GetHypershiftManagementClusterConfigAndNamespace() + o.Expect(err).NotTo(o.HaveOccurred()) oc = exutil.NewHypershiftManagementCLI("default").AsAdmin().WithoutNamespace() } @@ -39,11 +42,7 @@ var _ = g.Describe("[sig-etcd] etcd", func() { testDuration := exutil.DurationSinceStartInSeconds().String() g.By("Examining the number of etcd leadership changes over the run") - etcdNamespace := "openshift-etcd" - if *controlPlaneTopology == configv1.ExternalTopologyMode { - etcdNamespace = "clusters-.*" - } - result, _, err := prometheus.Query(context.Background(), fmt.Sprintf(`max(max by (pod,job) (increase(etcd_server_leader_changes_seen_total{namespace=~"%s"}[%s])))`, etcdNamespace, testDuration), time.Now()) + result, _, err := prometheus.Query(context.Background(), leaderChangesQuery(etcdNamespace, testDuration), time.Now()) o.Expect(err).ToNot(o.HaveOccurred()) vec, ok := result.(model.Vector) @@ -68,3 +67,7 @@ var _ = g.Describe("[sig-etcd] etcd", func() { } }) }) + +func leaderChangesQuery(namespace, duration string) string { + return fmt.Sprintf(`max(max by (pod,job) (increase(etcd_server_leader_changes_seen_total{namespace=%q}[%s])))`, namespace, duration) +} diff --git a/test/extended/etcd/leader_changes_test.go b/test/extended/etcd/leader_changes_test.go new file mode 100644 index 000000000000..d1395ae1f301 --- /dev/null +++ b/test/extended/etcd/leader_changes_test.go @@ -0,0 +1,10 @@ +package etcd + +import "testing" + +func TestLeaderChangesQueryUsesExactNamespace(t *testing.T) { + want := `max(max by (pod,job) (increase(etcd_server_leader_changes_seen_total{namespace="clusters-example"}[2h3m4s])))` + if got := leaderChangesQuery("clusters-example", "2h3m4s"); got != want { + t.Fatalf("unexpected query:\nwant: %s\n got: %s", want, got) + } +}