mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
723d834c1a
* It was necessary to add default ports for fasthttp client. After migration to the std.httpclient it's no longer needed. * An additional configuration is required at proxy servers with implicitly set 80/443 ports to the host header (such as HA proxy. It's expected that after upgrade __address_ label may change. But it should be rare case. 80/443 ports are not widely used at monitoring ecosystem. And it shouldn't have much impact. Related issue https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6792 Co-authored-by: Nikolay <nik@victoriametrics.com>
58 lines
2.5 KiB
Go
58 lines
2.5 KiB
Go
package promrelabel
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/promutils"
|
|
)
|
|
|
|
func TestGetScrapeURL(t *testing.T) {
|
|
f := func(labelsStr, expectedScrapeURL, expectedAddress string) {
|
|
t.Helper()
|
|
labels := promutils.MustNewLabelsFromString(labelsStr)
|
|
scrapeURL, address := GetScrapeURL(labels, nil)
|
|
if scrapeURL != expectedScrapeURL {
|
|
t.Fatalf("unexpected scrapeURL; got %q; want %q", scrapeURL, expectedScrapeURL)
|
|
}
|
|
if address != expectedAddress {
|
|
t.Fatalf("unexpected address; got %q; want %q", address, expectedAddress)
|
|
}
|
|
}
|
|
|
|
// Missing __address__
|
|
f("{}", "", "")
|
|
f(`{foo="bar"}`, "", "")
|
|
|
|
// __address__ without port
|
|
f(`{__address__="foo"}`, "http://foo/metrics", "foo")
|
|
|
|
// __address__ with explicit port
|
|
f(`{__address__="foo:1234"}`, "http://foo:1234/metrics", "foo:1234")
|
|
|
|
// explicit __scheme__
|
|
f(`{__address__="foo",__scheme__="https"}`, "https://foo/metrics", "foo")
|
|
f(`{__address__="foo:1234",__scheme__="https"}`, "https://foo:1234/metrics", "foo:1234")
|
|
|
|
// explicit __metrics_path__
|
|
f(`{__address__="foo",__metrics_path__="abc"}`, "http://foo/abc", "foo")
|
|
f(`{__address__="foo",__metrics_path__="/abc"}`, "http://foo/abc", "foo")
|
|
f(`{__address__="foo",__metrics_path__="/ab/c?d=ef&aa=bb"}`, "http://foo/ab/c?d=ef&aa=bb", "foo")
|
|
|
|
// explitit __param_*
|
|
f(`{__address__="foo",__param_x="y"}`, "http://foo/metrics?x=y", "foo")
|
|
f(`{__address__="foo",__param_x="y",__param_y="aa"}`, "http://foo/metrics?x=y&y=aa", "foo")
|
|
f(`{__address__="foo",__param_x="y",__metrics_path__="?abc=de"}`, "http://foo/?abc=de&x=y", "foo")
|
|
f(`{__address__="foo",__param_abc="y",__metrics_path__="?abc=de"}`, "http://foo/?abc=de&abc=y", "foo")
|
|
|
|
// __address__ with metrics path and/or scheme
|
|
f(`{__address__="foo/bar/baz?abc=de"}`, "http://foo/bar/baz?abc=de", "foo")
|
|
f(`{__address__="foo:784/bar/baz?abc=de"}`, "http://foo:784/bar/baz?abc=de", "foo:784")
|
|
f(`{__address__="foo:784/bar/baz?abc=de",__param_xx="yy"}`, "http://foo:784/bar/baz?abc=de&xx=yy", "foo:784")
|
|
f(`{__address__="foo:784/bar/baz?abc=de",__param_xx="yy",__scheme__="https"}`, "https://foo:784/bar/baz?abc=de&xx=yy", "foo:784")
|
|
f(`{__address__="http://foo/bar/baz?abc=de",__param_xx="yy"}`, "http://foo/bar/baz?abc=de&xx=yy", "foo")
|
|
f(`{__address__="https://foo/bar/baz?abc=de",__param_xx="yy"}`, "https://foo/bar/baz?abc=de&xx=yy", "foo")
|
|
|
|
// __address__ with 80 or 443 as port
|
|
f(`{__address__="http://foo:80"}`, "http://foo:80/metrics", "foo:80")
|
|
f(`{__address__="https://foo:443"}`, "https://foo:443/metrics", "foo:443")
|
|
}
|