diff --git a/examples/tracetest-azure-app-insights-pokeshop/.env.template b/examples/tracetest-azure-app-insights-pokeshop/.env.template new file mode 100644 index 0000000000..caabb107b1 --- /dev/null +++ b/examples/tracetest-azure-app-insights-pokeshop/.env.template @@ -0,0 +1,9 @@ +# Get the required information here: https://app.tracetest.io/retrieve-token + +TRACETEST_TOKEN="" +TRACETEST_ENVIRONMENT_ID="" + +# Azure +APP_INSIGHTS_ACCESS_TOKEN="" +APP_INSIGHTS_ARM_ID="/subscriptions//resourceGroups/app-insights-1/providers/microsoft.insights/components/" +APP_INSIGHTS_INSTRUMENTATION_STRING="" diff --git a/examples/tracetest-azure-app-insights-pokeshop/Dockerfile.tracetest b/examples/tracetest-azure-app-insights-pokeshop/Dockerfile.tracetest new file mode 100644 index 0000000000..883f239155 --- /dev/null +++ b/examples/tracetest-azure-app-insights-pokeshop/Dockerfile.tracetest @@ -0,0 +1,11 @@ +FROM alpine + +WORKDIR /app +ARG TRACETEST_IMAGE_VERSION=v1.4.0 + +RUN apk --update add bash jq curl +RUN curl -L https://raw.githubusercontent.com/kubeshop/tracetest/main/install-cli.sh | bash -s -- $TRACETEST_IMAGE_VERSION + +WORKDIR /resources + +ENTRYPOINT ["echo", "Tracetest CLI installed"] diff --git a/examples/tracetest-azure-app-insights-pokeshop/resources/apply.sh b/examples/tracetest-azure-app-insights-pokeshop/resources/apply.sh new file mode 100644 index 0000000000..bf3bc16e55 --- /dev/null +++ b/examples/tracetest-azure-app-insights-pokeshop/resources/apply.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +TOKEN=$TRACETEST_TOKEN +ENVIRONMENT_ID=$TRACETEST_ENVIRONMENT_ID +ARM_ID=$APP_INSIGHTS_ARM_ID +ACCESS_TOKEN=$APP_INSIGHTS_ACCESS_TOKEN + +apply() { + echo "Configuring TraceTest" + tracetest configure --token $TOKEN --environment $ENVIRONMENT_ID + + echo " +type: DataStore +spec: + name: azureappinsights + type: azureappinsights + azureappinsights: + connectionType: direct + resourceArmId: ${ARM_ID} + accessToken: ${ACCESS_TOKEN} + useAzureActiveDirectoryAuth: false +" > /resources/datastore.yaml + + echo "Applying Resources" + tracetest apply datastore -f /resources/datastore.yaml + tracetest apply pollingprofile -f /resources/pollingprofile.yaml + tracetest apply test -f /resources/test.yaml +} + +apply diff --git a/examples/tracetest-azure-app-insights-pokeshop/resources/pollingprofile.yaml b/examples/tracetest-azure-app-insights-pokeshop/resources/pollingprofile.yaml new file mode 100644 index 0000000000..36e51f6e09 --- /dev/null +++ b/examples/tracetest-azure-app-insights-pokeshop/resources/pollingprofile.yaml @@ -0,0 +1,9 @@ +--- +type: PollingProfile +spec: + id: azure + name: azure + strategy: periodic + periodic: + retryDelay: 4s + timeout: 10m diff --git a/examples/tracetest-azure-app-insights-pokeshop/resources/run.sh b/examples/tracetest-azure-app-insights-pokeshop/resources/run.sh new file mode 100644 index 0000000000..05d0f41724 --- /dev/null +++ b/examples/tracetest-azure-app-insights-pokeshop/resources/run.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +TOKEN=$TRACETEST_TOKEN +ENVIRONMENT_ID=$TRACETEST_ENVIRONMENT_ID + +run() { + echo "Configuring Tracetest" + tracetest configure --token $TOKEN --environment $ENVIRONMENT_ID + + echo "Running Trace-Based Tests..." + tracetest run test -f /resources/test.yaml +} + +run diff --git a/examples/tracetest-azure-app-insights-pokeshop/resources/test.yaml b/examples/tracetest-azure-app-insights-pokeshop/resources/test.yaml new file mode 100644 index 0000000000..9cdb2de168 --- /dev/null +++ b/examples/tracetest-azure-app-insights-pokeshop/resources/test.yaml @@ -0,0 +1,28 @@ +type: Test +spec: + id: -ao9stJVg + name: Pokeshop - Import + description: Import a Pokemon + pollingProfile: azure + trigger: + type: http + httpRequest: + url: http://demo-api:8081/pokemon/import + method: POST + headers: + - key: Content-Type + value: application/json + body: '{"id":6}' + specs: + - name: Import Pokemon Span Exists + selector: span[tracetest.span.type="general" name="import pokemon"] + assertions: + - attr:tracetest.selected_spans.count = 1 + - name: Uses Correct PokemonId + selector: span[tracetest.span.type="http" name="GET /pokemon/6" http.method="GET"] + assertions: + - attr:http.url = "https://pokeapi.co/api/v2/pokemon/6" + - name: Matching db result with the Pokemon Name + selector: span[tracetest.span.type="database" name="create pokeshop.pokemon"]:first + assertions: + - attr:db.result contains "charizard"