telegraf/plugins/inputs/aerospike/aerospike_test.go

158 lines
3.3 KiB
Go
Raw Normal View History

package aerospike
import (
"bytes"
"encoding/binary"
"reflect"
"testing"
2016-01-20 18:57:35 +00:00
"github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestAerospikeStatistics(t *testing.T) {
if testing.Short() {
t.Skip("Skipping integration test in short mode")
}
a := &Aerospike{
Server: testutil.GetLocalHost() + ":3000",
}
var acc testutil.Accumulator
err := a.Gather(&acc)
require.NoError(t, err)
// Only use a few of the metrics
asMetrics := []string{
"transactions",
"stat_write_errs",
"stat_read_reqs",
"stat_write_reqs",
}
for _, metric := range asMetrics {
assert.True(t, acc.HasIntField("aerospike", metric), metric)
}
}
func TestAerospikeMsgLenFromToBytes(t *testing.T) {
var i int64 = 8
assert.True(t, i == msgLenFromBytes(msgLenToBytes(i)))
}
func TestReadAerospikeStatsNoNamespace(t *testing.T) {
// Also test for re-writing
var acc testutil.Accumulator
stats := map[string]string{
"stat-write-errs": "12345",
"stat_read_reqs": "12345",
}
fields_ := make(map[string]interface{})
readAerospikeStats(stats, fields_, "host1", "")
tags_ := map[string]string{
"aerospike_host": "host1",
"namespace": "_service",
}
acc.AddFields("aerospike", fields_, tags_)
fields := map[string]interface{}{
"stat_write_errs": int64(12345),
"stat_read_reqs": int64(12345),
}
tags := map[string]string{
"aerospike_host": "host1",
"namespace": "_service",
}
acc.AssertContainsTaggedFields(t, "aerospike", fields, tags)
}
func TestReadAerospikeStatsNamespace(t *testing.T) {
var acc testutil.Accumulator
stats := map[string]string{
"stat_write_errs": "12345",
"stat_read_reqs": "12345",
}
fields_ := make(map[string]interface{})
readAerospikeStats(stats, fields_, "host1", "test")
tags_ := map[string]string{
"aerospike_host": "host1",
"namespace": "test",
}
acc.AddFields("aerospike", fields_, tags_)
fields := map[string]interface{}{
"stat_write_errs": int64(12345),
"stat_read_reqs": int64(12345),
}
tags := map[string]string{
"aerospike_host": "host1",
"namespace": "test",
}
acc.AssertContainsTaggedFields(t, "aerospike", fields, tags)
}
func TestAerospikeUnmarshalList(t *testing.T) {
i := map[string]string{
"test": "one;two;three",
}
expected := []string{"one", "two", "three"}
list, err := unmarshalListInfo(i, "test2")
assert.True(t, err != nil)
list, err = unmarshalListInfo(i, "test")
assert.True(t, err == nil)
equal := true
for ix := range expected {
if list[ix] != expected[ix] {
equal = false
break
}
}
assert.True(t, equal)
}
func TestAerospikeUnmarshalMap(t *testing.T) {
i := map[string]string{
"test": "key1=value1;key2=value2",
}
expected := map[string]string{
"key1": "value1",
"key2": "value2",
}
m, err := unmarshalMapInfo(i, "test")
assert.True(t, err == nil)
assert.True(t, reflect.DeepEqual(m, expected))
}
func TestFieldSerialization(t *testing.T) {
typeId := byte(12)
data := []byte("test string")
f := newField(typeId, data)
buf := bytes.Buffer{}
f.WriteToBuf(&buf)
var sz int32
var rType byte
binary.Read(&buf, binary.BigEndian, &sz)
binary.Read(&buf, binary.BigEndian, &rType)
assert.True(t, int(sz) == len(data)+1)
assert.True(t, rType == typeId)
assert.True(t, bytes.Equal(data, buf.Bytes()))
}