X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b727cb3c8c32389f03e6ae71ad128c518a2c2a8c..0be45d32255d83c410aad4e34560c478917ee6c4:/services/keep-web/server_test.go diff --git a/services/keep-web/server_test.go b/services/keep-web/server_test.go index 6688cc2ee7..7e738cb9f3 100644 --- a/services/keep-web/server_test.go +++ b/services/keep-web/server_test.go @@ -306,14 +306,19 @@ func (s *IntegrationSuite) TestMetrics(c *check.C) { resp, err := http.DefaultClient.Do(req) c.Assert(err, check.IsNil) c.Check(resp.StatusCode, check.Equals, http.StatusOK) - req, _ = http.NewRequest("GET", origin+"/foo", nil) - req.Host = arvadostest.FooCollection + ".example.com" - req.Header.Set("Authorization", "Bearer "+arvadostest.ActiveToken) - resp, err = http.DefaultClient.Do(req) - c.Assert(err, check.IsNil) - c.Check(resp.StatusCode, check.Equals, http.StatusOK) - buf, _ := ioutil.ReadAll(resp.Body) - c.Check(buf, check.DeepEquals, []byte("foo")) + for i := 0; i < 2; i++ { + req, _ = http.NewRequest("GET", origin+"/foo", nil) + req.Host = arvadostest.FooCollection + ".example.com" + req.Header.Set("Authorization", "Bearer "+arvadostest.ActiveToken) + resp, err = http.DefaultClient.Do(req) + c.Assert(err, check.IsNil) + c.Check(resp.StatusCode, check.Equals, http.StatusOK) + buf, _ := ioutil.ReadAll(resp.Body) + c.Check(buf, check.DeepEquals, []byte("foo")) + resp.Body.Close() + } + + s.testServer.Config.Cache.updateGauges() req, _ = http.NewRequest("GET", origin+"/metrics.json", nil) resp, err = http.DefaultClient.Do(req) @@ -327,6 +332,12 @@ func (s *IntegrationSuite) TestMetrics(c *check.C) { Value float64 } } + type counter struct { + Value int64 + } + type gauge struct { + Value float64 + } var ents []struct { Name string Help string @@ -336,24 +347,38 @@ func (s *IntegrationSuite) TestMetrics(c *check.C) { Name string Value string } + Counter counter + Gauge gauge Summary summary } } json.NewDecoder(resp.Body).Decode(&ents) - flat := map[string]summary{} + summaries := map[string]summary{} + gauges := map[string]gauge{} + counters := map[string]counter{} for _, e := range ents { for _, m := range e.Metric { labels := map[string]string{} for _, lbl := range m.Label { labels[lbl.Name] = lbl.Value } - flat[e.Name+"/"+labels["method"]+"/"+labels["code"]] = m.Summary + summaries[e.Name+"/"+labels["method"]+"/"+labels["code"]] = m.Summary + counters[e.Name+"/"+labels["method"]+"/"+labels["code"]] = m.Counter + gauges[e.Name+"/"+labels["method"]+"/"+labels["code"]] = m.Gauge } } - c.Check(flat["request_duration_seconds/get/200"].SampleSum, check.Not(check.Equals), 0) - c.Check(flat["request_duration_seconds/get/200"].SampleCount, check.Equals, "2") - c.Check(flat["request_duration_seconds/get/404"].SampleCount, check.Equals, "1") - c.Check(flat["time_to_status_seconds/get/404"].SampleCount, check.Equals, "1") + c.Check(summaries["request_duration_seconds/get/200"].SampleSum, check.Not(check.Equals), 0) + c.Check(summaries["request_duration_seconds/get/200"].SampleCount, check.Equals, "3") + c.Check(summaries["request_duration_seconds/get/404"].SampleCount, check.Equals, "1") + c.Check(summaries["time_to_status_seconds/get/404"].SampleCount, check.Equals, "1") + c.Check(counters["arvados_keepweb_collectioncache_requests//"].Value, check.Equals, int64(2)) + c.Check(counters["arvados_keepweb_collectioncache_api_calls//"].Value, check.Equals, int64(1)) + c.Check(counters["arvados_keepweb_collectioncache_hits//"].Value, check.Equals, int64(1)) + c.Check(counters["arvados_keepweb_collectioncache_pdh_hits//"].Value, check.Equals, int64(1)) + c.Check(counters["arvados_keepweb_collectioncache_permission_hits//"].Value, check.Equals, int64(1)) + c.Check(gauges["arvados_keepweb_collectioncache_cached_manifests//"].Value, check.Equals, float64(1)) + // FooCollection's cached manifest size is 45 ("1f4b0....+45") plus one 51-byte blob signature + c.Check(gauges["arvados_keepweb_collectioncache_cached_manifest_bytes//"].Value, check.Equals, float64(45+51)) // If the Host header indicates a collection, /metrics.json // refers to a file in the collection -- the metrics handler