Skip to content

Commit e716f30

Browse files
committed
[chore] add integration test
1 parent 0734347 commit e716f30

9 files changed

+13285
-0
lines changed
+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: CI
2+
on:
3+
push:
4+
branches:
5+
- main
6+
pull_request:
7+
jobs:
8+
java-autoinstrumentation:
9+
env:
10+
KUBECONFIG: /tmp/kube-config
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- name: make our image
15+
run: make container
16+
- name: make java autoinstrumentation image
17+
run: |
18+
cd autoinstrumentation/java && docker build -t java-autoinstrumentation:dev
19+
- name: Create kind cluster
20+
uses: helm/[email protected]
21+
with:
22+
cluster_name: kind
23+
node_image: kindest/node:v1.27.3
24+
- name: Deploy certificate signing request
25+
run: kubectl apply -f tests/integration/certs.yaml
26+
- name: Approve our certificate signing request
27+
run: kubectl certificate approve operator
28+
- name: register our image
29+
run: |
30+
img=$(docker images | grep operator | awk '{print $1":"$2}')
31+
docker tag $img manager:dev
32+
kind load docker-image manager:dev --name kind
33+
kind load docker-image java-autoinstrumentation:dev --name kind
34+
- name: Deploy collector
35+
run: kubectl apply -f tests/integration/collector.yaml
36+
- name: Deploy operator collector CRDs
37+
run: kubectl apply -f tests/integration/crd-opentelemetrycollector.yaml
38+
- name: Sleep 10s
39+
run: sleep 10
40+
- name: Deploy operator instrumentation CRDs
41+
run: kubectl apply -f tests/integration/crd-opentelemetryinstrumentation.yaml
42+
- name: Deploy operator opampbridge CRDs
43+
run: kubectl apply -f tests/integration/crd-opampbridges.yaml
44+
- name: Deploy instrumentation
45+
run: kubectl apply -f tests/integration/instrumentation.yaml
46+
- name: Sleep 10s
47+
run: sleep 10
48+
- name: Deploy operator
49+
run: kubectl apply -f tests/integration/operator.yaml
50+
- name: Sleep 10s
51+
run: sleep 10
52+
- name: Deploy java app
53+
run: kubectl apply -f tests/integration/java.yaml
54+
- name: Sleep 20s
55+
run: sleep 20
56+
- name: Check logs
57+
run: |
58+
COLLECTOR_POD=$(kubectl get pod -l app=collector -o jsonpath="{.items[0].metadata.name}")
59+
LOGS=$(kubectl logs ${COLLECTOR_POD})
60+
echo ${LOGS}
61+
echo ${LOGS} | grep "Starting Servlet engine"

