11#! /usr/bin/env bash
22
33# Runs selected Gradle test tasks to regenerate *.telemetry output for
4- # individual OpenTelemetry Java agent instrumentations.
4+ # individual OpenTelemetry Java agent instrumentations. Some instrumentation test suites don't run
5+ # on Apple Silicon, so we use colima to run them in an x86_64 container.
56
67set -euo pipefail
78
8- # Oracle UCP won't run on Apple Silicon, so we need to use colima to run as x86_64
9- if [[ " $( uname -m) " == " arm64" || " $( uname -m) " == " aarch64" ]]; then
10- colima start --arch x86_64 --memory 4
11- export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
12- export DOCKER_HOST=" unix://${HOME} /.colima/docker.sock"
13- fi
14-
159readonly INSTRUMENTATIONS=(
1610 # <module path (colon-separated)> : <javaagent|library> : [ gradle-task-suffix ]
1711 " activej-http-6.0:javaagent:test"
@@ -66,12 +60,15 @@ readonly INSTRUMENTATIONS=(
6660 " hikaricp-3.0:javaagent:testStableSemconv"
6761 " tomcat:tomcat-jdbc:javaagent:test"
6862 " tomcat:tomcat-jdbc:javaagent:testStableSemconv"
69- " oracle-ucp-11.2:javaagent:test"
70- " oracle-ucp-11.2:javaagent:testStableSemconv"
7163 " oshi:javaagent:test"
7264 " oshi:javaagent:testExperimental"
7365 " vibur-dbcp-11.0:javaagent:test"
7466 " vibur-dbcp-11.0:javaagent:testStableSemconv"
67+ " elasticsearch:elasticsearch-api-client-7.16:javaagent:test"
68+ " elasticsearch:elasticsearch-api-client-7.16:javaagent:testStableSemconv"
69+ " elasticsearch:elasticsearch-rest-5.0:javaagent:test"
70+ " elasticsearch:elasticsearch-rest-6.4:javaagent:test"
71+ " elasticsearch:elasticsearch-rest-7.0:javaagent:test"
7572 " elasticsearch:elasticsearch-transport-5.0:javaagent:test"
7673 " elasticsearch:elasticsearch-transport-5.0:javaagent:testStableSemconv"
7774 " elasticsearch:elasticsearch-transport-5.0:javaagent:testExperimental"
@@ -89,6 +86,11 @@ readonly INSTRUMENTATIONS=(
8986 " elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestExperimental"
9087)
9188
89+ readonly COLIMA_INSTRUMENTATIONS=(
90+ " oracle-ucp-11.2:javaagent:test"
91+ " oracle-ucp-11.2:javaagent:testStableSemconv"
92+ )
93+
9294readonly TELEMETRY_DIR_NAME=" .telemetry"
9395
9496# Splits a single descriptor into its three logical parts.
@@ -159,39 +161,88 @@ build_gradle_task() {
159161 echo " $task "
160162}
161163
164+ # Processes a list of descriptors and returns an array of Gradle tasks
165+ # Args: array of descriptors
166+ # Echoes the Gradle tasks, one per line
167+ process_descriptors () {
168+ local descriptors=(" $@ " )
169+ local -a tasks=()
170+
171+ for descriptor in " ${descriptors[@]} " ; do
172+ # Parse the descriptor into its components
173+ if ! read -r module_path task_type task_suffix \
174+ < <( parse_descriptor " $descriptor " ) ; then
175+ continue # skip any badly formed descriptors
176+ fi
177+
178+ # Make sure we're starting fresh for this instrumentation
179+ delete_existing_telemetry " $module_path "
180+
181+ # Build the Gradle task string and add to array
182+ tasks+=( " $( build_gradle_task " $module_path " " $task_type " " $task_suffix " ) " )
183+ done
184+
185+ # Echo tasks, one per line
186+ for t in " ${tasks[@]} " ; do
187+ echo " $t "
188+ done
189+ }
190+
191+ run_gradle_tasks () {
192+ local -a tasks=(" $@ " )
193+
194+ if [[ ${# tasks[@]} -eq 0 ]]; then
195+ echo " No tasks to run"
196+ return 0
197+ fi
198+
199+ echo
200+ echo " Running Gradle tasks:"
201+ printf ' %s\n' " ${tasks[@]} "
202+ echo
203+
204+ ./gradlew " ${tasks[@]} " \
205+ -PcollectMetadata=true \
206+ --rerun-tasks --continue
207+ }
208+
162209# Cleans any stray .telemetry directories left in the repo.
163210find_and_remove_all_telemetry () {
164211 echo " Removing stray .telemetry directories..."
165212 find . -type d -name " $TELEMETRY_DIR_NAME " -exec rm -rf {} +
166213}
167214
168- # Main
169- declare -a gradle_tasks=()
170215
171- for descriptor in " ${INSTRUMENTATIONS[@]} " ; do
172- # Parse the descriptor into its components
173- if ! read -r module_path task_type task_suffix \
174- < <( parse_descriptor " $descriptor " ) ; then
175- continue # skip any badly formed descriptors
176- fi
216+ # Main execution
217+ main () {
218+ colima stop
219+
220+ # Process regular instrumentations
221+ echo " Processing standard instrumentations..."
222+ gradle_tasks=()
223+ while IFS= read -r line; do
224+ gradle_tasks+=(" $line " )
225+ done < <( process_descriptors " ${INSTRUMENTATIONS[@]} " )
226+ run_gradle_tasks " ${gradle_tasks[@]} "
177227
178- # Make sure we’re starting fresh for this instrumentation
179- delete_existing_telemetry " $module_path "
228+ # Setup colima for Oracle UCP tests if needed
229+ setup_colima
180230
181- # Build the Gradle task string and queue it
182- gradle_tasks+=( " $( build_gradle_task " $module_path " " $task_type " " $task_suffix " ) " )
183- done
231+ # Process colima-specific instrumentations
232+ echo " Processing colima instrumentations..."
233+ gradle_tasks=()
234+ while IFS= read -r line; do
235+ gradle_tasks+=(" $line " )
236+ done < <( process_descriptors " ${COLIMA_INSTRUMENTATIONS[@]} " )
237+ run_gradle_tasks " ${gradle_tasks[@]} "
184238
185- echo
186- echo " Running Gradle tasks:"
187- printf ' %s\n' " ${gradle_tasks[@]} "
188- echo
239+ colima stop
189240
190- ./gradlew " ${gradle_tasks[@]} " \
191- -PcollectMetadata=true \
192- --rerun-tasks --continue
241+ # uncomment the next line to remove all .telemetry directories
242+ # find_and_remove_all_telemetry
193243
194- # uncomment the next line to remove all .telemetry directories
195- # find_and_remove_all_telemetry
244+ echo " Telemetry file regeneration complete. "
245+ }
196246
197- echo " Telemetry file regeneration complete."
247+ # Run main function
248+ main " $@ "
0 commit comments