Skip to content

Modifying operator test for python and java simultaneous instrumentation #106

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 55 commits into from
May 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
c8b9f79
adding python and java simultaneous instrumentation
Paramadon Mar 5, 2024
5e81549
removing wrong env var
Paramadon Mar 5, 2024
d1df896
removing more wrong env vars
Paramadon Mar 5, 2024
99cacf8
removing more wrong env vars
Paramadon Mar 5, 2024
de31667
adding python and java instrumentation
Paramadon Mar 5, 2024
6eb5353
adding python and java instrumentation
Paramadon Mar 5, 2024
6941052
Merge branch 'main' into pythonjavaInstrumentation
Paramadon Mar 6, 2024
2f27137
adding integration test for new enablement experience
Paramadon Mar 12, 2024
1ea4c6a
Merge remote-tracking branch 'origin/pythonjavaInstrumentation' into …
Paramadon Mar 14, 2024
9e5a976
Merge branch 'main' into pythonjavaInstrumentation
Paramadon Mar 18, 2024
d0a5e7e
removing unecessary changes
Paramadon Mar 18, 2024
0026336
Merge branch 'pythonjavaInstrumentation' of github.com:aws/amazon-clo…
Paramadon Mar 18, 2024
84c9316
adding back annotations to sample app
Paramadon Mar 18, 2024
4226208
fixing no env vars when both python and java instrumented
Paramadon Mar 18, 2024
0ebb491
trying to deploy a different operator version
Paramadon Mar 18, 2024
b981021
make deploy
Paramadon Mar 19, 2024
47510fc
fixing some issues
Paramadon Mar 19, 2024
d0504d4
doing a git pull
Paramadon Apr 23, 2024
062a350
fixing operator integration test
Paramadon Apr 23, 2024
e7806da
testing if operator is working
Paramadon Apr 23, 2024
b92beb2
testing if operator is working
Paramadon Apr 23, 2024
8c9cd69
replacing operator installation from make deploy to helm chart
Paramadon Apr 24, 2024
e8ca07f
replacing operator installation from make deploy to helm chart
Paramadon Apr 24, 2024
9b43d02
adding debug statements
Paramadon Apr 24, 2024
f1722e5
adding debug statements
Paramadon Apr 24, 2024
e0d8bba
adding debug statements
Paramadon Apr 24, 2024
0b3736e
adding debug statements
Paramadon Apr 24, 2024
bfab47e
adding debug statements
Paramadon Apr 24, 2024
eef696b
doing git pull
Paramadon Apr 26, 2024
e57d1be
adding feature gate
Paramadon Apr 26, 2024
ba59131
added instrumentation
Paramadon Apr 26, 2024
63c0353
controller manager
Paramadon Apr 26, 2024
7dd2990
fixing bug
Paramadon Apr 26, 2024
d6a6756
lowering times
Paramadon Apr 29, 2024
e08b517
fixing test
Paramadon Apr 29, 2024
51f6913
fixing instrumentation
Paramadon Apr 29, 2024
f24c2b5
fixing instrumentation
Paramadon Apr 29, 2024
cbb76f0
fixing keys
Paramadon Apr 29, 2024
07720b8
removing patch from operator
Paramadon Apr 29, 2024
80ede30
fixed python issue
Paramadon Apr 29, 2024
f269124
fixed python issue
Paramadon Apr 29, 2024
bd825d6
adding restart to nginx
Paramadon Apr 29, 2024
d2e3199
fixed timing
Paramadon Apr 29, 2024
7e7af5c
fixed wait cond
Paramadon Apr 29, 2024
0e5273a
waiting to delete pod
Paramadon Apr 29, 2024
3d13e68
fixing ready cond
Paramadon Apr 30, 2024
b3e86f2
remove deleting pod
Paramadon Apr 30, 2024
919adaf
removing unnecessary waits
Paramadon Apr 30, 2024
30321d7
Merge branch 'main' of github.com:aws/amazon-cloudwatch-agent-operato…
Paramadon Apr 30, 2024
d004092
fix wait command
Paramadon Apr 30, 2024
7bb9bfc
fixing wait
Paramadon Apr 30, 2024
148ade7
quick change
Paramadon Apr 30, 2024
1f76af3
merging in main
Paramadon May 6, 2024
a273b5c
removing unnecessary file
Paramadon May 6, 2024
2759fc9
done to merge
Paramadon May 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 27 additions & 9 deletions .github/workflows/operator-integration-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ jobs:
- name: Test for default instrumentation resources for Java
run: |
kubectl apply -f integration-tests/java/sample-deployment-java.yaml
sleep 5
# sleep is to make sure the app is fully active before restart wait doesn't work as accurately
sleep 5
kubectl get pods -A
kubectl describe pods -n default
go run integration-tests/manifests/cmd/validate_instrumentation_vars.go default integration-tests/java/default_instrumentation_java_env_variables.json
Expand All @@ -81,7 +82,7 @@ jobs:
kubectl apply -f integration-tests/manifests/sample-instrumentation.yaml
sleep 5
kubectl rollout restart deployment nginx
sleep 5
kubectl wait --for=condition=Available deployment/nginx -n default
kubectl get pods -A
kubectl describe pods -n default
cd integration-tests/manifests/cmd
Expand All @@ -93,25 +94,45 @@ jobs:
kubectl apply -f integration-tests/python/sample-deployment-python.yaml
sleep 5
kubectl rollout restart deployment nginx
sleep 5
kubectl wait --for=condition=Available deployment/nginx -n default
kubectl get pods -A
kubectl describe pods -n default
go run integration-tests/manifests/cmd/validate_instrumentation_vars.go default integration-tests/python/default_instrumentation_python_env_variables.json


