From 718dee00306f4aebd6038d49c8f823d9c2feab9d Mon Sep 17 00:00:00 2001 From: Spherrrical Date: Thu, 2 Apr 2026 14:42:45 -0700 Subject: [PATCH] ci(e2e): stabilize preference demo test execution --- .github/workflows/ci.yml | 4 ++-- demos/shared/test_runner/run_demo_tests.sh | 26 +++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 719ad01e..33dbd539 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -477,7 +477,7 @@ jobs: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} run: | source venv/bin/activate - cd demos/shared/test_runner && sh run_demo_tests.sh llm_routing/preference_based_routing + cd demos/shared/test_runner && bash run_demo_tests.sh llm_routing/preference_based_routing # ────────────────────────────────────────────── # E2E: demo — currency conversion @@ -527,4 +527,4 @@ jobs: GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }} run: | source venv/bin/activate - cd demos/shared/test_runner && sh run_demo_tests.sh advanced/currency_exchange + cd demos/shared/test_runner && bash run_demo_tests.sh advanced/currency_exchange diff --git a/demos/shared/test_runner/run_demo_tests.sh b/demos/shared/test_runner/run_demo_tests.sh index 0c098106..09840814 100644 --- a/demos/shared/test_runner/run_demo_tests.sh +++ b/demos/shared/test_runner/run_demo_tests.sh @@ -14,6 +14,30 @@ DEMOS="$@" echo "Running tests for demos: $DEMOS" +run_hurl_with_retries() { + local demo_name="$1" + local max_attempts=1 + local attempt=1 + + if [ "$demo_name" = "llm_routing/preference_based_routing" ]; then + max_attempts=3 + fi + + while true; do + if hurl hurl_tests/*.hurl; then + return 0 + fi + + if [ "$attempt" -ge "$max_attempts" ]; then + return 1 + fi + + attempt=$((attempt + 1)) + echo "hurl failed for $demo_name, retrying (attempt $attempt/$max_attempts) ..." + sleep 2 + done +} + for demo in $DEMOS do echo "******************************************" @@ -31,7 +55,7 @@ do echo "skipping docker compose for $demo" fi echo "starting hurl tests" - if ! hurl hurl_tests/*.hurl; then + if ! run_hurl_with_retries "$demo"; then echo "Hurl tests failed for $demo" echo "docker logs for plano:" docker logs plano | tail -n 100