From 1d199db03e075e8c0c09e6099d06c9a4af91f5e3 Mon Sep 17 00:00:00 2001 From: Mike Spreitzer Date: Sun, 22 Jan 2023 21:46:06 -0500 Subject: [PATCH] Carefully compute request path for metrics Preserve the previx before "api/v1". --- test/e2e/apimachinery/flowcontrol.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/test/e2e/apimachinery/flowcontrol.go b/test/e2e/apimachinery/flowcontrol.go index 6c5510dcde1..6b44a2b7a4d 100644 --- a/test/e2e/apimachinery/flowcontrol.go +++ b/test/e2e/apimachinery/flowcontrol.go @@ -23,6 +23,7 @@ import ( "fmt" "io" "net/http" + "strings" "sync" "sync/atomic" "time" @@ -274,9 +275,17 @@ func createPriorityLevel(ctx context.Context, f *framework.Framework, priorityLe } func getPriorityLevelNominalConcurrency(ctx context.Context, c clientset.Interface, priorityLevelName string) (int32, error) { - resp, err := c.CoreV1().RESTClient().Get().RequestURI("/metrics").DoRaw(ctx) + req := c.CoreV1().RESTClient().Get() + reqURL := req.URL() + // That URL will end with "/api/v1", because we asked for CoreV1 above. + // Replace that part with "/metrics" and leave everything before that unchanged + // because that is what routes to the server. + reqPathOrig := reqURL.EscapedPath() + reqPathMetrics := strings.TrimSuffix(reqPathOrig, "api/v1") + "metrics" + req = req.RequestURI(reqPathMetrics) + resp, err := req.DoRaw(ctx) if err != nil { - return 0, err + return 0, fmt.Errorf("error requesting metrics; request=%#+v, request.URL()=%s: %w", req, req.URL(), err) } sampleDecoder := expfmt.SampleDecoder{ Dec: expfmt.NewDecoder(bytes.NewBuffer(resp), expfmt.FmtText),