diff options
-rw-r--r-- | acceptance_test.go | 32 | ||||
-rw-r--r-- | metrics/metrics.go | 1 | ||||
-rw-r--r-- | metrics/metrics_test.go | 60 |
3 files changed, 27 insertions, 66 deletions
diff --git a/acceptance_test.go b/acceptance_test.go index 1fae9c8f..03e9ec01 100644 --- a/acceptance_test.go +++ b/acceptance_test.go @@ -448,28 +448,48 @@ func TestHttpsOnlyDomainDisabled(t *testing.T) { func TestPrometheusMetricsCanBeScraped(t *testing.T) { skipUnlessEnabled(t) listener := []ListenSpec{{"http", "127.0.0.1", "37003"}} - teardown := RunPagesProcess(t, *pagesBinary, listener, ":42345") + + var apiCalled bool + source := NewGitlabDomainsSourceStub(t, &apiCalled) + defer source.Close() + + gitLabAPISecretKey := CreateGitLabAPISecretKeyFixtureFile(t) + + pagesArgs := []string{"-gitlab-server", source.URL, "-api-secret-key", gitLabAPISecretKey, "-domain-config-source", "gitlab"} + teardown := RunPagesProcessWithEnvs(t, true, *pagesBinary, listener, ":42345", []string{}, pagesArgs...) defer teardown() + // need to call an actual resource to populate certain metrics e.g. gitlab_pages_domains_source_api_requests_total + _, err := GetPageFromListener(t, listener[0], "new-source-test.gitlab.io", "") + require.NoError(t, err) + resp, err := http.Get("http://localhost:42345/metrics") require.NoError(t, err) defer resp.Body.Close() - body, _ := ioutil.ReadAll(resp.Body) + body, err := ioutil.ReadAll(resp.Body) + require.NoError(t, err) require.Contains(t, string(body), "gitlab_pages_http_in_flight_requests 0") - require.Contains(t, string(body), "gitlab_pages_served_domains 16") + // TODO: remove metrics for disk sourcehttps://gitlab.com/gitlab-org/gitlab-pages/-/issues/382 + require.Contains(t, string(body), "gitlab_pages_served_domains 0") require.Contains(t, string(body), "gitlab_pages_domains_failed_total 0") - require.Contains(t, string(body), "gitlab_pages_domains_updated_total 1") + require.Contains(t, string(body), "gitlab_pages_domains_updated_total 0") require.Contains(t, string(body), "gitlab_pages_last_domain_update_seconds gauge") require.Contains(t, string(body), "gitlab_pages_domains_configuration_update_duration gauge") - require.Contains(t, string(body), "gitlab_pages_domains_source_cache_hit 0") - require.Contains(t, string(body), "gitlab_pages_domains_source_cache_miss 0") + // end TODO + require.Contains(t, string(body), "gitlab_pages_domains_source_cache_hit 3") + require.Contains(t, string(body), "gitlab_pages_domains_source_cache_miss 2") require.Contains(t, string(body), "gitlab_pages_domains_source_failures_total 0") require.Contains(t, string(body), "gitlab_pages_serverless_requests 0") require.Contains(t, string(body), "gitlab_pages_serverless_latency_sum 0") require.Contains(t, string(body), "gitlab_pages_disk_serving_file_size_bytes_sum 0") require.Contains(t, string(body), "gitlab_pages_serving_time_seconds_sum 0") + require.Contains(t, string(body), `gitlab_pages_domains_source_api_requests_total{status_code="200"}`) + require.Contains(t, string(body), `gitlab_pages_domains_source_api_call_duration{status_code="200"}`) + // TODO: add test when Zip is enabled https://gitlab.com/gitlab-org/gitlab-pages/-/issues/443 + // require.Contains(t, string(body), `gitlab_pages_httprange_zip_reader_requests_total{status_code="200"}`) + // require.Contains(t, string(body), `gitlab_pages_httprange_zip_reader_requests_duration{status_code="200"}`) } func TestStatusPage(t *testing.T) { diff --git a/metrics/metrics.go b/metrics/metrics.go index de4206b5..c2bf6566 100644 --- a/metrics/metrics.go +++ b/metrics/metrics.go @@ -5,6 +5,7 @@ import ( ) var ( + // TODO: remove disk source metrics https://gitlab.com/gitlab-org/gitlab-pages/-/issues/382 // DomainsServed counts the total number of sites served DomainsServed = prometheus.NewGauge(prometheus.GaugeOpts{ Name: "gitlab_pages_served_domains", diff --git a/metrics/metrics_test.go b/metrics/metrics_test.go deleted file mode 100644 index c65aab3c..00000000 --- a/metrics/metrics_test.go +++ /dev/null @@ -1,60 +0,0 @@ -package metrics - -import ( - "io/ioutil" - "net/http" - "net/http/httptest" - "testing" - "time" - - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promhttp" - "github.com/prometheus/client_golang/prometheus/testutil" - "github.com/stretchr/testify/require" -) - -func TestMetricsVectorsCanBeScraped(t *testing.T) { - reg := prometheus.NewRegistry() - - // vectors will only be available in /metrics after a label has been set/incremented so we can't test these in - // TestPrometheusMetricsCanBeScraped as part of the acceptance tests - reg.MustRegister( - DomainsSourceAPIReqTotal, - DomainsSourceAPICallDuration, - ZipFileServingReqTotal, - ZipFileServingReqDuration, - ) - - handler := promhttp.HandlerFor(reg, promhttp.HandlerOpts{}) - testServer := httptest.NewServer(handler) - defer testServer.Close() - - DomainsSourceAPICallDuration.WithLabelValues("200").Set(float64(20 * time.Millisecond)) - DomainsSourceAPIReqTotal.WithLabelValues("200").Inc() - - c, err := DomainsSourceAPIReqTotal.GetMetricWithLabelValues("200") - require.NoError(t, err) - require.Equal(t, float64(1), testutil.ToFloat64(c)) - - ZipFileServingReqDuration.WithLabelValues("200").Set(float64(20 * time.Millisecond)) - ZipFileServingReqTotal.WithLabelValues("200").Inc() - - c, err = ZipFileServingReqTotal.GetMetricWithLabelValues("200") - require.NoError(t, err) - require.Equal(t, float64(1), testutil.ToFloat64(c)) - - metricFamilies, err := reg.Gather() - require.NoError(t, err) - - require.Len(t, metricFamilies, 4) - - res, err := http.Get(testServer.URL + "/metrics") - require.NoError(t, err) - defer res.Body.Close() - body, _ := ioutil.ReadAll(res.Body) - - require.Contains(t, string(body), `gitlab_pages_domains_source_api_requests_total{status_code="200"}`) - require.Contains(t, string(body), `gitlab_pages_domains_source_api_call_duration{status_code="200"}`) - require.Contains(t, string(body), `gitlab_pages_httprange_zip_reader_requests_total{status_code="200"}`) - require.Contains(t, string(body), `gitlab_pages_httprange_zip_reader_requests_duration{status_code="200"}`) -} |