1
1
// Copyright Splunk Inc.
2
2
// SPDX-License-Identifier: Apache-2.0
3
3
4
- //go:build configuration_switching
5
-
6
- package functional_tests
4
+ package configuration_switching
7
5
8
6
import (
9
7
"bytes"
@@ -28,7 +26,6 @@ import (
28
26
"github.com/stretchr/testify/require"
29
27
"go.opentelemetry.io/collector/consumer/consumertest"
30
28
"helm.sh/helm/v3/pkg/action"
31
- "helm.sh/helm/v3/pkg/chart/loader"
32
29
"helm.sh/helm/v3/pkg/kube"
33
30
corev1 "k8s.io/api/core/v1"
34
31
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -44,7 +41,7 @@ const (
44
41
hecMetricsReceiverPort = 8091
45
42
apiPort = 8881
46
43
hecLogsObjectsReceiverPort = 8092
47
- testDir = "testdata_configuration_switching "
44
+ testDir = "testdata "
48
45
valuesDir = "values"
49
46
)
50
47
@@ -84,15 +81,13 @@ func deployChartsAndApps(t *testing.T, valuesFileName string, repl map[string]in
84
81
client , err := kubernetes .NewForConfig (kubeConfig )
85
82
require .NoError (t , err )
86
83
87
- chartPath := filepath .Join (".." , "helm-charts" , "splunk-otel-collector" )
88
- chart , err := loader .Load (chartPath )
89
- require .NoError (t , err )
84
+ chart := internal .LoadCollectorChart (t )
90
85
91
86
var valuesBytes []byte
92
87
valuesBytes , err = os .ReadFile (filepath .Join (testDir , valuesDir , valuesFileName ))
93
88
require .NoError (t , err )
94
89
95
- hostEp := hostEndpoint (t )
90
+ hostEp := internal . HostEndpoint (t )
96
91
if len (hostEp ) == 0 {
97
92
require .Fail (t , "Host endpoint not found" )
98
93
}
@@ -195,55 +190,55 @@ func testAgentLogsAndMetrics(t *testing.T) {
195
190
agentLogsConsumer := setupOnce (t ).logsConsumer
196
191
197
192
t .Run ("check logs and metrics received when both are enabled" , func (t * testing.T ) {
198
- resetLogsSink (t , agentLogsConsumer )
199
- resetMetricsSink (t , hecMetricsConsumer )
193
+ internal . ResetLogsSink (t , agentLogsConsumer )
194
+ internal . ResetMetricsSink (t , hecMetricsConsumer )
200
195
201
- checkNoMetricsReceived (t , hecMetricsConsumer )
202
- checkNoEventsReceived (t , agentLogsConsumer )
196
+ internal . CheckNoMetricsReceived (t , hecMetricsConsumer )
197
+ internal . CheckNoEventsReceived (t , agentLogsConsumer )
203
198
204
199
replacements := map [string ]interface {}{
205
200
"MetricsEnabled" : true ,
206
201
"LogsEnabled" : true ,
207
202
}
208
203
deployChartsAndApps (t , valuesFileName , replacements )
209
204
210
- waitForMetrics (t , 5 , hecMetricsConsumer )
211
- waitForLogs (t , 5 , agentLogsConsumer )
205
+ internal . WaitForMetrics (t , 5 , hecMetricsConsumer )
206
+ internal . WaitForLogs (t , 5 , agentLogsConsumer )
212
207
uninstallDeployment (t )
213
208
})
214
209
215
210
t .Run ("check metrics only enabled" , func (t * testing.T ) {
216
- resetLogsSink (t , agentLogsConsumer )
217
- resetMetricsSink (t , hecMetricsConsumer )
211
+ internal . ResetLogsSink (t , agentLogsConsumer )
212
+ internal . ResetMetricsSink (t , hecMetricsConsumer )
218
213
219
- checkNoMetricsReceived (t , hecMetricsConsumer )
220
- checkNoEventsReceived (t , agentLogsConsumer )
214
+ internal . CheckNoMetricsReceived (t , hecMetricsConsumer )
215
+ internal . CheckNoEventsReceived (t , agentLogsConsumer )
221
216
222
217
replacements := map [string ]interface {}{
223
218
"MetricsEnabled" : true ,
224
219
"LogsEnabled" : false ,
225
220
}
226
221
deployChartsAndApps (t , valuesFileName , replacements )
227
222
228
- waitForMetrics (t , 5 , hecMetricsConsumer )
229
- checkNoEventsReceived (t , agentLogsConsumer )
223
+ internal . WaitForMetrics (t , 5 , hecMetricsConsumer )
224
+ internal . CheckNoEventsReceived (t , agentLogsConsumer )
230
225
uninstallDeployment (t )
231
226
})
232
227
233
228
t .Run ("check logs only enabled" , func (t * testing.T ) {
234
- resetLogsSink (t , agentLogsConsumer )
235
- resetMetricsSink (t , hecMetricsConsumer )
229
+ internal . ResetLogsSink (t , agentLogsConsumer )
230
+ internal . ResetMetricsSink (t , hecMetricsConsumer )
236
231
237
232
replacements := map [string ]interface {}{
238
233
"MetricsEnabled" : false ,
239
234
"LogsEnabled" : true ,
240
235
}
241
236
deployChartsAndApps (t , valuesFileName , replacements )
242
237
243
- waitForLogs (t , 5 , agentLogsConsumer )
238
+ internal . WaitForLogs (t , 5 , agentLogsConsumer )
244
239
uninstallDeployment (t )
245
- resetLogsSink (t , agentLogsConsumer )
246
- resetMetricsSink (t , hecMetricsConsumer )
240
+ internal . ResetLogsSink (t , agentLogsConsumer )
241
+ internal . ResetMetricsSink (t , hecMetricsConsumer )
247
242
})
248
243
}
249
244
@@ -256,9 +251,9 @@ func testIndexSwitch(t *testing.T) {
256
251
257
252
valuesFileName := "values_indexes_switching.yaml.tmpl"
258
253
hecMetricsConsumer := setupOnce (t ).hecMetricsConsumer
259
- checkNoMetricsReceived (t , hecMetricsConsumer )
254
+ internal . CheckNoMetricsReceived (t , hecMetricsConsumer )
260
255
agentLogsConsumer := setupOnce (t ).logsConsumer
261
- checkNoEventsReceived (t , agentLogsConsumer )
256
+ internal . CheckNoEventsReceived (t , agentLogsConsumer )
262
257
263
258
t .Run ("check logs and metrics index switching" , func (t * testing.T ) {
264
259
replacements := map [string ]interface {}{
@@ -267,8 +262,8 @@ func testIndexSwitch(t *testing.T) {
267
262
}
268
263
deployChartsAndApps (t , valuesFileName , replacements )
269
264
270
- waitForMetrics (t , 3 , hecMetricsConsumer )
271
- waitForLogs (t , 3 , agentLogsConsumer )
265
+ internal . WaitForMetrics (t , 3 , hecMetricsConsumer )
266
+ internal . WaitForLogs (t , 3 , agentLogsConsumer )
272
267
273
268
var sourcetypes []string
274
269
var indices []string
@@ -291,11 +286,11 @@ func testIndexSwitch(t *testing.T) {
291
286
"Sourcetype" : nonDefaultSourcetype ,
292
287
}
293
288
deployChartsAndApps (t , valuesFileName , replacements )
294
- resetLogsSink (t , agentLogsConsumer )
295
- resetMetricsSink (t , hecMetricsConsumer )
289
+ internal . ResetLogsSink (t , agentLogsConsumer )
290
+ internal . ResetMetricsSink (t , hecMetricsConsumer )
296
291
297
- waitForMetrics (t , 3 , hecMetricsConsumer )
298
- waitForLogs (t , 3 , agentLogsConsumer )
292
+ internal . WaitForMetrics (t , 3 , hecMetricsConsumer )
293
+ internal . WaitForLogs (t , 3 , agentLogsConsumer )
299
294
logs = agentLogsConsumer .AllLogs ()
300
295
sourcetypes , indices = getLogsIndexAndSourceType (logs )
301
296
t .Logf ("Indices: %v" , indices )
@@ -308,15 +303,15 @@ func testIndexSwitch(t *testing.T) {
308
303
assert .True (t , mIndices [0 ] == newMetricsIndex )
309
304
})
310
305
uninstallDeployment (t )
311
- resetLogsSink (t , agentLogsConsumer )
312
- resetMetricsSink (t , hecMetricsConsumer )
306
+ internal . ResetLogsSink (t , agentLogsConsumer )
307
+ internal . ResetMetricsSink (t , hecMetricsConsumer )
313
308
}
314
309
315
310
func testClusterReceiverEnabledOrDisabled (t * testing.T ) {
316
311
valuesFileName := "values_cluster_receiver_switching.yaml.tmpl"
317
312
namespace := "default"
318
313
logsObjectsConsumer := setupOnce (t ).logsObjectsConsumer
319
- hostEp := hostEndpoint (t )
314
+ hostEp := internal . HostEndpoint (t )
320
315
if len (hostEp ) == 0 {
321
316
require .Fail (t , "Host endpoint not found" )
322
317
}
@@ -332,30 +327,30 @@ func testClusterReceiverEnabledOrDisabled(t *testing.T) {
332
327
pods = listPodsInNamespace (t , namespace )
333
328
assert .True (t , len (pods .Items ) == 1 )
334
329
assert .True (t , strings .HasPrefix (pods .Items [0 ].Name , "sock-splunk-otel-collector-agent" ))
335
- checkNoEventsReceived (t , logsObjectsConsumer )
330
+ internal . CheckNoEventsReceived (t , logsObjectsConsumer )
336
331
337
332
t .Log ("cluster receiver enabled" )
338
333
replacements = map [string ]interface {}{
339
334
"ClusterReceiverEnabled" : true ,
340
335
"LogObjectsHecEndpoint" : logsObjectsHecEndpoint ,
341
336
}
342
337
deployChartsAndApps (t , valuesFileName , replacements )
343
- resetLogsSink (t , logsObjectsConsumer )
338
+ internal . ResetLogsSink (t , logsObjectsConsumer )
344
339
345
340
pods = listPodsInNamespace (t , namespace )
346
341
assert .True (t , len (pods .Items ) == 2 )
347
342
assert .True (t , checkPodExists (pods , "sock-splunk-otel-collector-agent" ))
348
343
assert .True (t , checkPodExists (pods , "sock-splunk-otel-collector-k8s-cluster-receiver" ))
349
- waitForLogs (t , 5 , logsObjectsConsumer )
344
+ internal . WaitForLogs (t , 5 , logsObjectsConsumer )
350
345
})
351
346
uninstallDeployment (t )
352
- resetLogsSink (t , logsObjectsConsumer )
347
+ internal . ResetLogsSink (t , logsObjectsConsumer )
353
348
}
354
349
355
350
func testVerifyLogsAndMetricsAttributes (t * testing.T ) {
356
351
attributesList := [4 ]string {"k8s.node.name" , "k8s.pod.name" , "k8s.pod.uid" , "k8s.namespace.name" }
357
352
358
- hostEp := hostEndpoint (t )
353
+ hostEp := internal . HostEndpoint (t )
359
354
if len (hostEp ) == 0 {
360
355
require .Fail (t , "Host endpoint not found" )
361
356
}
@@ -370,8 +365,8 @@ func testVerifyLogsAndMetricsAttributes(t *testing.T) {
370
365
"LogObjectsHecEndpoint" : logsObjectsHecEndpoint ,
371
366
}
372
367
deployChartsAndApps (t , valuesFileName , replacements )
373
- resetLogsSink (t , logsObjectsConsumer )
374
- waitForLogs (t , 5 , logsObjectsConsumer )
368
+ internal . ResetLogsSink (t , logsObjectsConsumer )
369
+ internal . WaitForLogs (t , 5 , logsObjectsConsumer )
375
370
t .Logf ("===> >>>> Logs: %v" , len (logsObjectsConsumer .AllLogs ()))
376
371
377
372
for _ , attr := range attributesList {
@@ -393,10 +388,10 @@ func testVerifyLogsAndMetricsAttributes(t *testing.T) {
393
388
"LogObjectsHecEndpoint" : logsObjectsHecEndpoint ,
394
389
}
395
390
deployChartsAndApps (t , valuesFileName , replacements )
396
- resetMetricsSink (t , hecMetricsConsumer )
391
+ internal . ResetMetricsSink (t , hecMetricsConsumer )
397
392
t .Logf ("===> >>>> Metrics: %d" , len (hecMetricsConsumer .AllMetrics ()))
398
393
399
- waitForMetrics (t , 5 , hecMetricsConsumer )
394
+ internal . WaitForMetrics (t , 5 , hecMetricsConsumer )
400
395
for _ , attr := range attributesList {
401
396
t .Log ("Checking attributes: " , attr )
402
397
attrValues , notFoundCounter := getMetricsAttributes (hecMetricsConsumer .AllMetrics (), attr )
@@ -415,9 +410,9 @@ func testVerifyLogsAndMetricsAttributes(t *testing.T) {
415
410
"LogsEnabled" : true ,
416
411
}
417
412
deployChartsAndApps (t , valuesFileName , replacements )
418
- resetLogsSink (t , agentLogsConsumer )
413
+ internal . ResetLogsSink (t , agentLogsConsumer )
419
414
420
- waitForLogs (t , 5 , agentLogsConsumer )
415
+ internal . WaitForLogs (t , 5 , agentLogsConsumer )
421
416
for _ , attr := range attributesList {
422
417
t .Log ("Checking attribute: " , attr )
423
418
attrValues , notFoundCounter := getLogsAttributes (agentLogsConsumer .AllLogs (), attr )
@@ -436,9 +431,9 @@ func testVerifyLogsAndMetricsAttributes(t *testing.T) {
436
431
"LogsEnabled" : true ,
437
432
}
438
433
deployChartsAndApps (t , valuesFileName , replacements )
439
- resetMetricsSink (t , hecMetricsConsumer )
434
+ internal . ResetMetricsSink (t , hecMetricsConsumer )
440
435
441
- waitForMetrics (t , 5 , hecMetricsConsumer )
436
+ internal . WaitForMetrics (t , 5 , hecMetricsConsumer )
442
437
for _ , attr := range attributesList {
443
438
t .Log ("Checking attribute: " , attr )
444
439
attrValues , notFoundCounter := getMetricsAttributes (hecMetricsConsumer .AllMetrics (), attr )
0 commit comments