diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index cae2c7fe..0b778352 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -7,6 +7,10 @@ on: jobs: build-test: + strategy: + fail-fast: false + matrix: + protocol: [http, non_http] runs-on: - benchmark @@ -30,6 +34,7 @@ jobs: - name: Build and Run Tests env: + TEST_PROTOCOL: ${{ matrix.protocol }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -66,4 +71,3 @@ jobs: LENZ_TAG: dev run: BUILD_COMPLETE=true ./ci.sh shell: bash - diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 55ed1f1a..dabbdbf0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,6 +7,10 @@ on: jobs: build_and_test: + strategy: + fail-fast: false + matrix: + protocol: [http, non_http] runs-on: - benchmark @@ -30,6 +34,7 @@ jobs: - name: Build and Run Tests env: + TEST_PROTOCOL: ${{ matrix.protocol }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 924ffc88..284be9dc 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -7,6 +7,10 @@ on: jobs: run_test: + strategy: + fail-fast: false + matrix: + protocol: [http, non_http] runs-on: - gcp @@ -34,11 +38,12 @@ jobs: - name: Build and Run Tests env: + TEST_PROTOCOL: ${{ matrix.protocol }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} GCP_SERVICE_ACCOUNT_KEY: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} - RUNNER_NAME: ${{ runner.name }} + RUNNER_NAME: ${{ runner.name }}_${{ matrix.protocol }} RUN_TESTS: true NO_PUSH: true BRANCH_NAME: ${{ github.event.pull_request.head.ref }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c903f5d5..d604b4c1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -7,6 +7,10 @@ on: jobs: build-test: + strategy: + fail-fast: false + matrix: + protocol: [http, non_http] runs-on: - self-hosted @@ -35,10 +39,12 @@ jobs: - name: Build and Run Tests env: + TEST_PROTOCOL: ${{ matrix.protocol }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} GCP_SERVICE_ACCOUNT_KEY: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} + RUNNER_NAME: ${{ runner.name }}_${{ matrix.protocol }} run: RUN_TESTS=true NO_PUSH=true UPDATE_BRANCH=true ./ci.sh shell: bash @@ -64,4 +70,4 @@ jobs: - name: Build Notebook Docker run: BUILD_COMPLETE=true NO_PUSH=true ./ci.sh - shell: bash \ No newline at end of file + shell: bash diff --git a/test/run_test_container.sh b/test/run_test_container.sh index c51c792f..99e23725 100755 --- a/test/run_test_container.sh +++ b/test/run_test_container.sh @@ -30,8 +30,16 @@ function run_aperturedb_instance(){ IP_REGEX='[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' -GATEWAY_HTTP=$(run_aperturedb_instance "${RUNNER_NAME}_http" | grep $IP_REGEX ) -GATEWAY_NON_HTTP=$(run_aperturedb_instance "${RUNNER_NAME}_non_http" | grep $IP_REGEX ) +# Check if TEST_PROTOCOL is set, otherwise default to both +TEST_PROTOCOL=${TEST_PROTOCOL:-"both"} + +if [ "$TEST_PROTOCOL" == "http" ] || [ "$TEST_PROTOCOL" == "both" ]; then + GATEWAY_HTTP=$(run_aperturedb_instance "${RUNNER_NAME}_http" | grep $IP_REGEX ) +fi + +if [ "$TEST_PROTOCOL" == "non_http" ] || [ "$TEST_PROTOCOL" == "both" ]; then + GATEWAY_NON_HTTP=$(run_aperturedb_instance "${RUNNER_NAME}_non_http" | grep $IP_REGEX ) +fi # The LOG_PATH and RUNNER_INFO_PATH are set to the current working directory LOG_PATH="$(pwd)/aperturedb/logs" @@ -48,42 +56,57 @@ fi sleep 20 # wait for the containers to be up and running -echo "running tests on docker image $REPOSITORY with $GATEWAY_HTTP and $GATEWAY_NON_HTTP" -docker run \ - -v $(pwd)/output:/aperturedata/test/output \ - -v $(pwd)/${RUNNER_NAME}_http_ca:/ca \ - --network=${RUNNER_NAME}_http_default \ - -v "$LOG_PATH":"${TESTING_LOG_PATH}" \ - -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \ - -e AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION \ - -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \ - -e GCP_SERVICE_ACCOUNT_KEY="$GCP_SERVICE_ACCOUNT_KEY" \ - -e APERTUREDB_LOG_PATH="${TESTING_LOG_PATH}" \ - -e GATEWAY="nginx" \ - -e FILTER="http" \ - $REPOSITORY & - -pid1=$! -docker run \ - -v $(pwd)/output:/aperturedata/test/output \ - -v $(pwd)/${RUNNER_NAME}_non_http_ca:/ca \ - --network=${RUNNER_NAME}_non_http_default \ - -v "$LOG_PATH":"${TESTING_LOG_PATH}" \ - -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \ - -e AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION \ - -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \ - -e GCP_SERVICE_ACCOUNT_KEY="$GCP_SERVICE_ACCOUNT_KEY" \ - -e APERTUREDB_LOG_PATH="${TESTING_LOG_PATH}" \ - -e GATEWAY="lenz" \ - -e FILTER="not http" \ - $REPOSITORY & - -pid2=$! - -wait $pid1 -exit_code1=$? -wait $pid2 -exit_code2=$? +pid1=0 +pid2=0 + +if [ "$TEST_PROTOCOL" == "http" ] || [ "$TEST_PROTOCOL" == "both" ]; then + echo "running tests on docker image $REPOSITORY with $GATEWAY_HTTP" + docker run \ + -v $(pwd)/output:/aperturedata/test/output \ + -v $(pwd)/${RUNNER_NAME}_http_ca:/ca \ + --network=${RUNNER_NAME}_http_default \ + -v "$LOG_PATH":"${TESTING_LOG_PATH}" \ + -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \ + -e AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION \ + -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \ + -e GCP_SERVICE_ACCOUNT_KEY="$GCP_SERVICE_ACCOUNT_KEY" \ + -e APERTUREDB_LOG_PATH="${TESTING_LOG_PATH}" \ + -e GATEWAY="nginx" \ + -e FILTER="http" \ + $REPOSITORY & + pid1=$! +fi + +if [ "$TEST_PROTOCOL" == "non_http" ] || [ "$TEST_PROTOCOL" == "both" ]; then + echo "running tests on docker image $REPOSITORY with $GATEWAY_NON_HTTP" + docker run \ + -v $(pwd)/output:/aperturedata/test/output \ + -v $(pwd)/${RUNNER_NAME}_non_http_ca:/ca \ + --network=${RUNNER_NAME}_non_http_default \ + -v "$LOG_PATH":"${TESTING_LOG_PATH}" \ + -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \ + -e AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION \ + -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \ + -e GCP_SERVICE_ACCOUNT_KEY="$GCP_SERVICE_ACCOUNT_KEY" \ + -e APERTUREDB_LOG_PATH="${TESTING_LOG_PATH}" \ + -e GATEWAY="lenz" \ + -e FILTER="not http" \ + $REPOSITORY & + pid2=$! +fi + +exit_code1=0 +exit_code2=0 + +if [ "$pid1" != "0" ]; then + wait $pid1 + exit_code1=$? +fi + +if [ "$pid2" != "0" ]; then + wait $pid2 + exit_code2=$? +fi if [ $exit_code1 -ne 0 ]; then echo "Tests failed for HTTP" @@ -94,7 +117,6 @@ if [ $exit_code2 -ne 0 ]; then exit $exit_code2 fi - echo "Tests completed" echo " --- Runner name: ${RUNNER_NAME} ---" check_containers_networks