- name: Test for defined instrumentation resources for python
run: |
kubectl apply -f integration-tests/manifests/sample-instrumentation.yaml
sleep 5
kubectl rollout restart deployment nginx
sleep 5
kubectl get pods -A
kubectl wait --for=condition=Available deployment/nginx -n default
kubectl describe pods -n default
cd integration-tests/manifests/cmd
go run validate_instrumentation_vars.go default ns_instrumentation_env_variables.json
kubectl delete instrumentation sample-instrumentation

- name: Test for default instrumentation resources for python and java
run: |
kubectl apply -f integration-tests/python-java/sample-deployment-python-java.yaml
sleep 5
kubectl rollout restart deployment nginx
kubectl wait --for=condition=Available deployment/nginx -n default
sleep 5
kubectl get pods -A
kubectl describe pods -n default
kubectl describe pods -n amazon-cloudwatch
go run integration-tests/manifests/cmd/validate_instrumentation_vars.go default integration-tests/python-java/default_instrumentation_python-java_env_variables.json

- name: Test for defined instrumentation resources for python and java
run: |
kubectl apply -f integration-tests/manifests/sample-instrumentation.yaml
sleep 5
kubectl rollout restart deployment nginx
kubectl wait --for=condition=Available deployment/nginx -n default
kubectl get pods -A
kubectl describe pods -n default
cd integration-tests/manifests/cmd
go run validate_instrumentation_vars.go default ns_instrumentation_env_variables.json
kubectl delete instrumentation sample-instrumentation

DeploymentAnnotationsTest:
name: DeploymentAnnotationsTest
Expand Down Expand Up @@ -308,8 +329,5 @@ jobs:
go test -v -run TestPythonOnlyNamespace ./integration-tests/manifests/annotations -timeout 30m
sleep 5
go test -v -run TestAlreadyAutoAnnotatedResourceShouldNotRestart ./integration-tests/manifests/annotations -timeout 30m
kubectl get pods -A
kubectl describe pods -n default



2 changes: 2 additions & 0 deletions config/manager/manager.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ spec:
spec:
containers:
- image: controller
args:
- "--feature-gates=operator.autoinstrumentation.multi-instrumentation,operator.autoinstrumentation.multi-instrumentation.skip-container-validation"
name: manager
resources:
requests:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"OTEL_TRACES_SAMPLER":"traceidratio",
"OTEL_TRACES_SAMPLER_ARG": "0.5",
"OTEL_EXPORTER_OTLP_ENDPOINT":"http://example.com/collector",
"OTEL_PROPAGATORS": "tracecontext,baggage,b3"
"OTEL_PROPAGATORS": "tracecontext,baggage,b3,xray"
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,10 @@ func main() {
}

func verifyInstrumentationEnvVariables(clientset *kubernetes.Clientset, namespace, jsonPath string) bool {
podList, err := clientset.CoreV1().Pods(namespace).List(context.TODO(), metav1.ListOptions{LabelSelector: "app=nginx"})
podList, err := clientset.CoreV1().Pods(namespace).List(context.TODO(), metav1.ListOptions{
LabelSelector: "app=nginx",
FieldSelector: "status.phase!=Terminating",
})
if err != nil {
fmt.Println("Error retrieving pods:", err)
return false
Expand Down
3 changes: 2 additions & 1 deletion integration-tests/manifests/sample-instrumentation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ spec:
propagators:
- tracecontext
- baggage
- b3
- b3
- xray
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

{
"PYTHONPATH": "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation:/otel-auto-instrumentation-python",
"OTEL_AWS_APP_SIGNALS_ENABLED": "true",
"OTEL_TRACES_SAMPLER_ARG": "endpoint=http://cloudwatch-agent.amazon-cloudwatch:2000",
"OTEL_TRACES_SAMPLER": "xray",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT": "http://cloudwatch-agent.amazon-cloudwatch:4316/v1/traces",
"OTEL_AWS_APP_SIGNALS_EXPORTER_ENDPOINT": "http://cloudwatch-agent.amazon-cloudwatch:4316/v1/metrics",
"OTEL_METRICS_EXPORTER": "none",
"OTEL_PYTHON_DISTRO": "aws_distro",
"OTEL_PYTHON_CONFIGURATOR": "aws_configurator",
"OTEL_SMP_ENABLED": "true",
"OTEL_AWS_SMP_EXPORTER_ENDPOINT": "http://cloudwatch-agent.amazon-cloudwatch:4316/v1/metrics",
"JAVA_TOOL_OPTIONS": "-javaagent:/otel-auto-instrumentation-java/javaagent.jar"

}
21 changes: 21 additions & 0 deletions integration-tests/python-java/sample-deployment-python-java.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
annotations:
instrumentation.opentelemetry.io/inject-python: "true"
instrumentation.opentelemetry.io/inject-java: "true"
spec:
containers:
- name: nginx
image: nginx:1.14.2
restartPolicy: Always
status: {}