Skip to content

Commit 067c3f6

Browse files
author
Dominik Rosiek
committed
test(integration): add tailing sidecar test
Signed-off-by: Dominik Rosiek <drosiek@sumologic.com>
1 parent 7e9bc97 commit 067c3f6

File tree

5 files changed

+156
-12
lines changed

5 files changed

+156
-12
lines changed

tests/integration/features.go

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,19 @@ import (
3131
type MetricsCollector string
3232

3333
const (
34-
tickDuration = 3 * time.Second
35-
waitDuration = 1 * time.Minute
36-
expectedEventCount uint = 50 // number determined experimentally
37-
logsGeneratorCount uint = 1000
38-
logRecords = 4 // number of log records in single loop, see: tests/integration/yamls/pod_multiline_long_lines.yaml
39-
logLoops = 500 // number of loops in which logs are generated, see: tests/integration/yamls/pod_multiline_long_lines.yaml
40-
multilineLogCount uint = logRecords * logLoops
41-
tracesPerExporter uint = 5 // number of traces generated per exporter
42-
spansPerTrace uint = 2
43-
Prometheus MetricsCollector = "prometheus"
44-
Otelcol MetricsCollector = "otelcol"
45-
Fluentd MetricsCollector = "fluentd"
34+
tickDuration = 3 * time.Second
35+
waitDuration = 1 * time.Minute
36+
expectedEventCount uint = 50 // number determined experimentally
37+
logsGeneratorCount uint = 1000
38+
logRecords = 4 // number of log records in single loop, see: tests/integration/yamls/pod_multiline_long_lines.yaml
39+
logLoops = 500 // number of loops in which logs are generated, see: tests/integration/yamls/pod_multiline_long_lines.yaml
40+
multilineLogCount uint = logRecords * logLoops
41+
tracesPerExporter uint = 5 // number of traces generated per exporter
42+
spansPerTrace uint = 2
43+
Prometheus MetricsCollector = "prometheus"
44+
Otelcol MetricsCollector = "otelcol"
45+
Fluentd MetricsCollector = "fluentd"
46+
TailingSidecarCount uint = 150 // number of logs generated by tailing sidecar test (50 * 3), see: tests/inegration/yamls/tailing-sidecar-test.yaml
4647
)
4748

4849
func GetMetricsFeature(expectedMetrics []string, metricsCollector MetricsCollector) features.Feature {
@@ -482,6 +483,25 @@ func GetTracesFeature() features.Feature {
482483
Feature()
483484
}
484485

486+
func GetTailingSidecarFeature() features.Feature {
487+
return features.New("tailing sidecar test").
488+
Setup(stepfuncs.KubectlApplyFOpt(internal.TailingSidecarTest, internal.TailingSidecarTestNamespace)).
489+
Assess("tailing sidecar test logs present", stepfuncs.WaitUntilExpectedLogsPresent(
490+
TailingSidecarCount,
491+
map[string]string{
492+
"namespace": internal.TailingSidecarTestNamespace,
493+
"deployment": internal.TailingSidecarTestDeploymentName,
494+
},
495+
internal.ReceiverMockNamespace,
496+
internal.ReceiverMockServiceName,
497+
internal.ReceiverMockServicePort,
498+
waitDuration,
499+
tickDuration,
500+
)).
501+
Teardown(stepfuncs.KubectlDeleteFOpt(internal.TailingSidecarTest, internal.TailingSidecarTestNamespace)).
502+
Feature()
503+
}
504+
485505
type featureCheck func(*features.FeatureBuilder) *features.FeatureBuilder
486506

487507
func GetInstallFeature(installChecks []featureCheck) features.Feature {
@@ -877,3 +897,16 @@ func CheckFluentdEventsInstall(builder *features.FeatureBuilder) *features.Featu
877897
return ctx
878898
})
879899
}
900+
901+
func CheckTailingSidecarOperatorInstall(builder *features.FeatureBuilder) *features.FeatureBuilder {
902+
return builder.
903+
Assess("tailing sidecar deployment is ready",
904+
stepfuncs.WaitUntilDeploymentIsReady(
905+
waitDuration,
906+
tickDuration,
907+
stepfuncs.WithNameF(
908+
stepfuncs.ReleaseFormatter("%s-tailing-sidecar-operator"),
909+
),
910+
),
911+
)
912+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//go:build onlylatest
2+
// +build onlylatest
3+
4+
package integration
5+
6+
import (
7+
"testing"
8+
)
9+
10+
func Test_Helm_Tailing_Sidecar(t *testing.T) {
11+
installChecks := []featureCheck{
12+
CheckOtelcolMetadataLogsInstall,
13+
CheckTailingSidecarOperatorInstall,
14+
}
15+
16+
featInstall := GetInstallFeature(installChecks)
17+
18+
featTailingSidecarTest := GetTailingSidecarFeature()
19+
20+
testenv.Test(t, featInstall, featTailingSidecarTest)
21+
}

tests/integration/internal/constants.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ const (
3737
MultilineLogsPodName = "multiline-logs-generator"
3838
MultilineLogsGenerator = "yamls/multiline-logs-generator.yaml"
3939

40+
TailingSidecarTestNamespace = "tailing-sidecar"
41+
TailingSidecarTest = "yamls/tailing-sidecar-test.yaml"
42+
TailingSidecarTestDeploymentName = "test-tailing-sidecar-operator"
43+
4044
// useful regular expressions for matching metadata
4145
PodDeploymentSuffixRegex = "-[a-z0-9]{9,10}-[a-z0-9]{4,5}" // the Pod suffix for Deployments
4246
PodDaemonSetSuffixRegex = "-[a-z0-9]{4,5}"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
sumologic:
2+
events:
3+
enabled: false
4+
metrics:
5+
enabled: false
6+
traces:
7+
enabled: false
8+
9+
tailing-sidecar-operator:
10+
enabled: true
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
apiVersion: v1
3+
kind: Namespace
4+
metadata:
5+
name: tailing-sidecar
6+
---
7+
apiVersion: tailing-sidecar.sumologic.com/v1
8+
kind: TailingSidecarConfig
9+
metadata:
10+
name: test-tailing-sidecar-operator
11+
namespace: tailing-sidecar
12+
spec:
13+
podSelector:
14+
matchLabels:
15+
test-tailing-sidecar: "true"
16+
configs:
17+
test-sidecar:
18+
volumeMount:
19+
name: varlogconfig
20+
mountPath: /varconfig/log
21+
path: /varconfig/log/example2.log
22+
annotations:
23+
sourceCategory: test-sidecar
24+
---
25+
apiVersion: apps/v1
26+
kind: Deployment
27+
metadata:
28+
name: test-tailing-sidecar-operator
29+
namespace: tailing-sidecar
30+
labels:
31+
app: test-tailing-sidecar-operator
32+
spec:
33+
replicas: 1
34+
selector:
35+
matchLabels:
36+
tailing-sidecar: "true"
37+
test-tailing-sidecar: "true"
38+
app: test-tailing-sidecar-operator
39+
template:
40+
metadata:
41+
name: test-tailing-sidecar-operator
42+
namespace: tailing-sidecar
43+
annotations:
44+
tailing-sidecar: varlog:/var/log/example0.log;named-container:varlog:/var/log/example1.log
45+
labels:
46+
tailing-sidecar: "true"
47+
test-tailing-sidecar: "true"
48+
app: test-tailing-sidecar-operator
49+
spec:
50+
containers:
51+
- name: count
52+
image: bash
53+
args:
54+
- /usr/local/bin/bash
55+
- -c
56+
- >
57+
i=0; for i in {1..50}; do
58+
echo "example0: $i $(date)" >> /var/log/example0.log;
59+
echo "example1: $i $(date)" >> /var/log/example1.log;
60+
echo "example2: $i $(date)" >> /varconfig/log/example2.log;
61+
sleep 1;
62+
done; while true; do
63+
sleep 1;
64+
done;
65+
volumeMounts:
66+
- name: varlog
67+
mountPath: /var/log
68+
- name: varlogconfig
69+
mountPath: /varconfig/log
70+
volumes:
71+
- name: varlog
72+
emptyDir: {}
73+
- name: varlogconfig
74+
emptyDir: {}
75+
securityContext:
76+
runAsUser: 1000

0 commit comments

Comments
 (0)