Skip to content

Commit e475580

Browse files
committed
Add e2e test case
Signed-off-by: Janario Oliveira <[email protected]>
1 parent 87dba94 commit e475580

8 files changed

+200
-0
lines changed

Makefile

+13
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,19 @@ prepare-e2e: chainsaw set-image-controller add-image-targetallocator add-image-o
258258
.PHONY: prepare-e2e-with-featuregates
259259
prepare-e2e-with-featuregates: chainsaw enable-operator-featuregates prepare-e2e
260260

261+
.PHONY: enable-watch-namespace
262+
enable-watch-namespace: PATCH = [{"op":"add","path":"/spec/template/spec/containers/0/env","value": [ {"name": "K8S_NAMESPACE", "valueFrom": {"fieldRef": { "fieldPath": "metadata.namespace" } } }, {"name": "WATCH_NAMESPACE", "value": "$$(K8S_NAMESPACE),watch-ns"} ] }]
263+
enable-watch-namespace: manifests kustomize
264+
cd config/manager && $(KUSTOMIZE) edit add patch --kind Deployment --patch '$(PATCH)'
265+
266+
.PHONY: prepare-e2e-watch-namespace
267+
prepare-e2e-watch-namespace: chainsaw enable-watch-namespace prepare-e2e
268+
269+
# end-to-tests
270+
.PHONY: e2e-watch-namespace
271+
e2e-watch-namespace: chainsaw
272+
$(CHAINSAW) test --test-dir ./tests/e2e-watch-namespace
273+
261274
.PHONY: scorecard-tests
262275
scorecard-tests: operator-sdk
263276
$(OPERATOR_SDK) scorecard -w=5m bundle || (echo "scorecard test failed" && exit 1)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
apiVersion: opentelemetry.io/v1alpha1
2+
kind: OpenTelemetryCollector
3+
metadata:
4+
name: deployment
5+
namespace: opentelemetry-operator-system
6+
spec:
7+
config: |
8+
receivers:
9+
otlp:
10+
protocols:
11+
grpc:
12+
http:
13+
processors:
14+
15+
exporters:
16+
debug:
17+
18+
service:
19+
pipelines:
20+
traces:
21+
receivers: [otlp]
22+
processors: []
23+
exporters: [debug]
24+
mode: deployment
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: opentelemetry.io/v1alpha1
2+
kind: Instrumentation
3+
metadata:
4+
name: deployment
5+
namespace: opentelemetry-operator-system
6+
spec:
7+
exporter:
8+
endpoint: http://deployment-collector.opentelemetry-operator-system:4317
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: my-deploy
5+
spec:
6+
selector:
7+
matchLabels:
8+
app: my-deploy
9+
replicas: 1
10+
template:
11+
metadata:
12+
labels:
13+
app: my-deploy
14+
annotations:
15+
instrumentation.opentelemetry.io/inject-java: "opentelemetry-operator-system/deployment"
16+
spec:
17+
containers:
18+
- name: myapp
19+
image: ghcr.io/open-telemetry/opentelemetry-operator/e2e-test-app-java:main
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
annotations:
5+
instrumentation.opentelemetry.io/inject-java: "opentelemetry-operator-system/deployment"
6+
labels:
7+
app: my-deploy
8+
spec:
9+
(initContainers == null): true
10+
(length(containers)): 1
11+
containers:
12+
- name: myapp
13+
(env == null): true
14+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# yaml-language-server: $schema=https://raw.githubusercontent.com/kyverno/chainsaw/main/.schemas/json/test-chainsaw-v1alpha1.json
2+
apiVersion: chainsaw.kyverno.io/v1alpha1
3+
kind: Test
4+
metadata:
5+
creationTimestamp: null
6+
name: not-watch-ns
7+
spec:
8+
namespace: not-watch-ns
9+
steps:
10+
- name: step-00
11+
skipDelete: true
12+
try:
13+
# when running in parallel it seems to conflict a bit on both tests creating the collector
14+
# opentelemetrycollectors.opentelemetry.io "deployment" already exists
15+
- sleep:
16+
duration: 5s
17+
18+
- apply:
19+
file: ../00-install-collector.yaml
20+
- apply:
21+
file: ../00-install-instrumentation.yaml
22+
# wait not working :-(
23+
- sleep:
24+
duration: 10s
25+
# Deployment
26+
- name: step-01
27+
try:
28+
- apply:
29+
file: ../01-deployment.yaml
30+
- assert:
31+
timeout: 60s
32+
file: 01-assert.yaml
33+
catch:
34+
- podLogs:
35+
selector: app=my-deploy
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
annotations:
5+
instrumentation.opentelemetry.io/inject-java: "opentelemetry-operator-system/deployment"
6+
labels:
7+
app: my-deploy
8+
spec:
9+
initContainers:
10+
- name: opentelemetry-auto-instrumentation-java
11+
(volumeMounts[?name == 'opentelemetry-auto-instrumentation-java']):
12+
- name: opentelemetry-auto-instrumentation-java
13+
mountPath: /otel-auto-instrumentation-java
14+
(containers[?name == 'myapp']):
15+
- name: myapp
16+
env:
17+
- name: OTEL_NODE_IP
18+
- name: OTEL_POD_IP
19+
- name: JAVA_TOOL_OPTIONS
20+
- name: OTEL_SERVICE_NAME
21+
value: my-deploy
22+
- name: OTEL_EXPORTER_OTLP_ENDPOINT
23+
value: http://deployment-collector.opentelemetry-operator-system:4317
24+
- name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME
25+
- name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME
26+
- name: OTEL_RESOURCE_ATTRIBUTES
27+
(volumeMounts[?name == 'opentelemetry-auto-instrumentation-java']):
28+
- name: opentelemetry-auto-instrumentation-java
29+
mountPath: /otel-auto-instrumentation-java
30+
(volumes[?name == 'opentelemetry-auto-instrumentation-java']):
31+
- name: opentelemetry-auto-instrumentation-java
32+
emptyDir: {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# yaml-language-server: $schema=https://raw.githubusercontent.com/kyverno/chainsaw/main/.schemas/json/test-chainsaw-v1alpha1.json
2+
apiVersion: chainsaw.kyverno.io/v1alpha1
3+
kind: Test
4+
metadata:
5+
creationTimestamp: null
6+
name: watch-ns
7+
spec:
8+
namespace: watch-ns
9+
steps:
10+
- name: step-00
11+
skipDelete: true
12+
try:
13+
- apply:
14+
file: ../00-install-collector.yaml
15+
- apply:
16+
file: ../00-install-instrumentation.yaml
17+
# wait not working :-(
18+
- sleep:
19+
duration: 10s
20+
# - command:
21+
# entrypoint: kubectl
22+
# args:
23+
# - wait
24+
# - pods
25+
# - --for
26+
# - condition=Ready="true"
27+
# - -l
28+
# - app.kubernetes.io/name=deployment-collector
29+
# - -n
30+
# - opentelemetry-operator-system
31+
# - --timeout
32+
# - 10s
33+
## - 1m
34+
# - -v
35+
# - '8'
36+
# - wait:
37+
# resource: pods
38+
# selector: 'app.kubernetes.io/name=deployment-collector'
39+
# timeout: 10s
40+
# namespace: opentelemetry-operator-system
41+
# for:
42+
# condition:
43+
# name: Ready
44+
# value: 'true'
45+
# Deployment
46+
- name: step-01
47+
try:
48+
- apply:
49+
file: ../01-deployment.yaml
50+
- assert:
51+
timeout: 60s
52+
file: 01-assert.yaml
53+
catch:
54+
- podLogs:
55+
selector: app=my-deploy

0 commit comments

Comments
 (0)