aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--middleware/metrics/metrics.go5
-rw-r--r--middleware/metrics/metrics_test.go4
-rw-r--r--middleware/metrics/setup.go4
-rw-r--r--test/metrics_test.go19
4 files changed, 18 insertions, 14 deletions
diff --git a/middleware/metrics/metrics.go b/middleware/metrics/metrics.go
index 5f93ec2f5..ee0e0ed16 100644
--- a/middleware/metrics/metrics.go
+++ b/middleware/metrics/metrics.go
@@ -61,6 +61,7 @@ func (m *Metrics) OnStartup() error {
}
m.ln = ln
+ ListenAddr = m.ln.Addr().String()
m.mux = http.NewServeMux()
@@ -97,3 +98,7 @@ func keys(m map[string]bool) []string {
}
return sx
}
+
+// ListenAddr is assigned the address of the prometheus listener. Its use is mainly in tests where
+// we listen on "localhost:0" and need to retrieve the actual address.
+var ListenAddr string
diff --git a/middleware/metrics/metrics_test.go b/middleware/metrics/metrics_test.go
index 4272350f4..f93021fa5 100644
--- a/middleware/metrics/metrics_test.go
+++ b/middleware/metrics/metrics_test.go
@@ -13,7 +13,7 @@ import (
)
func TestMetrics(t *testing.T) {
- met := &Metrics{Addr: Addr, zoneMap: make(map[string]bool)}
+ met := &Metrics{Addr: "localhost:0", zoneMap: make(map[string]bool)}
if err := met.OnStartup(); err != nil {
t.Fatalf("Failed to start metrics handler: %s", err)
}
@@ -71,7 +71,7 @@ func TestMetrics(t *testing.T) {
t.Fatalf("Test %d: Expected no error, but got %s", i, err)
}
- result := mtest.Scrape(t, "http://"+Addr+"/metrics")
+ result := mtest.Scrape(t, "http://"+ListenAddr+"/metrics")
if tc.expectedValue != "" {
got, _ := mtest.MetricValue(tc.metric, result)
diff --git a/middleware/metrics/setup.go b/middleware/metrics/setup.go
index 6c52aead3..de82a1f1b 100644
--- a/middleware/metrics/setup.go
+++ b/middleware/metrics/setup.go
@@ -38,7 +38,7 @@ func setup(c *caddy.Controller) error {
func prometheusParse(c *caddy.Controller) (*Metrics, error) {
var (
- met = &Metrics{Addr: Addr, zoneMap: make(map[string]bool)}
+ met = &Metrics{Addr: addr, zoneMap: make(map[string]bool)}
err error
)
@@ -88,4 +88,4 @@ func prometheusParse(c *caddy.Controller) (*Metrics, error) {
var metricsOnce sync.Once
// Addr is the address the where the metrics are exported by default.
-const Addr = "localhost:9153"
+const addr = "localhost:9153"
diff --git a/test/metrics_test.go b/test/metrics_test.go
index d122f2545..bdf3fa382 100644
--- a/test/metrics_test.go
+++ b/test/metrics_test.go
@@ -20,12 +20,12 @@ import (
func TestMetricsServer(t *testing.T) {
corefile := `example.org:0 {
chaos CoreDNS-001 miek@miek.nl
- prometheus
+ prometheus localhost:0
}
example.com:0 {
proxy . 8.8.4.4:53
- prometheus
+ prometheus localhost:0
}
`
srv, err := CoreDNSServer(corefile)
@@ -40,7 +40,7 @@ func TestMetricsRefused(t *testing.T) {
corefile := `example.org:0 {
proxy . 8.8.8.8:53
- prometheus
+ prometheus localhost:0
}
`
srv, err := CoreDNSServer(corefile)
@@ -58,7 +58,7 @@ func TestMetricsRefused(t *testing.T) {
t.Fatalf("Could not send message: %s", err)
}
- data := mtest.Scrape(t, "http://"+metrics.Addr+"/metrics")
+ data := mtest.Scrape(t, "http://"+metrics.ListenAddr+"/metrics")
got, labels := mtest.MetricValue(metricName, data)
if got != "1" {
@@ -77,7 +77,7 @@ func TestMetricsCache(t *testing.T) {
corefile := `example.net:0 {
proxy . 8.8.8.8:53
- prometheus
+ prometheus localhost:0
cache
}
`
@@ -96,7 +96,7 @@ func TestMetricsCache(t *testing.T) {
t.Fatalf("Could not send message: %s", err)
}
- data := mtest.Scrape(t, "http://"+metrics.Addr+"/metrics")
+ data := mtest.Scrape(t, "http://"+metrics.ListenAddr+"/metrics")
// Get the value for the metrics where the one of the labels values matches "success"
got, _ := mtest.MetricValueLabel(metricName, cache.Success, data)
@@ -111,12 +111,11 @@ func TestMetricsAuto(t *testing.T) {
t.Fatal(err)
}
- // TODO(miek): Random port as string and use that later?
corefile := `org:0 {
auto {
directory ` + tmpdir + ` db\.(.*) {1} 1
}
- prometheus
+ prometheus localhost:0
}
`
@@ -149,7 +148,7 @@ func TestMetricsAuto(t *testing.T) {
metricName := "coredns_dns_request_count_total" //{zone, proto, family}
- data := mtest.Scrape(t, "http://"+metrics.Addr+"/metrics")
+ data := mtest.Scrape(t, "http://"+metrics.ListenAddr+"/metrics")
// Get the value for the metrics where the one of the labels values matches "example.org."
got, _ := mtest.MetricValueLabel(metricName, "example.org.", data)
@@ -164,7 +163,7 @@ func TestMetricsAuto(t *testing.T) {
t.Fatalf("Could not send message: %s", err)
}
- data = mtest.Scrape(t, "http://"+metrics.Addr+"/metrics")
+ data = mtest.Scrape(t, "http://"+metrics.ListenAddr+"/metrics")
got, _ = mtest.MetricValueLabel(metricName, "example.org.", data)
if got != "1" {