...

Source file src/github.com/go-kit/kit/metrics/dogstatsd/dogstatsd_test.go

Documentation: github.com/go-kit/kit/metrics/dogstatsd

     1  package dogstatsd
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/go-kit/kit/metrics/teststat"
     7  	"github.com/go-kit/log"
     8  )
     9  
    10  func TestCounter(t *testing.T) {
    11  	prefix, name := "abc.", "def"
    12  	label, value := "label", "value"
    13  	regex := `^` + prefix + name + `:([0-9\.]+)\|c\|#` + label + `:` + value + `$`
    14  	d := New(prefix, log.NewNopLogger())
    15  	counter := d.NewCounter(name, 1.0).With(label, value)
    16  	valuef := teststat.SumLines(d, regex)
    17  	if err := teststat.TestCounter(counter, valuef); err != nil {
    18  		t.Fatal(err)
    19  	}
    20  }
    21  
    22  func TestCounterSampled(t *testing.T) {
    23  	// This will involve multiplying the observed sum by the inverse of the
    24  	// sample rate and checking against the expected value within some
    25  	// tolerance.
    26  	t.Skip("TODO")
    27  }
    28  
    29  func TestGauge(t *testing.T) {
    30  	prefix, name := "ghi.", "jkl"
    31  	label, value := "xyz", "abc"
    32  	regex := `^` + prefix + name + `:([0-9\.]+)\|g\|#hostname:foohost,` + label + `:` + value + `$`
    33  	d := New(prefix, log.NewNopLogger(), "hostname", "foohost")
    34  	gauge := d.NewGauge(name).With(label, value)
    35  	valuef := teststat.LastLine(d, regex)
    36  	if err := teststat.TestGauge(gauge, valuef); err != nil {
    37  		t.Fatal(err)
    38  	}
    39  }
    40  
    41  // DogStatsD histograms just emit all observations. So, we collect them into
    42  // a generic histogram, and run the statistics test on that.
    43  
    44  func TestHistogram(t *testing.T) {
    45  	prefix, name := "dogstatsd.", "histogram_test"
    46  	label, value := "abc", "def"
    47  	regex := `^` + prefix + name + `:([0-9\.]+)\|h\|#` + label + `:` + value + `$`
    48  	d := New(prefix, log.NewNopLogger())
    49  	histogram := d.NewHistogram(name, 1.0).With(label, value)
    50  	quantiles := teststat.Quantiles(d, regex, 50) // no |@0.X
    51  	if err := teststat.TestHistogram(histogram, quantiles, 0.01); err != nil {
    52  		t.Fatal(err)
    53  	}
    54  }
    55  
    56  func TestHistogramSampled(t *testing.T) {
    57  	prefix, name := "dogstatsd.", "sampled_histogram_test"
    58  	label, value := "foo", "bar"
    59  	regex := `^` + prefix + name + `:([0-9\.]+)\|h\|@0\.01[0]*\|#` + label + `:` + value + `$`
    60  	d := New(prefix, log.NewNopLogger())
    61  	histogram := d.NewHistogram(name, 0.01).With(label, value)
    62  	quantiles := teststat.Quantiles(d, regex, 50)
    63  	if err := teststat.TestHistogram(histogram, quantiles, 0.02); err != nil {
    64  		t.Fatal(err)
    65  	}
    66  }
    67  
    68  func TestTiming(t *testing.T) {
    69  	prefix, name := "dogstatsd.", "timing_test"
    70  	label, value := "wiggle", "bottom"
    71  	regex := `^` + prefix + name + `:([0-9\.]+)\|ms\|#` + label + `:` + value + `$`
    72  	d := New(prefix, log.NewNopLogger())
    73  	histogram := d.NewTiming(name, 1.0).With(label, value)
    74  	quantiles := teststat.Quantiles(d, regex, 50) // no |@0.X
    75  	if err := teststat.TestHistogram(histogram, quantiles, 0.01); err != nil {
    76  		t.Fatal(err)
    77  	}
    78  }
    79  
    80  func TestTimingSampled(t *testing.T) {
    81  	prefix, name := "dogstatsd.", "sampled_timing_test"
    82  	label, value := "internal", "external"
    83  	regex := `^` + prefix + name + `:([0-9\.]+)\|ms\|@0.03[0]*\|#` + label + `:` + value + `$`
    84  	d := New(prefix, log.NewNopLogger())
    85  	histogram := d.NewTiming(name, 0.03).With(label, value)
    86  	quantiles := teststat.Quantiles(d, regex, 50)
    87  	if err := teststat.TestHistogram(histogram, quantiles, 0.02); err != nil {
    88  		t.Fatal(err)
    89  	}
    90  }
    91  

View as plain text