X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/18b51f2620505d4efbc9de322e24d5218a5ca19b..3a3d67ccee068a85aa3b79c5abd40170223071e3:/services/keepstore/mounts_test.go diff --git a/services/keepstore/mounts_test.go b/services/keepstore/mounts_test.go index 9fa0090aa7..ac30c369a5 100644 --- a/services/keepstore/mounts_test.go +++ b/services/keepstore/mounts_test.go @@ -12,6 +12,7 @@ import ( "net/http/httptest" "git.curoverse.com/arvados.git/sdk/go/arvadostest" + "github.com/prometheus/client_golang/prometheus" check "gopkg.in/check.v1" ) @@ -27,15 +28,17 @@ func (s *MountsSuite) SetUpTest(c *check.C) { KeepVM = s.vm theConfig = DefaultConfig() theConfig.systemAuthToken = arvadostest.DataManagerToken - theConfig.Start() - s.rtr = MakeRESTRouter(testCluster) + theConfig.ManagementToken = arvadostest.ManagementToken + r := prometheus.NewRegistry() + theConfig.Start(r) + s.rtr = MakeRESTRouter(testCluster, r) } func (s *MountsSuite) TearDownTest(c *check.C) { s.vm.Close() KeepVM = nil theConfig = DefaultConfig() - theConfig.Start() + theConfig.Start(prometheus.NewRegistry()) } func (s *MountsSuite) TestMounts(c *check.C) { @@ -104,6 +107,10 @@ func (s *MountsSuite) TestMetrics(c *check.C) { s.call("PUT", "/"+TestHash, "", TestBlock) s.call("PUT", "/"+TestHash2, "", TestBlock2) resp := s.call("GET", "/metrics.json", "", nil) + c.Check(resp.Code, check.Equals, http.StatusUnauthorized) + resp = s.call("GET", "/metrics.json", "foobar", nil) + c.Check(resp.Code, check.Equals, http.StatusForbidden) + resp = s.call("GET", "/metrics.json", arvadostest.ManagementToken, nil) c.Check(resp.Code, check.Equals, http.StatusOK) var j []struct { Name string @@ -126,7 +133,9 @@ func (s *MountsSuite) TestMetrics(c *check.C) { } json.NewDecoder(resp.Body).Decode(&j) found := make(map[string]bool) + names := map[string]bool{} for _, g := range j { + names[g.Name] = true for _, m := range g.Metric { if len(m.Label) == 2 && m.Label[0].Name == "code" && m.Label[0].Value == "200" && m.Label[1].Name == "method" && m.Label[1].Value == "put" { c.Check(m.Summary.SampleCount, check.Equals, "2") @@ -138,13 +147,31 @@ func (s *MountsSuite) TestMetrics(c *check.C) { } c.Check(found["request_duration_seconds"], check.Equals, true) c.Check(found["time_to_status_seconds"], check.Equals, true) + + metricsNames := []string{ + "arvados_keepstore_bufferpool_buffers_in_use", + "arvados_keepstore_bufferpool_buffers_max", + "arvados_keepstore_bufferpool_bytes_allocated", + "arvados_keepstore_pull_queue_in_progress", + "arvados_keepstore_pull_queue_queued", + "arvados_keepstore_requests_current", + "arvados_keepstore_requests_max", + "arvados_keepstore_trash_queue_in_progress", + "arvados_keepstore_trash_queue_queued", + "request_duration_seconds", + "time_to_status_seconds", + } + for _, m := range metricsNames { + _, ok := names[m] + c.Check(ok, check.Equals, true) + } } func (s *MountsSuite) call(method, path, tok string, body []byte) *httptest.ResponseRecorder { resp := httptest.NewRecorder() req, _ := http.NewRequest(method, path, bytes.NewReader(body)) if tok != "" { - req.Header.Set("Authorization", "OAuth2 "+tok) + req.Header.Set("Authorization", "Bearer "+tok) } s.rtr.ServeHTTP(resp, req) return resp