test: migrate aerospike to test-containers (#11177)
This commit is contained in:
parent
15fd1133c7
commit
d65640f9e6
|
|
@ -1,13 +1,6 @@
|
||||||
version: '3'
|
version: '3'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
aerospike:
|
|
||||||
image: aerospike/aerospike-server:4.9.0.11
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
- "3001:3001"
|
|
||||||
- "3002:3002"
|
|
||||||
- "3003:3003"
|
|
||||||
zookeeper:
|
zookeeper:
|
||||||
image: wurstmeister/zookeeper
|
image: wurstmeister/zookeeper
|
||||||
environment:
|
environment:
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,41 @@
|
||||||
package aerospike
|
package aerospike
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
as "github.com/aerospike/aerospike-client-go/v5"
|
as "github.com/aerospike/aerospike-client-go/v5"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
"github.com/testcontainers/testcontainers-go/wait"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf/testutil"
|
"github.com/influxdata/telegraf/testutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func launchTestServer(t *testing.T) testutil.Container {
|
||||||
|
container := testutil.Container{
|
||||||
|
Image: "aerospike:ce-6.0.0.1",
|
||||||
|
ExposedPorts: []string{"3000"},
|
||||||
|
WaitingFor: wait.ForLog("migrations: complete"),
|
||||||
|
}
|
||||||
|
err := container.Start()
|
||||||
|
require.NoError(t, err, "failed to start container")
|
||||||
|
|
||||||
|
return container
|
||||||
|
}
|
||||||
|
|
||||||
func TestAerospikeStatisticsIntegration(t *testing.T) {
|
func TestAerospikeStatisticsIntegration(t *testing.T) {
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
t.Skip("Skipping aerospike integration tests.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
container := launchTestServer(t)
|
||||||
|
defer func() {
|
||||||
|
require.NoError(t, container.Terminate(), "terminating container failed")
|
||||||
|
}()
|
||||||
|
|
||||||
a := &Aerospike{
|
a := &Aerospike{
|
||||||
Servers: []string{testutil.GetLocalHost() + ":3000"},
|
Servers: []string{fmt.Sprintf("%s:%s", container.Address, container.Port)},
|
||||||
}
|
}
|
||||||
|
|
||||||
var acc testutil.Accumulator
|
var acc testutil.Accumulator
|
||||||
|
|
@ -38,9 +58,14 @@ func TestAerospikeStatisticsPartialErrIntegration(t *testing.T) {
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
t.Skip("Skipping aerospike integration tests.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
container := launchTestServer(t)
|
||||||
|
defer func() {
|
||||||
|
require.NoError(t, container.Terminate(), "terminating container failed")
|
||||||
|
}()
|
||||||
|
|
||||||
a := &Aerospike{
|
a := &Aerospike{
|
||||||
Servers: []string{
|
Servers: []string{
|
||||||
testutil.GetLocalHost() + ":3000",
|
fmt.Sprintf("%s:%s", container.Address, container.Port),
|
||||||
testutil.GetLocalHost() + ":9999",
|
testutil.GetLocalHost() + ":9999",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
@ -62,9 +87,14 @@ func TestSelectNamespacesIntegration(t *testing.T) {
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
t.Skip("Skipping aerospike integration tests.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
container := launchTestServer(t)
|
||||||
|
defer func() {
|
||||||
|
require.NoError(t, container.Terminate(), "terminating container failed")
|
||||||
|
}()
|
||||||
|
|
||||||
// Select nonexistent namespace
|
// Select nonexistent namespace
|
||||||
a := &Aerospike{
|
a := &Aerospike{
|
||||||
Servers: []string{testutil.GetLocalHost() + ":3000"},
|
Servers: []string{fmt.Sprintf("%s:%s", container.Address, container.Port)},
|
||||||
Namespaces: []string{"notTest"},
|
Namespaces: []string{"notTest"},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -96,9 +126,14 @@ func TestDisableQueryNamespacesIntegration(t *testing.T) {
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
t.Skip("Skipping aerospike integration tests.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
container := launchTestServer(t)
|
||||||
|
defer func() {
|
||||||
|
require.NoError(t, container.Terminate(), "terminating container failed")
|
||||||
|
}()
|
||||||
|
|
||||||
a := &Aerospike{
|
a := &Aerospike{
|
||||||
Servers: []string{
|
Servers: []string{
|
||||||
testutil.GetLocalHost() + ":3000",
|
fmt.Sprintf("%s:%s", container.Address, container.Port),
|
||||||
},
|
},
|
||||||
DisableQueryNamespaces: true,
|
DisableQueryNamespaces: true,
|
||||||
}
|
}
|
||||||
|
|
@ -123,10 +158,18 @@ func TestQuerySetsIntegration(t *testing.T) {
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
t.Skip("Skipping aerospike integration tests.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
container := launchTestServer(t)
|
||||||
|
defer func() {
|
||||||
|
require.NoError(t, container.Terminate(), "terminating container failed")
|
||||||
|
}()
|
||||||
|
|
||||||
|
portInt, err := strconv.Atoi(container.Port)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
// create a set
|
// create a set
|
||||||
// test is the default namespace from aerospike
|
// test is the default namespace from aerospike
|
||||||
policy := as.NewClientPolicy()
|
policy := as.NewClientPolicy()
|
||||||
client, errAs := as.NewClientWithPolicy(policy, testutil.GetLocalHost(), 3000)
|
client, errAs := as.NewClientWithPolicy(policy, container.Address, portInt)
|
||||||
require.NoError(t, errAs)
|
require.NoError(t, errAs)
|
||||||
|
|
||||||
key, errAs := as.NewKey("test", "foo", 123)
|
key, errAs := as.NewKey("test", "foo", 123)
|
||||||
|
|
@ -149,14 +192,14 @@ func TestQuerySetsIntegration(t *testing.T) {
|
||||||
|
|
||||||
a := &Aerospike{
|
a := &Aerospike{
|
||||||
Servers: []string{
|
Servers: []string{
|
||||||
testutil.GetLocalHost() + ":3000",
|
fmt.Sprintf("%s:%s", container.Address, container.Port),
|
||||||
},
|
},
|
||||||
QuerySets: true,
|
QuerySets: true,
|
||||||
DisableQueryNamespaces: true,
|
DisableQueryNamespaces: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
var acc testutil.Accumulator
|
var acc testutil.Accumulator
|
||||||
err := acc.GatherError(a.Gather)
|
err = acc.GatherError(a.Gather)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.True(t, FindTagValue(&acc, "aerospike_set", "set", "test/foo"))
|
require.True(t, FindTagValue(&acc, "aerospike_set", "set", "test/foo"))
|
||||||
|
|
@ -172,10 +215,18 @@ func TestSelectQuerySetsIntegration(t *testing.T) {
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
t.Skip("Skipping aerospike integration tests.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
container := launchTestServer(t)
|
||||||
|
defer func() {
|
||||||
|
require.NoError(t, container.Terminate(), "terminating container failed")
|
||||||
|
}()
|
||||||
|
|
||||||
|
portInt, err := strconv.Atoi(container.Port)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
// create a set
|
// create a set
|
||||||
// test is the default namespace from aerospike
|
// test is the default namespace from aerospike
|
||||||
policy := as.NewClientPolicy()
|
policy := as.NewClientPolicy()
|
||||||
client, errAs := as.NewClientWithPolicy(policy, testutil.GetLocalHost(), 3000)
|
client, errAs := as.NewClientWithPolicy(policy, container.Address, portInt)
|
||||||
require.NoError(t, errAs)
|
require.NoError(t, errAs)
|
||||||
|
|
||||||
key, errAs := as.NewKey("test", "foo", 123)
|
key, errAs := as.NewKey("test", "foo", 123)
|
||||||
|
|
@ -198,7 +249,7 @@ func TestSelectQuerySetsIntegration(t *testing.T) {
|
||||||
|
|
||||||
a := &Aerospike{
|
a := &Aerospike{
|
||||||
Servers: []string{
|
Servers: []string{
|
||||||
testutil.GetLocalHost() + ":3000",
|
fmt.Sprintf("%s:%s", container.Address, container.Port),
|
||||||
},
|
},
|
||||||
QuerySets: true,
|
QuerySets: true,
|
||||||
Sets: []string{"test/foo"},
|
Sets: []string{"test/foo"},
|
||||||
|
|
@ -206,7 +257,7 @@ func TestSelectQuerySetsIntegration(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var acc testutil.Accumulator
|
var acc testutil.Accumulator
|
||||||
err := acc.GatherError(a.Gather)
|
err = acc.GatherError(a.Gather)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.True(t, FindTagValue(&acc, "aerospike_set", "set", "test/foo"))
|
require.True(t, FindTagValue(&acc, "aerospike_set", "set", "test/foo"))
|
||||||
|
|
@ -221,9 +272,15 @@ func TestDisableTTLHistogramIntegration(t *testing.T) {
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
t.Skip("Skipping aerospike integration tests.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
container := launchTestServer(t)
|
||||||
|
defer func() {
|
||||||
|
require.NoError(t, container.Terminate(), "terminating container failed")
|
||||||
|
}()
|
||||||
|
|
||||||
a := &Aerospike{
|
a := &Aerospike{
|
||||||
Servers: []string{
|
Servers: []string{
|
||||||
testutil.GetLocalHost() + ":3000",
|
fmt.Sprintf("%s:%s", container.Address, container.Port),
|
||||||
},
|
},
|
||||||
QuerySets: true,
|
QuerySets: true,
|
||||||
EnableTTLHistogram: false,
|
EnableTTLHistogram: false,
|
||||||
|
|
@ -237,40 +294,20 @@ func TestDisableTTLHistogramIntegration(t *testing.T) {
|
||||||
|
|
||||||
require.False(t, acc.HasMeasurement("aerospike_histogram_ttl"))
|
require.False(t, acc.HasMeasurement("aerospike_histogram_ttl"))
|
||||||
}
|
}
|
||||||
func TestTTLHistogramIntegration(t *testing.T) {
|
|
||||||
if testing.Short() {
|
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
|
||||||
} else {
|
|
||||||
t.Skip("Skipping, only passes if the aerospike db has been running for at least 1 hour")
|
|
||||||
}
|
|
||||||
a := &Aerospike{
|
|
||||||
Servers: []string{
|
|
||||||
testutil.GetLocalHost() + ":3000",
|
|
||||||
},
|
|
||||||
QuerySets: true,
|
|
||||||
EnableTTLHistogram: true,
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
Produces histogram
|
|
||||||
Measurement exists
|
|
||||||
Has appropriate tags (node name etc)
|
|
||||||
Has appropriate keys (time:value)
|
|
||||||
may be able to leverage histogram plugin
|
|
||||||
*/
|
|
||||||
var acc testutil.Accumulator
|
|
||||||
err := acc.GatherError(a.Gather)
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
require.True(t, acc.HasMeasurement("aerospike_histogram_ttl"))
|
|
||||||
require.True(t, FindTagValue(&acc, "aerospike_histogram_ttl", "namespace", "test"))
|
|
||||||
}
|
|
||||||
func TestDisableObjectSizeLinearHistogramIntegration(t *testing.T) {
|
func TestDisableObjectSizeLinearHistogramIntegration(t *testing.T) {
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
t.Skip("Skipping aerospike integration tests.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
container := launchTestServer(t)
|
||||||
|
defer func() {
|
||||||
|
require.NoError(t, container.Terminate(), "terminating container failed")
|
||||||
|
}()
|
||||||
|
|
||||||
a := &Aerospike{
|
a := &Aerospike{
|
||||||
Servers: []string{
|
Servers: []string{
|
||||||
testutil.GetLocalHost() + ":3000",
|
fmt.Sprintf("%s:%s", container.Address, container.Port),
|
||||||
},
|
},
|
||||||
QuerySets: true,
|
QuerySets: true,
|
||||||
EnableObjectSizeLinearHistogram: false,
|
EnableObjectSizeLinearHistogram: false,
|
||||||
|
|
@ -284,32 +321,6 @@ func TestDisableObjectSizeLinearHistogramIntegration(t *testing.T) {
|
||||||
|
|
||||||
require.False(t, acc.HasMeasurement("aerospike_histogram_object_size_linear"))
|
require.False(t, acc.HasMeasurement("aerospike_histogram_object_size_linear"))
|
||||||
}
|
}
|
||||||
func TestObjectSizeLinearHistogramIntegration(t *testing.T) {
|
|
||||||
if testing.Short() {
|
|
||||||
t.Skip("Skipping aerospike integration tests.")
|
|
||||||
} else {
|
|
||||||
t.Skip("Skipping, only passes if the aerospike db has been running for at least 1 hour")
|
|
||||||
}
|
|
||||||
a := &Aerospike{
|
|
||||||
Servers: []string{
|
|
||||||
testutil.GetLocalHost() + ":3000",
|
|
||||||
},
|
|
||||||
QuerySets: true,
|
|
||||||
EnableObjectSizeLinearHistogram: true,
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
Produces histogram
|
|
||||||
Measurement exists
|
|
||||||
Has appropriate tags (node name etc)
|
|
||||||
Has appropriate keys (time:value)
|
|
||||||
|
|
||||||
*/
|
|
||||||
var acc testutil.Accumulator
|
|
||||||
err := acc.GatherError(a.Gather)
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.True(t, acc.HasMeasurement("aerospike_histogram_object_size_linear"))
|
|
||||||
require.True(t, FindTagValue(&acc, "aerospike_histogram_object_size_linear", "namespace", "test"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestParseNodeInfo(t *testing.T) {
|
func TestParseNodeInfo(t *testing.T) {
|
||||||
a := &Aerospike{}
|
a := &Aerospike{}
|
||||||
|
|
@ -416,6 +427,7 @@ func TestParseHistogramSet(t *testing.T) {
|
||||||
a.parseHistogram(&acc, stats, nTags, "object-size-linear")
|
a.parseHistogram(&acc, stats, nTags, "object-size-linear")
|
||||||
acc.AssertContainsTaggedFields(t, "aerospike_histogram_object_size_linear", expectedFields, expectedTags)
|
acc.AssertContainsTaggedFields(t, "aerospike_histogram_object_size_linear", expectedFields, expectedTags)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestParseHistogramNamespace(t *testing.T) {
|
func TestParseHistogramNamespace(t *testing.T) {
|
||||||
a := &Aerospike{
|
a := &Aerospike{
|
||||||
NumberHistogramBuckets: 10,
|
NumberHistogramBuckets: 10,
|
||||||
|
|
@ -447,6 +459,7 @@ func TestParseHistogramNamespace(t *testing.T) {
|
||||||
a.parseHistogram(&acc, stats, nTags, "object-size-linear")
|
a.parseHistogram(&acc, stats, nTags, "object-size-linear")
|
||||||
acc.AssertContainsTaggedFields(t, "aerospike_histogram_object_size_linear", expectedFields, expectedTags)
|
acc.AssertContainsTaggedFields(t, "aerospike_histogram_object_size_linear", expectedFields, expectedTags)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAerospikeParseValue(t *testing.T) {
|
func TestAerospikeParseValue(t *testing.T) {
|
||||||
// uint64 with value bigger than int64 max
|
// uint64 with value bigger than int64 max
|
||||||
val := parseAerospikeValue("", "18446744041841121751")
|
val := parseAerospikeValue("", "18446744041841121751")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue