Skip to content

Commit f0c63e9

Browse files
authored
[chore][receive/smartagent] Centralize test logic (#6147)
1 parent c444bbc commit f0c63e9

File tree

7 files changed

+60
-359
lines changed

7 files changed

+60
-359
lines changed

tests/receivers/smartagent/collectd-activemq/collectd_activemq_test.go

+2-71
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,7 @@
1717
package tests
1818

1919
import (
20-
"context"
21-
"fmt"
22-
"path/filepath"
23-
"runtime"
2420
"testing"
25-
"time"
26-
27-
"github.com/stretchr/testify/assert"
28-
"github.com/stretchr/testify/require"
29-
"go.opentelemetry.io/collector/component/componenttest"
30-
"go.opentelemetry.io/collector/consumer/consumertest"
31-
"go.opentelemetry.io/collector/receiver/otlpreceiver"
32-
"go.opentelemetry.io/collector/receiver/receivertest"
33-
"go.uber.org/zap"
3421

3522
"github.com/signalfx/splunk-otel-collector/tests/testutils"
3623
)
@@ -78,7 +65,7 @@ func TestCollectdActiveMQReceiverProvidesAllMetrics(t *testing.T) {
7865
"jmx_memory.used",
7966
"total_time_in_ms.collection_time",
8067
}
81-
checkMetricsPresence(t, metricNames, "all_metrics_config.yaml")
68+
testutils.CheckMetricsPresence(t, metricNames, "all_metrics_config.yaml")
8269
}
8370
func TestCollectdActiveMQReceiverProvidesDefaultMetrics(t *testing.T) {
8471
metricNames := []string{
@@ -111,61 +98,5 @@ func TestCollectdActiveMQReceiverProvidesDefaultMetrics(t *testing.T) {
11198
"jmx_memory.used",
11299
"total_time_in_ms.collection_time",
113100
}
114-
checkMetricsPresence(t, metricNames, "default_metrics_config.yaml")
115-
}
116-
117-
func checkMetricsPresence(t *testing.T, metricNames []string, configFile string) {
118-
f := otlpreceiver.NewFactory()
119-
port := testutils.GetAvailablePort(t)
120-
c := f.CreateDefaultConfig().(*otlpreceiver.Config)
121-
c.GRPC.NetAddr.Endpoint = fmt.Sprintf("localhost:%d", port)
122-
sink := &consumertest.MetricsSink{}
123-
receiver, err := f.CreateMetrics(context.Background(), receivertest.NewNopSettings(f.Type()), c, sink)
124-
require.NoError(t, err)
125-
require.NoError(t, receiver.Start(context.Background(), componenttest.NewNopHost()))
126-
t.Cleanup(func() {
127-
require.NoError(t, receiver.Shutdown(context.Background()))
128-
})
129-
logger, _ := zap.NewDevelopment()
130-
131-
dockerHost := "0.0.0.0"
132-
if runtime.GOOS == "darwin" {
133-
dockerHost = "host.docker.internal"
134-
}
135-
p, err := testutils.NewCollectorContainer().
136-
WithImage(testutils.GetCollectorImageOrSkipTest(t)).
137-
WithConfigPath(filepath.Join("testdata", configFile)).
138-
WithLogger(logger).
139-
WithEnv(map[string]string{"OTLP_ENDPOINT": fmt.Sprintf("%s:%d", dockerHost, port)}).
140-
Build()
141-
require.NoError(t, err)
142-
require.NoError(t, p.Start())
143-
t.Cleanup(func() {
144-
require.NoError(t, p.Shutdown())
145-
})
146-
147-
missingMetrics := make(map[string]any, len(metricNames))
148-
for _, m := range metricNames {
149-
missingMetrics[m] = struct{}{}
150-
}
151-
152-
assert.EventuallyWithT(t, func(tt *assert.CollectT) {
153-
for i := 0; i < len(sink.AllMetrics()); i++ {
154-
m := sink.AllMetrics()[i]
155-
for j := 0; j < m.ResourceMetrics().Len(); j++ {
156-
rm := m.ResourceMetrics().At(j)
157-
for k := 0; k < rm.ScopeMetrics().Len(); k++ {
158-
sm := rm.ScopeMetrics().At(k)
159-
for l := 0; l < sm.Metrics().Len(); l++ {
160-
delete(missingMetrics, sm.Metrics().At(l).Name())
161-
}
162-
}
163-
}
164-
}
165-
msg := "Missing metrics:\n"
166-
for k := range missingMetrics {
167-
msg += fmt.Sprintf("- %q\n", k)
168-
}
169-
assert.Len(tt, missingMetrics, 0, msg)
170-
}, 1*time.Minute, 1*time.Second)
101+
testutils.CheckMetricsPresence(t, metricNames, "default_metrics_config.yaml")
171102
}

tests/receivers/smartagent/collectd-cassandra/collectd_cassandra_test.go

+2-71
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,7 @@
1717
package tests
1818

1919
import (
20-
"context"
21-
"fmt"
22-
"path/filepath"
23-
"runtime"
2420
"testing"
25-
"time"
26-
27-
"github.com/stretchr/testify/assert"
28-
"github.com/stretchr/testify/require"
29-
"go.opentelemetry.io/collector/component/componenttest"
30-
"go.opentelemetry.io/collector/consumer/consumertest"
31-
"go.opentelemetry.io/collector/receiver/otlpreceiver"
32-
"go.opentelemetry.io/collector/receiver/receivertest"
33-
"go.uber.org/zap"
3421

3522
"github.com/signalfx/splunk-otel-collector/tests/testutils"
3623
)
@@ -83,7 +70,7 @@ func TestCollectdCassandraReceiverProvidesAllMetrics(t *testing.T) {
8370
"jmx_memory.used",
8471
"total_time_in_ms.collection_time",
8572
}
86-
checkMetricsPresence(t, metricNames, "all_metrics_config.yaml")
73+
testutils.CheckMetricsPresence(t, metricNames, "all_metrics_config.yaml")
8774
}
8875

8976
func TestCollectdCassandraReceiverProvidesDefaultMetrics(t *testing.T) {
@@ -116,61 +103,5 @@ func TestCollectdCassandraReceiverProvidesDefaultMetrics(t *testing.T) {
116103
"jmx_memory.used",
117104
"total_time_in_ms.collection_time",
118105
}
119-
checkMetricsPresence(t, metricNames, "default_metrics_config.yaml")
120-
}
121-
122-
func checkMetricsPresence(t *testing.T, metricNames []string, configFile string) {
123-
f := otlpreceiver.NewFactory()
124-
port := testutils.GetAvailablePort(t)
125-
c := f.CreateDefaultConfig().(*otlpreceiver.Config)
126-
c.GRPC.NetAddr.Endpoint = fmt.Sprintf("localhost:%d", port)
127-
sink := &consumertest.MetricsSink{}
128-
receiver, err := f.CreateMetrics(context.Background(), receivertest.NewNopSettings(f.Type()), c, sink)
129-
require.NoError(t, err)
130-
require.NoError(t, receiver.Start(context.Background(), componenttest.NewNopHost()))
131-
t.Cleanup(func() {
132-
require.NoError(t, receiver.Shutdown(context.Background()))
133-
})
134-
logger, _ := zap.NewDevelopment()
135-
136-
dockerHost := "0.0.0.0"
137-
if runtime.GOOS == "darwin" {
138-
dockerHost = "host.docker.internal"
139-
}
140-
p, err := testutils.NewCollectorContainer().
141-
WithImage(testutils.GetCollectorImageOrSkipTest(t)).
142-
WithConfigPath(filepath.Join("testdata", configFile)).
143-
WithLogger(logger).
144-
WithEnv(map[string]string{"OTLP_ENDPOINT": fmt.Sprintf("%s:%d", dockerHost, port)}).
145-
Build()
146-
require.NoError(t, err)
147-
require.NoError(t, p.Start())
148-
t.Cleanup(func() {
149-
require.NoError(t, p.Shutdown())
150-
})
151-
152-
missingMetrics := make(map[string]any, len(metricNames))
153-
for _, m := range metricNames {
154-
missingMetrics[m] = struct{}{}
155-
}
156-
157-
assert.EventuallyWithT(t, func(tt *assert.CollectT) {
158-
for i := 0; i < len(sink.AllMetrics()); i++ {
159-
m := sink.AllMetrics()[i]
160-
for j := 0; j < m.ResourceMetrics().Len(); j++ {
161-
rm := m.ResourceMetrics().At(j)
162-
for k := 0; k < rm.ScopeMetrics().Len(); k++ {
163-
sm := rm.ScopeMetrics().At(k)
164-
for l := 0; l < sm.Metrics().Len(); l++ {
165-
delete(missingMetrics, sm.Metrics().At(l).Name())
166-
}
167-
}
168-
}
169-
}
170-
msg := "Missing metrics:\n"
171-
for k := range missingMetrics {
172-
msg += fmt.Sprintf("- %q\n", k)
173-
}
174-
assert.Len(tt, missingMetrics, 0, msg)
175-
}, 1*time.Minute, 1*time.Second)
106+
testutils.CheckMetricsPresence(t, metricNames, "default_metrics_config.yaml")
176107
}

tests/receivers/smartagent/collectd-hadoop/collectd_hadoop_test.go

+1-70
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,8 @@
1717
package tests
1818

1919
import (
20-
"context"
21-
"fmt"
2220
"path"
23-
"path/filepath"
24-
"runtime"
2521
"testing"
26-
"time"
27-
28-
"github.com/stretchr/testify/assert"
29-
"github.com/stretchr/testify/require"
30-
"go.opentelemetry.io/collector/component/componenttest"
31-
"go.opentelemetry.io/collector/consumer/consumertest"
32-
"go.opentelemetry.io/collector/receiver/otlpreceiver"
33-
"go.opentelemetry.io/collector/receiver/receivertest"
34-
"go.uber.org/zap"
3522

3623
"github.com/signalfx/splunk-otel-collector/tests/testutils"
3724
)
@@ -54,7 +41,7 @@ func TestCollectdHadoopReceiverProvidesAllMetrics(t *testing.T) {
5441
_, stop := tc.Containers(containers...)
5542
defer stop()
5643

57-
checkMetricsPresence(t, []string{
44+
testutils.CheckMetricsPresence(t, []string{
5845
"counter.hadoop.cluster.metrics.total_mb",
5946
"counter.hadoop.cluster.metrics.total_nodes",
6047
"counter.hadoop.cluster.metrics.total_virtual_cores",
@@ -105,59 +92,3 @@ func TestCollectdHadoopReceiverProvidesAllMetrics(t *testing.T) {
10592
"gauge.hadoop.resource.manager.scheduler.root.queue.usedCapacity",
10693
}, "all_metrics_config.yaml")
10794
}
108-
109-
func checkMetricsPresence(t *testing.T, metricNames []string, configFile string) {
110-
f := otlpreceiver.NewFactory()
111-
port := testutils.GetAvailablePort(t)
112-
c := f.CreateDefaultConfig().(*otlpreceiver.Config)
113-
c.GRPC.NetAddr.Endpoint = fmt.Sprintf("localhost:%d", port)
114-
sink := &consumertest.MetricsSink{}
115-
receiver, err := f.CreateMetrics(context.Background(), receivertest.NewNopSettings(f.Type()), c, sink)
116-
require.NoError(t, err)
117-
require.NoError(t, receiver.Start(context.Background(), componenttest.NewNopHost()))
118-
t.Cleanup(func() {
119-
require.NoError(t, receiver.Shutdown(context.Background()))
120-
})
121-
logger, _ := zap.NewDevelopment()
122-
123-
dockerHost := "0.0.0.0"
124-
if runtime.GOOS == "darwin" {
125-
dockerHost = "host.docker.internal"
126-
}
127-
p, err := testutils.NewCollectorContainer().
128-
WithImage(testutils.GetCollectorImageOrSkipTest(t)).
129-
WithConfigPath(filepath.Join("testdata", configFile)).
130-
WithLogger(logger).
131-
WithEnv(map[string]string{"OTLP_ENDPOINT": fmt.Sprintf("%s:%d", dockerHost, port)}).
132-
Build()
133-
require.NoError(t, err)
134-
require.NoError(t, p.Start())
135-
t.Cleanup(func() {
136-
require.NoError(t, p.Shutdown())
137-
})
138-
139-
missingMetrics := make(map[string]any, len(metricNames))
140-
for _, m := range metricNames {
141-
missingMetrics[m] = struct{}{}
142-
}
143-
144-
assert.EventuallyWithT(t, func(tt *assert.CollectT) {
145-
for i := 0; i < len(sink.AllMetrics()); i++ {
146-
m := sink.AllMetrics()[i]
147-
for j := 0; j < m.ResourceMetrics().Len(); j++ {
148-
rm := m.ResourceMetrics().At(j)
149-
for k := 0; k < rm.ScopeMetrics().Len(); k++ {
150-
sm := rm.ScopeMetrics().At(k)
151-
for l := 0; l < sm.Metrics().Len(); l++ {
152-
delete(missingMetrics, sm.Metrics().At(l).Name())
153-
}
154-
}
155-
}
156-
}
157-
msg := "Missing metrics:\n"
158-
for k := range missingMetrics {
159-
msg += fmt.Sprintf("- %q\n", k)
160-
}
161-
assert.Len(tt, missingMetrics, 0, msg)
162-
}, 1*time.Minute, 1*time.Second)
163-
}

tests/receivers/smartagent/collectd-kafka/collectd_kafka_test.go

+3-72
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,7 @@
1717
package tests
1818

1919
import (
20-
"context"
21-
"fmt"
22-
"path/filepath"
23-
"runtime"
2420
"testing"
25-
"time"
26-
27-
"github.com/stretchr/testify/assert"
28-
"github.com/stretchr/testify/require"
29-
"go.opentelemetry.io/collector/component/componenttest"
30-
"go.opentelemetry.io/collector/consumer/consumertest"
31-
"go.opentelemetry.io/collector/receiver/otlpreceiver"
32-
"go.opentelemetry.io/collector/receiver/receivertest"
33-
"go.uber.org/zap"
3421

3522
"github.com/signalfx/splunk-otel-collector/tests/testutils"
3623
)
@@ -70,7 +57,7 @@ func TestCollectdKafkaReceiversAllBrokerMetrics(t *testing.T) {
7057
"jmx_memory.used",
7158
"total_time_in_ms.collection_time",
7259
}
73-
checkMetricsPresence(t, metricNames, "all_broker_metrics_config.yaml")
60+
testutils.CheckMetricsPresence(t, metricNames, "all_broker_metrics_config.yaml")
7461
}
7562

7663
func TestCollectdKafkaReceiversAllConsumerMetrics(t *testing.T) {
@@ -89,7 +76,7 @@ func TestCollectdKafkaReceiversAllConsumerMetrics(t *testing.T) {
8976
"jmx_memory.used",
9077
"total_time_in_ms.collection_time",
9178
}
92-
checkMetricsPresence(t, metricNames, "all_consumer_metrics_config.yaml")
79+
testutils.CheckMetricsPresence(t, metricNames, "all_consumer_metrics_config.yaml")
9380
}
9481

9582
func TestCollectdKafkaReceiversAllProducerMetrics(t *testing.T) {
@@ -113,61 +100,5 @@ func TestCollectdKafkaReceiversAllProducerMetrics(t *testing.T) {
113100
"jmx_memory.used",
114101
"total_time_in_ms.collection_time",
115102
}
116-
checkMetricsPresence(t, metricNames, "all_producer_metrics_config.yaml")
117-
}
118-
119-
func checkMetricsPresence(t *testing.T, metricNames []string, configFile string) {
120-
f := otlpreceiver.NewFactory()
121-
port := testutils.GetAvailablePort(t)
122-
c := f.CreateDefaultConfig().(*otlpreceiver.Config)
123-
c.GRPC.NetAddr.Endpoint = fmt.Sprintf("localhost:%d", port)
124-
sink := &consumertest.MetricsSink{}
125-
receiver, err := f.CreateMetrics(context.Background(), receivertest.NewNopSettings(f.Type()), c, sink)
126-
require.NoError(t, err)
127-
require.NoError(t, receiver.Start(context.Background(), componenttest.NewNopHost()))
128-
t.Cleanup(func() {
129-
require.NoError(t, receiver.Shutdown(context.Background()))
130-
})
131-
logger, _ := zap.NewDevelopment()
132-
133-
dockerHost := "0.0.0.0"
134-
if runtime.GOOS == "darwin" {
135-
dockerHost = "host.docker.internal"
136-
}
137-
p, err := testutils.NewCollectorContainer().
138-
WithImage(testutils.GetCollectorImageOrSkipTest(t)).
139-
WithConfigPath(filepath.Join("testdata", configFile)).
140-
WithLogger(logger).
141-
WithEnv(map[string]string{"OTLP_ENDPOINT": fmt.Sprintf("%s:%d", dockerHost, port)}).
142-
Build()
143-
require.NoError(t, err)
144-
require.NoError(t, p.Start())
145-
t.Cleanup(func() {
146-
require.NoError(t, p.Shutdown())
147-
})
148-
149-
missingMetrics := make(map[string]any, len(metricNames))
150-
for _, m := range metricNames {
151-
missingMetrics[m] = struct{}{}
152-
}
153-
154-
assert.EventuallyWithT(t, func(tt *assert.CollectT) {
155-
for i := 0; i < len(sink.AllMetrics()); i++ {
156-
m := sink.AllMetrics()[i]
157-
for j := 0; j < m.ResourceMetrics().Len(); j++ {
158-
rm := m.ResourceMetrics().At(j)
159-
for k := 0; k < rm.ScopeMetrics().Len(); k++ {
160-
sm := rm.ScopeMetrics().At(k)
161-
for l := 0; l < sm.Metrics().Len(); l++ {
162-
delete(missingMetrics, sm.Metrics().At(l).Name())
163-
}
164-
}
165-
}
166-
}
167-
msg := "Missing metrics:\n"
168-
for k := range missingMetrics {
169-
msg += fmt.Sprintf("- %q\n", k)
170-
}
171-
assert.Len(tt, missingMetrics, 0, msg)
172-
}, 1*time.Minute, 1*time.Second)
103+
testutils.CheckMetricsPresence(t, metricNames, "all_producer_metrics_config.yaml")
173104
}

0 commit comments

Comments
 (0)