133 lines
2.6 KiB
Go
133 lines
2.6 KiB
Go
package influxdb_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/influxdb/influxdb"
|
|
)
|
|
|
|
func TestStats_SetAndGet(t *testing.T) {
|
|
s := influxdb.NewStats("foo")
|
|
|
|
s.Set("a", 100)
|
|
if s.Get("a") != 100 {
|
|
t.Fatalf("stats set failed, expected 100, got %d", s.Get("a"))
|
|
}
|
|
}
|
|
|
|
func TestStats_Add(t *testing.T) {
|
|
s := influxdb.NewStats("foo")
|
|
|
|
s.Add("a", 200)
|
|
if s.Get("a") != 200 {
|
|
t.Fatalf("stats set failed, expected 200, got %d", s.Get("a"))
|
|
}
|
|
}
|
|
|
|
func TestStats_Inc(t *testing.T) {
|
|
s := influxdb.NewStats("foo")
|
|
|
|
s.Set("a", 100)
|
|
s.Inc("a")
|
|
if s.Get("a") != 101 {
|
|
t.Fatalf("stats Inc failed, expected 101, got %d", s.Get("a"))
|
|
}
|
|
|
|
s.Inc("b")
|
|
if s.Get("b") != 1 {
|
|
t.Fatalf("stats Inc failed, expected 1, got %d", s.Get("b"))
|
|
}
|
|
}
|
|
|
|
func TestStats_AddNegative(t *testing.T) {
|
|
s := influxdb.NewStats("foo")
|
|
|
|
s.Add("a", -200)
|
|
if s.Get("a") != -200 {
|
|
t.Fatalf("stats set failed, expected -200, got %d", s.Get("a"))
|
|
}
|
|
}
|
|
|
|
func TestStats_SetAndAdd(t *testing.T) {
|
|
s := influxdb.NewStats("foo")
|
|
|
|
s.Set("a", 100)
|
|
s.Add("a", 200)
|
|
if s.Get("a") != 300 {
|
|
t.Fatalf("stats set failed, expected 300, got %d", s.Get("a"))
|
|
}
|
|
}
|
|
|
|
func TestStats_Diff(t *testing.T) {
|
|
foo := influxdb.NewStats("server")
|
|
bar := influxdb.NewStats("server")
|
|
|
|
foo.Set("a", 100)
|
|
foo.Set("b", 600)
|
|
bar.Set("a", 450)
|
|
bar.Set("b", 525)
|
|
|
|
qux := bar.Diff(foo)
|
|
if qux.Name() != "server" {
|
|
t.Fatalf("stats diff has unexpected name: %s", qux.Name())
|
|
}
|
|
if qux.Get("a") != 350 || qux.Get("b") != -75 {
|
|
t.Fatalf("stats diff returned unexpected result: %v", qux)
|
|
}
|
|
}
|
|
|
|
func TestStats_Snapshot(t *testing.T) {
|
|
foo := influxdb.NewStats("server")
|
|
foo.Set("a", 100)
|
|
foo.Set("b", 600)
|
|
|
|
bar := foo.Snapshot()
|
|
if bar.Name() != "server" || bar.Get("a") != 100 || bar.Get("b") != 600 {
|
|
t.Fatalf("stats snapshot returned unexpected result: %#v", bar)
|
|
}
|
|
}
|
|
|
|
func TestStats_String(t *testing.T) {
|
|
foo := influxdb.NewStats("server")
|
|
foo.Set("a", 100)
|
|
foo.Set("b", 600)
|
|
|
|
if exp, got := `{"server":[{"a":100},{"b":600}]}`, foo.String(); exp != got {
|
|
t.Log("exp: ", exp)
|
|
t.Log("got: ", got)
|
|
t.Fatalf("failed to get string")
|
|
}
|
|
}
|
|
|
|
// TestStats_RaceCheck is meant to be run with race-detection enabled.
|
|
func TestStats_RaceCheck(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skipping long-runnning Stats race checking")
|
|
}
|
|
|
|
foo := influxdb.NewStats("server")
|
|
foo.Set("a", 100)
|
|
|
|
walker := func(s string, i int64) {
|
|
if i == -1 {
|
|
return // Will never happen.
|
|
}
|
|
}
|
|
|
|
go func() {
|
|
for {
|
|
foo.Add("a", 1)
|
|
}
|
|
}()
|
|
|
|
go func() {
|
|
for {
|
|
foo.Walk(walker)
|
|
}
|
|
}()
|
|
|
|
time.Sleep(2 * time.Second)
|
|
t.Log("TestStats_RaceCheck completed")
|
|
}
|