github.com/hashicorp/nomad/api@v0.0.0-20240306165712-3193ac204f65/operator_metrics_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package api 5 6 import ( 7 "testing" 8 9 "github.com/hashicorp/nomad/api/internal/testutil" 10 "github.com/shoenig/test/must" 11 ) 12 13 func TestOperator_MetricsSummary(t *testing.T) { 14 testutil.Parallel(t) 15 16 c, s := makeClient(t, nil, func(c *testutil.TestServerConfig) { 17 c.DevMode = true 18 }) 19 defer s.Stop() 20 21 operator := c.Operator() 22 qo := &QueryOptions{ 23 Params: map[string]string{ 24 "pretty": "1", 25 }, 26 } 27 28 metrics, qm, err := operator.MetricsSummary(qo) 29 must.NoError(t, err) 30 must.NotNil(t, metrics) 31 must.NotNil(t, qm) 32 must.NotNil(t, metrics.Timestamp) // should always get a TimeStamp 33 must.SliceEmpty(t, metrics.Points) // may not have points yet 34 must.SliceNotEmpty(t, metrics.Gauges) // should have at least 1 gauge 35 must.SliceNotEmpty(t, metrics.Counters) // should have at least 1 counter 36 must.SliceNotEmpty(t, metrics.Samples) // should have at least 1 sample 37 } 38 39 func TestOperator_Metrics_Prometheus(t *testing.T) { 40 testutil.Parallel(t) 41 42 c, s := makeClient(t, nil, func(c *testutil.TestServerConfig) { 43 c.DevMode = true 44 c.Telemetry = &testutil.Telemetry{PrometheusMetrics: true} 45 }) 46 defer s.Stop() 47 48 operator := c.Operator() 49 qo := &QueryOptions{ 50 Params: map[string]string{ 51 "format": "prometheus", 52 }, 53 } 54 55 metrics, err := operator.Metrics(qo) 56 must.NoError(t, err) 57 must.NotNil(t, metrics) 58 metricString := string(metrics[:]) 59 must.StrContains(t, metricString, "# HELP") 60 }