blob: 4a44fed693349ad4e3abe9eedfb7fe5fc6d83b2b [file] [log] [blame]
package metrics2
import (
"testing"
"github.com/prometheus/client_golang/prometheus"
"github.com/stretchr/testify/assert"
"go.skia.org/infra/go/testutils/unittest"
)
func testClient(t *testing.T, c Client) {
// Int64Metric
g := c.GetInt64Metric("a.b", map[string]string{"some_key": "some-value"})
assert.NotNil(t, g)
g.Update(3)
assert.Equal(t, int64(3), g.Get())
g2 := c.GetInt64Metric("a.b", map[string]string{"some_key": "some-new-value"})
assert.NotNil(t, g2)
g2.Update(4)
assert.Equal(t, int64(3), g.Get())
assert.Equal(t, int64(4), g2.Get())
g2 = c.GetInt64Metric("a.b", map[string]string{"some_key": "some-new-value"})
assert.Equal(t, int64(4), g2.Get())
// Metric with two tags.
g = c.GetInt64Metric("metric_name", map[string]string{"a": "2", "b": "1"})
assert.NotNil(t, g)
// Float64Metric
gf := c.GetFloat64Metric("a.c", map[string]string{"some_key": "some-value"})
assert.NotNil(t, gf)
gf.Update(3)
assert.Equal(t, float64(3), gf.Get())
gf2 := c.GetFloat64Metric("a.c", map[string]string{"some_key": "some-new-value"})
assert.NotNil(t, gf2)
gf2.Update(4)
assert.Equal(t, float64(3), gf.Get())
assert.Equal(t, float64(4), gf2.Get())
gf2 = c.GetFloat64Metric("a.c", map[string]string{"some_key": "some-new-value"})
assert.Equal(t, float64(4), gf2.Get())
// Metric with two tags.
gf = c.GetFloat64Metric("float_metric_name", map[string]string{"a": "2", "b": "1"})
assert.NotNil(t, gf)
// Counter
gc := c.GetCounter("c", map[string]string{"some_key": "some-value"})
assert.NotNil(t, gc)
gc.Reset()
assert.Equal(t, int64(0), gc.Get())
gc.Inc(3)
assert.NotZero(t, gc.Get())
gc.Reset()
assert.Equal(t, int64(0), gc.Get())
}
func TestClients(t *testing.T) {
unittest.SmallTest(t)
// Test Prometheus client.
var c Client = getPromClient()
testClient(t, c)
// Test Mux using a single Prometheus client.
prometheus.DefaultRegisterer = prometheus.NewRegistry()
var err error
c, err = newMuxClient([]Client{c})
assert.NoError(t, err)
testClient(t, c)
// Test Mux using two Prometheus clients.
c = getPromClient()
c, err = newMuxClient([]Client{c, c})
assert.NoError(t, err)
testClient(t, c)
}