tests/integration/certs.yaml

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
apiVersion: certificates.k8s.io/v1
3+
kind: CertificateSigningRequest
4+
metadata:
5+
name: operator
6+
spec:
7+
request: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQzJEQ0NBY0FDQVFBd0p6RWxNQ01HQTFVRUF3d2NiM0JsY21GMGIzSXRkMlZpYUc5dmF5NWtaV1poZFd4MApMbk4yWXpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTXcyZGoyTlByTVFyWTRTCkF1UEEwL0lsK1BBV3N5eGR0ZzZoS3prdm81VTVVTmp5NGRYbGVuOGdVTGZFaEVwS3Z0d0JvLzQvSTY4SWZpYUkKMjNjSCt0WURYYUZEYyttOVB1bXdPNWFqbldWS2F6dEt0RGUxZ3RJL0c4NTkzSko3MHBNNHFmMlNTdXZQWmlkYwprdDBIYzZwYmJjOWRmYlBXNlZxa003UzQwM0w3Y1AxdlJncmFxVE9QUGFOdUNpMXFGVm00bGd1UTMwOTA2VnVTCnlDOHNBZlREQ1FkZ3pLQkpiT044MEtsZkNBYkJzZkU5OEFsaFFONHhkZEtuWWRpWjd2Z2ZRUGR2cmRmNWpNdFgKRkx0RDNiWUY5TFlZK2prMHM5dGhpTEhjV2gwUjVuT01nTndpTURQTW53a0k2cTBIMXhHZjFNcTk0WUx0Y3RhYwovM3lNYzRNQ0F3RUFBYUJzTUdvR0NTcUdTSWIzRFFFSkRqRmRNRnN3RGdZRFZSMFBBUUgvQkFRREFnV2dNQ0FHCkExVWRKUUVCL3dRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFuQmdOVkhSRUVJREFlZ2h4dmNHVnkKWVhSdmNpMTNaV0pvYjI5ckxtUmxabUYxYkhRdWMzWmpNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFna3krYwpNbFZPd1JrUFpQdEE4cWxYMndTS3p1QmdrNGVFc3JwYm90akxXbC9HV2s0a1pqaHN4M2NEeDFXSnUwL3AxMHQxCmlzOE4zL0tnaVNPZjMzVHl6OGtaelBWekRmWTJoT09Semd0ZU01OG4vY1ErQk1UT0ZhQXBueThEVE80VzloL1oKSytSdzlwNVdrKzRvbHVOc2RTaEU5OG8zN3hVYVc4eEpYQUF4OFVDZ2g3MWdaNGJUNjhhU2doUktBWTAvM04rVQp6OTJYVWF6MVVSQXpXMnExRTNkUk15cnhxWHhCWDJLNjAvczlVKzlweXUzR1IvZ2JVaHJaNjNxMWpJZ0lPSFVHClp2aWpTUFdsQ05CNGlkd29tVW1Eb0syYWl6TXRTWnNETHdLTFcxS2RkaVFacjQxNWpBc0ovOWNXcW81MU9oSGQKcDZMYTFSVTQ4Ymhoclo3NAotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K"
8+
signerName: example.com/serving
9+
usages:
10+
- digital signature
11+
- key encipherment
12+
- server auth
13+
---
14+
apiVersion: v1
15+
kind: ConfigMap
16+
metadata:
17+
name: certs
18+
data:
19+
tls.key: |
20+
-----BEGIN PRIVATE KEY-----
21+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDMNnY9jT6zEK2O
22+
EgLjwNPyJfjwFrMsXbYOoSs5L6OVOVDY8uHV5Xp/IFC3xIRKSr7cAaP+PyOvCH4m
23+
iNt3B/rWA12hQ3PpvT7psDuWo51lSms7SrQ3tYLSPxvOfdySe9KTOKn9kkrrz2Yn
24+
XJLdB3OqW23PXX2z1ulapDO0uNNy+3D9b0YK2qkzjz2jbgotahVZuJYLkN9PdOlb
25+
ksgvLAH0wwkHYMygSWzjfNCpXwgGwbHxPfAJYUDeMXXSp2HYme74H0D3b63X+YzL
26+
VxS7Q922BfS2GPo5NLPbYYix3FodEeZzjIDcIjAzzJ8JCOqtB9cRn9TKveGC7XLW
27+
nP98jHODAgMBAAECggEAM0IQV87WSBgNmDWJKCXEjWlenNT10FMNWYq20LnWc6RZ
28+
WLtOWGQrZTF1UUswcX1lfs+inDS4/jxBfeaoP65vFbzuiYXm2Gq6Geo0atFStpQB
29+
anaL2dfjqGZS0nfhH5uY9X8pnA5WY+5BE+w2qOgv7jjYzU4IOVXeaPQCToB+AsQL
30+
XSBw+bZTyOhBrNy8gtM1wxNeKyVTbke2rI4OZybnRiRW5+1QthpdY9LtKYQPIH94
31+
B4tllHK7dfo5Mn47s0Mqlu+trxksbMU4ALnaSwafUQtY2JRkYRugUIKmngb4kx1w
32+
fgOzh1nSHzpFPq5+rFT+tOj9wRvFP+mRykTkRoBJIQKBgQDxB0TZvoP6cSnOuUDR
33+
+SFp0bBW//4gbNDzvM+a9FQfRz8bagQgjI5nlWN96jNJbTyVmXfIVbAlr3T8JVIX
34+
MwBKkDkvbAhocek54LUXLa08gQgwz3XJX4WxX5lrGc1YhQcnOFmPGUBP1tLwEAx2
35+
KQgjnPDyUe7aMsNkIYgIwAxBqQKBgQDY5cQdZRfxeKlOlwlPvcQB/bpaZVA5LhmQ
36+
hfHZRJiaPAp+prohJVSQ/UtjLHYnS1NdiH41Zi/I6L3rfRlPumC/q19p7ScJjAKd
37+
9XdlZvrIjb+Ud9h+DBMFp/axDUfEpou7yPAAn1kff6xU2h1VMP6gaLRyFFCQTCrn
38+
BqYe3YvfSwKBgQCNXm0Upbi1IMCbvm51eYEOlu2t6ZH9JLXd7+V4hkv82IX8J09q
39+
Y+Z2fNmRFdek/owlVpE6EIAzaljcN2uRrdlC4pqX5O59jCp2RwUQJjtQnIHYVyZH
40+
yV4Z7e+HMOgPPl82ssdctjvRWDf6k/8rIt/iO3/bMRE+K74Msdoe/71wmQKBgGdN
41+
2ABgG+1ImOrziN3P9kE0hcN0KadyS37ILQ5cW4pqOl1kL5aF3ydHXNaZYJUKjWQp
42+
FGN+jhfUslAsvxd4H4hqqQEckNE9PCnbtcg4Kg3HZY3jHtu6CH1TKG3fc2U4JamE
43+
5LqHKr2T45JuaDYhJcVk2TzUbCKuBGkQg6KDxpDNAoGBAIjjqCojvwrJCS+LywEv
44+
F3bqXzIvXeDjbwDOe/mQhwBLzvpsHqTkZZWuy7eOuQsOFgJLz0Az0LNRUN4RV6N7
45+
2TpKG+XuegomTsDjDkunKzewSaKmWHYOxo5jy52STmtv72jW4YhjRLYZ3MMedMpB
46+
jWuuCAvDcrNaABMyOGHzZraD
47+
-----END PRIVATE KEY-----
48+
tls.crt: |
49+
-----BEGIN CERTIFICATE-----
50+
MIIDWjCCAkKgAwIBAgIUdU5Qo8rswpglH+/B7g4/7kQRLAkwDQYJKoZIhvcNAQEL
51+
BQAwJzElMCMGA1UEAwwcb3BlcmF0b3Itd2ViaG9vay5kZWZhdWx0LnN2YzAgFw0y
52+
NDEyMjcyMDE3MDFaGA8yMDUyMDUxNDIwMTcwMVowJzElMCMGA1UEAwwcb3BlcmF0
53+
b3Itd2ViaG9vay5kZWZhdWx0LnN2YzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
54+
AQoCggEBAMw2dj2NPrMQrY4SAuPA0/Il+PAWsyxdtg6hKzkvo5U5UNjy4dXlen8g
55+
ULfEhEpKvtwBo/4/I68IfiaI23cH+tYDXaFDc+m9PumwO5ajnWVKaztKtDe1gtI/
56+
G8593JJ70pM4qf2SSuvPZidckt0Hc6pbbc9dfbPW6VqkM7S403L7cP1vRgraqTOP
57+
PaNuCi1qFVm4lguQ30906VuSyC8sAfTDCQdgzKBJbON80KlfCAbBsfE98AlhQN4x
58+
ddKnYdiZ7vgfQPdvrdf5jMtXFLtD3bYF9LYY+jk0s9thiLHcWh0R5nOMgNwiMDPM
59+
nwkI6q0H1xGf1Mq94YLtctac/3yMc4MCAwEAAaN8MHowDgYDVR0PAQH/BAQDAgWg
60+
MCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAnBgNVHREEIDAeghxv
61+
cGVyYXRvci13ZWJob29rLmRlZmF1bHQuc3ZjMB0GA1UdDgQWBBTeVi00CIUEE+Bk
62+
kEiDl25qjVcfGTANBgkqhkiG9w0BAQsFAAOCAQEAWYfXUwV9wgJhfPIZuI9puX59
63+
fXlzksS/X2EE9C9gDg5zuPLZ8MmfBglFR+xBO3PXLBKxCU0U2nwZwuKT1qbTXcHf
64+
kPywNOnMDAvbfO3I8zg+4eNeMM5WWrrL7JA6L6kSMY3wk1VPriRTajrmJP53T9rI
65+
1XZLRM6C0xl34gniOqRK+CnmpYUw0yQUi0neeMgQFmhzClaafdNWd6aerBQik1jg
66+
kn4iNr5FKfmDHNr/WrmcDJ8GTCgKU4R+f4zFFhgO7dHpUs5zD4szirq6n2ayEd8b
67+
aSU0+wL2C4Kd72AYDHrkaG2Qi19xCZJDIFqT14m5Rexpbx4i+9E6LgonqX0g4w==
68+
-----END CERTIFICATE-----
69+

