+++ /dev/null
-package lv
-
-import (
- "strings"
- "testing"
-)
-
-func TestSpaceWalkAbort(t *testing.T) {
- s := NewSpace()
- s.Observe("a", LabelValues{"a", "b"}, 1)
- s.Observe("a", LabelValues{"c", "d"}, 2)
- s.Observe("a", LabelValues{"e", "f"}, 4)
- s.Observe("a", LabelValues{"g", "h"}, 8)
- s.Observe("b", LabelValues{"a", "b"}, 16)
- s.Observe("b", LabelValues{"c", "d"}, 32)
- s.Observe("b", LabelValues{"e", "f"}, 64)
- s.Observe("b", LabelValues{"g", "h"}, 128)
-
- var count int
- s.Walk(func(name string, lvs LabelValues, obs []float64) bool {
- count++
- return false
- })
- if want, have := 1, count; want != have {
- t.Errorf("want %d, have %d", want, have)
- }
-}
-
-func TestSpaceWalkSums(t *testing.T) {
- s := NewSpace()
- s.Observe("metric_one", LabelValues{}, 1)
- s.Observe("metric_one", LabelValues{}, 2)
- s.Observe("metric_one", LabelValues{"a", "1", "b", "2"}, 4)
- s.Observe("metric_one", LabelValues{"a", "1", "b", "2"}, 8)
- s.Observe("metric_one", LabelValues{}, 16)
- s.Observe("metric_one", LabelValues{"a", "1", "b", "3"}, 32)
- s.Observe("metric_two", LabelValues{}, 64)
- s.Observe("metric_two", LabelValues{}, 128)
- s.Observe("metric_two", LabelValues{"a", "1", "b", "2"}, 256)
-
- have := map[string]float64{}
- s.Walk(func(name string, lvs LabelValues, obs []float64) bool {
- //t.Logf("%s %v => %v", name, lvs, obs)
- have[name+" ["+strings.Join(lvs, "")+"]"] += sum(obs)
- return true
- })
-
- want := map[string]float64{
- "metric_one []": 1 + 2 + 16,
- "metric_one [a1b2]": 4 + 8,
- "metric_one [a1b3]": 32,
- "metric_two []": 64 + 128,
- "metric_two [a1b2]": 256,
- }
- for keystr, wantsum := range want {
- if havesum := have[keystr]; wantsum != havesum {
- t.Errorf("%q: want %.1f, have %.1f", keystr, wantsum, havesum)
- }
- delete(want, keystr)
- delete(have, keystr)
- }
- for keystr, havesum := range have {
- t.Errorf("%q: unexpected observations recorded: %.1f", keystr, havesum)
- }
-}
-
-func TestSpaceWalkSkipsEmptyDimensions(t *testing.T) {
- s := NewSpace()
- s.Observe("foo", LabelValues{"bar", "1", "baz", "2"}, 123)
-
- var count int
- s.Walk(func(name string, lvs LabelValues, obs []float64) bool {
- count++
- return true
- })
- if want, have := 1, count; want != have {
- t.Errorf("want %d, have %d", want, have)
- }
-}
-
-func sum(a []float64) (v float64) {
- for _, f := range a {
- v += f
- }
- return
-}