summaryrefslogtreecommitdiff
path: root/test/tracetesting/run.bash
diff options
context:
space:
mode:
Diffstat (limited to 'test/tracetesting/run.bash')
-rwxr-xr-xtest/tracetesting/run.bash110
1 files changed, 110 insertions, 0 deletions
diff --git a/test/tracetesting/run.bash b/test/tracetesting/run.bash
new file mode 100755
index 0000000..3842c08
--- /dev/null
+++ b/test/tracetesting/run.bash
@@ -0,0 +1,110 @@
+# Copyright The OpenTelemetry Authors
+# SPDX-License-Identifier: Apache-2.0
+#/bin/bash
+
+# This script set up how to run Tracetest and which test files
+# be executed
+
+set -e
+
+# Availalble services to test
+ALL_SERVICES=("ad" "cart" "currency" "checkout" "frontend" "email" "payment" "product-catalog" "recommendation" "shipping")
+
+## Script variables
+# Will contain the list of services to test
+chosen_services=()
+# Array to hold process IDs
+pids=()
+# Array to hold exit codes
+exit_codes=()
+
+## Script functions
+check_if_tracetest_is_installed() {
+ if ! command -v tracetest &> /dev/null
+ then
+ echo "tracetest CLI could not be found"
+ exit -1
+ fi
+}
+
+create_env_file() {
+ cat << EOF > tracetesting-vars.yaml
+type: VariableSet
+spec:
+ id: tracetesting-vars
+ name: tracetesting-vars
+ values:
+ - key: AD_ADDR
+ value: $AD_ADDR
+ - key: CART_ADDR
+ value: $CART_ADDR
+ - key: CHECKOUT_ADDR
+ value: $CHECKOUT_ADDR
+ - key: CURRENCY_ADDR
+ value: $CURRENCY_ADDR
+ - key: EMAIL_ADDR
+ value: $EMAIL_ADDR
+ - key: FRONTEND_ADDR
+ value: $FRONTEND_ADDR
+ - key: PAYMENT_ADDR
+ value: $PAYMENT_ADDR
+ - key: PRODUCT_CATALOG_ADDR
+ value: $PRODUCT_CATALOG_ADDR
+ - key: RECOMMENDATION_ADDR
+ value: $RECOMMENDATION_ADDR
+ - key: SHIPPING_ADDR
+ value: $SHIPPING_ADDR
+ - key: KAFKA_ADDR
+ value: $KAFKA_ADDR
+EOF
+}
+
+run_tracetest() {
+ service_name=$1
+ testsuite_file=./$service_name/all.yaml
+
+ tracetest --config ./cli-config.yml run testsuite --file $testsuite_file --vars ./tracetesting-vars.yaml &
+ pids+=($!)
+}
+
+## Script execution
+while [[ $# -gt 0 ]]; do
+ chosen_services+=("$1")
+ shift
+done
+
+if [ ${#chosen_services[@]} -eq 0 ]; then
+ for service in "${ALL_SERVICES[@]}"; do
+ chosen_services+=("$service")
+ done
+fi
+
+check_if_tracetest_is_installed
+create_env_file
+
+echo "Starting tests..."
+echo "Running trace-based tests for: ${chosen_services[*]} ..."
+echo ""
+
+for service in "${chosen_services[@]}"; do
+ run_tracetest $service
+done
+
+# Wait for processes to finish and capture their exit codes
+for pid in "${pids[@]}"; do
+ wait $pid
+ exit_codes+=($?)
+done
+
+# Find the maximum exit code
+max_exit_code=0
+for code in "${exit_codes[@]}"; do
+ if [[ $code -gt $max_exit_code ]]; then
+ max_exit_code=$code
+ fi
+done
+
+echo ""
+echo "Tests done! Exit code: $max_exit_code"
+
+exit $max_exit_code