tests/integration/collector.yaml

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: collector
5+
spec:
6+
replicas: 1
7+
selector:
8+
matchLabels:
9+
app: collector
10+
template:
11+
metadata:
12+
name: collector
13+
labels:
14+
app: collector
15+
spec:
16+
automountServiceAccountToken: false
17+
containers:
18+
- image: otel/opentelemetry-collector-contrib:latest
19+
name: collector
20+
imagePullPolicy: IfNotPresent
21+
volumeMounts:
22+
- name: config-volume
23+
mountPath: /etc/otelcol-contrib/config.yaml
24+
subPath: config.yaml
25+
ports:
26+
- containerPort: 4317
27+
name: otlp
28+
- containerPort: 4318
29+
name: otlphttp
30+
volumes:
31+
- name: config-volume
32+
configMap:
33+
name: collector-config
34+
---
35+
apiVersion: v1
36+
kind: Service
37+
metadata:
38+
name: collector
39+
namespace: default
40+
spec:
41+
ports:
42+
- port: 4317
43+
protocol: TCP
44+
targetPort: otlp
45+
name: otlp
46+
- port: 4318
47+
protocol: TCP
48+
targetPort: otlphttp
49+
name: otlphttp
50+
selector:
51+
app: collector
52+
---
53+
apiVersion: v1
54+
kind: ConfigMap
55+
metadata:
56+
name: collector-config
57+
namespace: default
58+
data:
59+
config.yaml: |
60+
receivers:
61+
otlp:
62+
protocols:
63+
grpc:
64+
endpoint: "0.0.0.0:4317"
65+
http:
66+
endpoint: "0.0.0.0:4318"
67+
exporters:
68+
debug:
69+
verbosity: detailed
70+
service:
71+
pipelines:
72+
metrics:
73+
receivers: [otlp]
74+
exporters: [debug]
75+
traces:
76+
receivers: [otlp]
77+
exporters: [debug]
78+
logs:
79+
receivers: [otlp]
80+
exporters: [debug]

0 commit comments

Comments
 (0)