diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index e78e66becf..e6e2c969d2 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -25,6 +25,10 @@ on: paths-ignore: - '**.md' +concurrency: + group: ${{ github.workflow }}-${{ github.ref == github.ref_protected && github.run_id || github.event.pull_request.number || github.ref }} + cancel-in-progress: true + permissions: write-all env: @@ -44,6 +48,7 @@ jobs: helm-chart-test: name: Test Selenium Grid on Kubernetes uses: ./.github/workflows/helm-chart-test.yml + secrets: inherit with: release: ${{ inputs.release == 'true' }} diff --git a/.github/workflows/helm-chart-test.yml b/.github/workflows/helm-chart-test.yml index 58448ba431..bd2ffde76e 100644 --- a/.github/workflows/helm-chart-test.yml +++ b/.github/workflows/helm-chart-test.yml @@ -2,6 +2,11 @@ name: Test Helm Charts on: workflow_call: + secrets: + DOCKER_USERNAME: + required: false + DOCKER_PASSWORD: + required: false inputs: release: description: 'Test a new release process' @@ -142,7 +147,6 @@ jobs: - name: Sets build date run: | echo "BUILD_DATE=$(date '+%Y%m%d')" >> $GITHUB_ENV - echo "IMAGE_REGISTRY=artifactory/selenium" >> $GITHUB_ENV echo "AUTHORS=${AUTHORS}" >> $GITHUB_ENV env: AUTHORS: ${{ vars.AUTHORS || 'SeleniumHQ' }} @@ -158,6 +162,11 @@ jobs: max_attempts: 3 retry_wait_seconds: 60 command: NAME=${IMAGE_REGISTRY} VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} make build + - name: Login Docker Hub + run: docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" + env: + DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}} + DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}} - name: Setup Kubernetes cluster uses: nick-invision/retry@master with: diff --git a/.github/workflows/k8s-scaling-test.yml b/.github/workflows/k8s-scaling-test.yml index 3dcd661f89..48bbc3297a 100644 --- a/.github/workflows/k8s-scaling-test.yml +++ b/.github/workflows/k8s-scaling-test.yml @@ -2,6 +2,11 @@ name: Test Grid Autoscaling in Kubernetes on: workflow_call: + secrets: + DOCKER_USERNAME: + required: false + DOCKER_PASSWORD: + required: false inputs: release: description: 'Test a new release process' @@ -36,6 +41,10 @@ on: type: string default: '20' +concurrency: + group: ${{ github.workflow }}-${{ github.ref == github.ref_protected && github.run_id || github.event.pull_request.number || github.ref }} + cancel-in-progress: true + permissions: contents: write pull-requests: write @@ -135,10 +144,14 @@ jobs: - name: Sets build date run: | echo "BUILD_DATE=$(date '+%Y%m%d')" >> $GITHUB_ENV - echo "IMAGE_REGISTRY=artifactory/selenium" >> $GITHUB_ENV echo "AUTHORS=${AUTHORS}" >> $GITHUB_ENV env: AUTHORS: ${{ vars.AUTHORS || 'SeleniumHQ' }} + - name: Login Docker Hub + run: docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" + env: + DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}} + DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}} - name: Setup Kubernetes cluster uses: nick-invision/retry@master with: diff --git a/.keda/README.md b/.keda/README.md index 4922474fa1..19a86ab1b1 100644 --- a/.keda/README.md +++ b/.keda/README.md @@ -49,12 +49,16 @@ You can involve to review and discuss the pull requests to help us early detect [kedacore/keda](https://github.com/kedacore/keda) +- https://github.com/kedacore/keda/pull/6437 + - https://github.com/kedacore/keda/pull/6368 - ~~https://github.com/kedacore/keda/pull/6169 (merged, v2.16.0)~~ [kedacore/keda-docs](https://github.com/kedacore/keda-docs) +- https://github.com/kedacore/keda-docs/pull/1515 + - ~~https://github.com/kedacore/keda-docs/pull/1468 (merged, v2.16.0)~~ # Test results of the patch scaler diff --git a/.keda/results_test_k8s_autoscaling_deployment_count.md b/.keda/results_test_k8s_autoscaling_deployment_count.md index 4c572d841b..196e206d08 100644 --- a/.keda/results_test_k8s_autoscaling_deployment_count.md +++ b/.keda/results_test_k8s_autoscaling_deployment_count.md @@ -1,22 +1,22 @@ | Iteration | New request sessions | Sessions created time | Sessions failed to create | New pods scaled up | Total running sessions | Total running pods | Max sessions per pod | Gaps | Sessions closed | | --------- | -------------------- | --------------------- | ------------------------- | ------------------ | ---------------------- | ------------------ | -------------------- | ---- | --------------- | -| 1 | 1 | 39.44 s | 0 | 1 | 1 | 1 | 1 | 0 | 1 | -| 2 | 2 | 39.77 s | 0 | 1 | 2 | 2 | 1 | 0 | 0 | -| 3 | 1 | 28.38 s | 0 | 1 | 3 | 3 | 1 | 0 | 0 | -| 4 | 2 | 54.92 s | 0 | 2 | 5 | 5 | 1 | 0 | 0 | -| 5 | 2 | 33.04 s | 0 | 2 | 7 | 7 | 1 | 0 | 0 | -| 6 | 1 | 29.43 s | 0 | 1 | 8 | 8 | 1 | 0 | 8 | -| 7 | 2 | 47.04 s | 0 | 1 | 2 | 9 | 1 | 7 | 0 | -| 8 | 2 | 43.42 s | 0 | 1 | 4 | 10 | 1 | 6 | 0 | -| 9 | 2 | 47.99 s | 0 | 0 | 6 | 10 | 1 | 4 | 0 | -| 10 | 3 | 44.97 s | 0 | 2 | 9 | 12 | 1 | 3 | 0 | -| 11 | 3 | 42.98 s | 0 | -2 | 12 | 10 | 1 | -2 | 12 | -| 12 | 1 | 4.52 s | 0 | 0 | 1 | 10 | 1 | 9 | 0 | -| 13 | 2 | 39.93 s | 0 | 1 | 3 | 11 | 1 | 8 | 0 | -| 14 | 1 | 29.45 s | 0 | 1 | 4 | 12 | 1 | 8 | 0 | -| 15 | 2 | 30.52 s | 0 | 1 | 6 | 13 | 1 | 7 | 0 | -| 16 | 3 | 35.62 s | 0 | 3 | 9 | 16 | 1 | 7 | 9 | -| 17 | 3 | 16.59 s | 0 | 0 | 3 | 16 | 1 | 13 | 0 | -| 18 | 3 | 36.76 s | 0 | 1 | 6 | 10 | 1 | 4 | 0 | -| 19 | 3 | 29.10 s | 0 | 1 | 9 | 11 | 1 | 2 | 0 | -| 20 | 3 | 51.36 s | 0 | 3 | 12 | 14 | 1 | 2 | 0 | \ No newline at end of file +| 1 | 1 | 28.57 s | 0 | 1 | 1 | 1 | 1 | 0 | 1 | +| 2 | 1 | 5.10 s | 0 | 0 | 1 | 1 | 1 | 0 | 0 | +| 3 | 3 | 63.16 s | 0 | 3 | 4 | 4 | 1 | 0 | 0 | +| 4 | 1 | 35.54 s | 0 | 1 | 5 | 5 | 1 | 0 | 0 | +| 5 | 2 | 38.30 s | 0 | 2 | 7 | 7 | 1 | 0 | 0 | +| 6 | 1 | 44.21 s | 0 | 1 | 8 | 8 | 1 | 0 | 8 | +| 7 | 1 | 4.78 s | 0 | 0 | 1 | 8 | 1 | 7 | 0 | +| 8 | 2 | 40.11 s | 0 | 1 | 3 | 9 | 1 | 6 | 0 | +| 9 | 1 | 4.33 s | 0 | 0 | 4 | 9 | 1 | 5 | 0 | +| 10 | 1 | 40.46 s | 0 | 1 | 5 | 10 | 1 | 5 | 0 | +| 11 | 2 | 29.67 s | 0 | 1 | 7 | 11 | 1 | 4 | 7 | +| 12 | 2 | 12.27 s | 0 | 0 | 2 | 11 | 1 | 9 | 0 | +| 13 | 3 | 13.77 s | 0 | 0 | 5 | 11 | 1 | 6 | 0 | +| 14 | 2 | 6.81 s | 0 | 0 | 7 | 11 | 1 | 4 | 0 | +| 15 | 2 | 38.89 s | 0 | 1 | 9 | 10 | 1 | 1 | 0 | +| 16 | 1 | 36.10 s | 0 | 1 | 10 | 11 | 1 | 1 | 10 | +| 17 | 2 | 6.82 s | 0 | 0 | 2 | 11 | 1 | 9 | 0 | +| 18 | 1 | 4.88 s | 0 | 0 | 3 | 11 | 1 | 8 | 0 | +| 19 | 1 | 6.67 s | 0 | 0 | 4 | 11 | 1 | 7 | 0 | +| 20 | 2 | 6.87 s | 0 | 0 | 6 | 11 | 1 | 5 | 0 | \ No newline at end of file diff --git a/.keda/results_test_k8s_autoscaling_deployment_count_in_chaos.md b/.keda/results_test_k8s_autoscaling_deployment_count_in_chaos.md index a64e453d83..72cc447378 100644 --- a/.keda/results_test_k8s_autoscaling_deployment_count_in_chaos.md +++ b/.keda/results_test_k8s_autoscaling_deployment_count_in_chaos.md @@ -1,22 +1,22 @@ | Iteration | New request sessions | Sessions created time | Sessions failed to create | New pods scaled up | Total running sessions | Total running pods | Max sessions per pod | Gaps | Sessions closed | | --------- | -------------------- | --------------------- | ------------------------- | ------------------ | ---------------------- | ------------------ | -------------------- | ---- | --------------- | -| 1 | 4 | 53.63 s | 0 | 4 | 4 | 4 | 1 | 0 | 4 | -| 2 | 5 | 40.02 s | 0 | 2 | 5 | 6 | 1 | 1 | 5 | -| 3 | 5 | 16.09 s | 0 | 0 | 5 | 6 | 1 | 1 | 5 | -| 4 | 4 | 15.78 s | 0 | 0 | 4 | 6 | 1 | 2 | 4 | -| 5 | 5 | 50.10 s | 0 | 2 | 5 | 8 | 1 | 3 | 5 | -| 6 | 4 | 15.69 s | 0 | 0 | 4 | 8 | 1 | 4 | 4 | -| 7 | 4 | 15.70 s | 0 | 0 | 4 | 8 | 1 | 4 | 4 | -| 8 | 4 | 17.02 s | 0 | 0 | 4 | 7 | 1 | 3 | 4 | -| 9 | 4 | 16.09 s | 1 | -2 | 3 | 5 | 1 | 2 | 3 | -| 10 | 4 | 33.71 s | 0 | 2 | 4 | 7 | 1 | 3 | 4 | -| 11 | 4 | 15.71 s | 0 | 0 | 4 | 7 | 1 | 3 | 4 | -| 12 | 5 | 33.66 s | 0 | -1 | 5 | 6 | 1 | 1 | 5 | -| 13 | 3 | 6.64 s | 0 | 0 | 3 | 6 | 1 | 3 | 3 | -| 14 | 5 | 33.28 s | 0 | 1 | 5 | 7 | 1 | 2 | 5 | -| 15 | 4 | 15.86 s | 0 | 0 | 4 | 7 | 1 | 3 | 4 | -| 16 | 4 | 16.78 s | 0 | 0 | 4 | 7 | 1 | 3 | 4 | -| 17 | 3 | 7.01 s | 0 | 0 | 3 | 7 | 1 | 4 | 3 | -| 18 | 5 | 14.91 s | 2 | -2 | 3 | 5 | 1 | 2 | 3 | -| 19 | 5 | 48.14 s | 0 | 1 | 5 | 6 | 1 | 1 | 5 | -| 20 | 6 | 40.97 s | 0 | 2 | 6 | 8 | 1 | 2 | 3 | \ No newline at end of file +| 1 | 6 | 67.20 s | 0 | 6 | 6 | 6 | 1 | 0 | 3 | +| 2 | 6 | 51.14 s | 0 | 4 | 9 | 10 | 1 | 1 | 9 | +| 3 | 4 | 13.80 s | 0 | 0 | 4 | 10 | 1 | 6 | 4 | +| 4 | 5 | 28.15 s | 0 | 1 | 5 | 11 | 1 | 6 | 5 | +| 5 | 3 | 12.56 s | 0 | 0 | 3 | 11 | 1 | 8 | 3 | +| 6 | 6 | 13.99 s | 0 | 0 | 6 | 11 | 1 | 5 | 6 | +| 7 | 4 | 12.95 s | 0 | 0 | 4 | 11 | 1 | 7 | 4 | +| 8 | 5 | 13.02 s | 0 | 0 | 5 | 10 | 1 | 5 | 5 | +| 9 | 4 | 13.57 s | 0 | 0 | 4 | 10 | 1 | 6 | 4 | +| 10 | 6 | 32.85 s | 0 | 1 | 6 | 11 | 1 | 5 | 5 | +| 11 | 6 | 13.66 s | 0 | 0 | 7 | 11 | 1 | 4 | 7 | +| 12 | 5 | 13.89 s | 0 | 0 | 5 | 11 | 1 | 6 | 5 | +| 13 | 5 | 14.20 s | 0 | 0 | 5 | 11 | 1 | 6 | 5 | +| 14 | 4 | 13.41 s | 1 | -2 | 3 | 9 | 1 | 6 | 3 | +| 15 | 5 | 14.43 s | 0 | 0 | 5 | 9 | 1 | 4 | 3 | +| 16 | 4 | 45.11 s | 0 | 1 | 6 | 9 | 1 | 3 | 5 | +| 17 | 4 | 7.01 s | 0 | 0 | 5 | 9 | 1 | 4 | 4 | +| 18 | 5 | 14.38 s | 0 | 0 | 6 | 9 | 1 | 3 | 6 | +| 19 | 6 | 38.56 s | 0 | 1 | 6 | 9 | 1 | 3 | 6 | +| 20 | 3 | 6.39 s | 0 | 0 | 3 | 9 | 1 | 6 | 3 | \ No newline at end of file diff --git a/.keda/results_test_k8s_autoscaling_deployment_count_with_node_max_sessions.md b/.keda/results_test_k8s_autoscaling_deployment_count_with_node_max_sessions.md index f7689b4ddd..96197712fd 100644 --- a/.keda/results_test_k8s_autoscaling_deployment_count_with_node_max_sessions.md +++ b/.keda/results_test_k8s_autoscaling_deployment_count_with_node_max_sessions.md @@ -1,22 +1,22 @@ | Iteration | New request sessions | Sessions created time | Sessions failed to create | New pods scaled up | Total running sessions | Total running pods | Max sessions per pod | Gaps | Sessions closed | | --------- | -------------------- | --------------------- | ------------------------- | ------------------ | ---------------------- | ------------------ | -------------------- | ---- | --------------- | -| 1 | 2 | 35.37 s | 0 | 2 | 2 | 2 | 3 | 4 | 2 | -| 2 | 1 | 4.30 s | 0 | 0 | 1 | 2 | 3 | 5 | 0 | -| 3 | 3 | 49.48 s | 0 | 1 | 4 | 3 | 3 | 5 | 0 | -| 4 | 3 | 21.57 s | 0 | 0 | 7 | 3 | 3 | 2 | 0 | -| 5 | 2 | 40.77 s | 0 | 3 | 9 | 6 | 3 | 9 | 0 | -| 6 | 3 | 31.57 s | 0 | 3 | 12 | 9 | 3 | 15 | 12 | -| 7 | 1 | 5.18 s | 0 | 0 | 1 | 9 | 3 | 26 | 0 | -| 8 | 1 | 10.43 s | 0 | 0 | 2 | 9 | 3 | 25 | 0 | -| 9 | 1 | 17.07 s | 0 | 0 | 3 | 9 | 3 | 24 | 0 | -| 10 | 3 | 11.19 s | 0 | 0 | 6 | 9 | 3 | 21 | 0 | -| 11 | 3 | 6.64 s | 0 | 0 | 9 | 9 | 3 | 18 | 9 | -| 12 | 1 | 4.36 s | 0 | 0 | 1 | 9 | 3 | 26 | 0 | -| 13 | 3 | 15.31 s | 0 | 0 | 4 | 9 | 3 | 23 | 0 | -| 14 | 2 | 19.51 s | 0 | 0 | 6 | 9 | 3 | 21 | 0 | -| 15 | 3 | 26.13 s | 0 | 0 | 9 | 6 | 3 | 9 | 0 | -| 16 | 3 | 40.84 s | 0 | 4 | 12 | 7 | 3 | 9 | 12 | -| 17 | 2 | 7.10 s | 0 | 0 | 2 | 7 | 3 | 19 | 0 | -| 18 | 1 | 15.15 s | 0 | 0 | 3 | 7 | 3 | 18 | 0 | -| 19 | 3 | 49.19 s | 0 | 0 | 6 | 7 | 3 | 15 | 0 | -| 20 | 1 | 41.04 s | 0 | 3 | 7 | 10 | 3 | 23 | 0 | \ No newline at end of file +| 1 | 3 | 62.63 s | 0 | 2 | 3 | 2 | 3 | 3 | 3 | +| 2 | 1 | 34.17 s | 0 | 1 | 1 | 4 | 3 | 11 | 0 | +| 3 | 1 | 3.97 s | 0 | 0 | 2 | 4 | 3 | 10 | 0 | +| 4 | 3 | 14.92 s | 0 | 1 | 5 | 6 | 3 | 13 | 0 | +| 5 | 2 | 20.03 s | 0 | 1 | 7 | 7 | 3 | 14 | 0 | +| 6 | 1 | 15.99 s | 0 | 1 | 8 | 8 | 3 | 16 | 8 | +| 7 | 1 | 10.35 s | 0 | 0 | 1 | 8 | 3 | 23 | 0 | +| 8 | 1 | 8.20 s | 0 | 0 | 2 | 8 | 3 | 22 | 0 | +| 9 | 3 | 15.30 s | 0 | 0 | 5 | 8 | 3 | 19 | 0 | +| 10 | 1 | 13.67 s | 0 | 0 | 6 | 8 | 3 | 18 | 0 | +| 11 | 2 | 13.72 s | 0 | 1 | 8 | 9 | 3 | 19 | 8 | +| 12 | 3 | 13.82 s | 0 | 0 | 3 | 9 | 3 | 24 | 0 | +| 13 | 1 | 4.43 s | 0 | 0 | 4 | 9 | 3 | 23 | 0 | +| 14 | 2 | 12.22 s | 0 | 0 | 6 | 9 | 3 | 21 | 0 | +| 15 | 3 | 7.04 s | 0 | 0 | 9 | 9 | 3 | 18 | 0 | +| 16 | 1 | 9.86 s | 0 | 0 | 10 | 11 | 3 | 23 | 10 | +| 17 | 3 | 12.01 s | 0 | 0 | 3 | 11 | 3 | 30 | 0 | +| 18 | 1 | 6.52 s | 0 | 0 | 4 | 11 | 3 | 29 | 0 | +| 19 | 3 | 13.38 s | 0 | 0 | 7 | 11 | 3 | 26 | 0 | +| 20 | 1 | 4.71 s | 0 | 0 | 8 | 11 | 3 | 25 | 0 | \ No newline at end of file diff --git a/.keda/results_test_k8s_autoscaling_job_count_strategy_default.md b/.keda/results_test_k8s_autoscaling_job_count_strategy_default.md index 83a257c26f..eaee6abfd0 100644 --- a/.keda/results_test_k8s_autoscaling_job_count_strategy_default.md +++ b/.keda/results_test_k8s_autoscaling_job_count_strategy_default.md @@ -1,22 +1,22 @@ | Iteration | New request sessions | Sessions created time | Sessions failed to create | New pods scaled up | Total running sessions | Total running pods | Max sessions per pod | Gaps | Sessions closed | | --------- | -------------------- | --------------------- | ------------------------- | ------------------ | ---------------------- | ------------------ | -------------------- | ---- | --------------- | -| 1 | 1 | 30.83 s | 0 | 1 | 1 | 1 | 1 | 0 | 1 | -| 2 | 3 | 54.69 s | 0 | 3 | 3 | 3 | 1 | 0 | 0 | -| 3 | 1 | 34.33 s | 0 | 1 | 4 | 4 | 1 | 0 | 0 | -| 4 | 3 | 56.51 s | 0 | 3 | 7 | 7 | 1 | 0 | 0 | -| 5 | 2 | 43.24 s | 0 | 2 | 9 | 9 | 1 | 0 | 0 | -| 6 | 2 | 37.68 s | 0 | 2 | 11 | 11 | 1 | 0 | 11 | -| 7 | 2 | 39.21 s | 0 | 2 | 2 | 2 | 1 | 0 | 0 | -| 8 | 2 | 36.87 s | 0 | 2 | 4 | 4 | 1 | 0 | 0 | -| 9 | 3 | 53.17 s | 0 | 3 | 7 | 7 | 1 | 0 | 0 | -| 10 | 1 | 36.48 s | 0 | 1 | 8 | 8 | 1 | 0 | 0 | -| 11 | 2 | 45.94 s | 0 | 2 | 10 | 10 | 1 | 0 | 10 | -| 12 | 1 | 36.96 s | 0 | 1 | 1 | 1 | 1 | 0 | 0 | -| 13 | 1 | 36.73 s | 0 | 1 | 2 | 2 | 1 | 0 | 0 | -| 14 | 2 | 44.68 s | 0 | 2 | 4 | 4 | 1 | 0 | 0 | -| 15 | 1 | 53.12 s | 0 | 1 | 5 | 5 | 1 | 0 | 0 | -| 16 | 2 | 46.00 s | 0 | 2 | 7 | 7 | 1 | 0 | 7 | -| 17 | 3 | 42.35 s | 0 | 3 | 3 | 3 | 1 | 0 | 0 | -| 18 | 3 | 45.69 s | 0 | 3 | 6 | 6 | 1 | 0 | 0 | -| 19 | 2 | 42.02 s | 0 | 2 | 8 | 8 | 1 | 0 | 0 | -| 20 | 1 | 44.63 s | 0 | 1 | 9 | 9 | 1 | 0 | 0 | \ No newline at end of file +| 1 | 2 | 30.95 s | 0 | 2 | 2 | 2 | 1 | 0 | 2 | +| 2 | 2 | 47.79 s | 0 | 2 | 2 | 2 | 1 | 0 | 0 | +| 3 | 1 | 38.13 s | 0 | 1 | 3 | 3 | 1 | 0 | 0 | +| 4 | 1 | 42.98 s | 0 | 1 | 4 | 4 | 1 | 0 | 0 | +| 5 | 1 | 27.59 s | 0 | 1 | 5 | 5 | 1 | 0 | 0 | +| 6 | 2 | 46.07 s | 0 | 2 | 7 | 7 | 1 | 0 | 7 | +| 7 | 1 | 41.78 s | 0 | 1 | 1 | 1 | 1 | 0 | 0 | +| 8 | 2 | 39.15 s | 0 | 2 | 3 | 3 | 1 | 0 | 0 | +| 9 | 2 | 44.57 s | 0 | 2 | 5 | 5 | 1 | 0 | 0 | +| 10 | 2 | 53.76 s | 0 | 2 | 7 | 7 | 1 | 0 | 0 | +| 11 | 1 | 36.48 s | 0 | 1 | 8 | 8 | 1 | 0 | 8 | +| 12 | 3 | 39.85 s | 0 | 3 | 3 | 3 | 1 | 0 | 0 | +| 13 | 2 | 43.17 s | 0 | 2 | 5 | 5 | 1 | 0 | 0 | +| 14 | 1 | 44.12 s | 0 | 1 | 6 | 6 | 1 | 0 | 0 | +| 15 | 1 | 37.48 s | 0 | 1 | 7 | 7 | 1 | 0 | 0 | +| 16 | 3 | 28.73 s | 0 | 3 | 10 | 10 | 1 | 0 | 10 | +| 17 | 1 | 36.14 s | 0 | 1 | 1 | 1 | 1 | 0 | 0 | +| 18 | 3 | 39.25 s | 0 | 3 | 4 | 4 | 1 | 0 | 0 | +| 19 | 1 | 41.62 s | 0 | 1 | 5 | 5 | 1 | 0 | 0 | +| 20 | 2 | 34.89 s | 0 | 2 | 7 | 7 | 1 | 0 | 0 | \ No newline at end of file diff --git a/.keda/results_test_k8s_autoscaling_job_count_strategy_default_in_chaos.md b/.keda/results_test_k8s_autoscaling_job_count_strategy_default_in_chaos.md index 33bef17a55..7cc7f92054 100644 --- a/.keda/results_test_k8s_autoscaling_job_count_strategy_default_in_chaos.md +++ b/.keda/results_test_k8s_autoscaling_job_count_strategy_default_in_chaos.md @@ -1,22 +1,22 @@ | Iteration | New request sessions | Sessions created time | Sessions failed to create | New pods scaled up | Total running sessions | Total running pods | Max sessions per pod | Gaps | Sessions closed | | --------- | -------------------- | --------------------- | ------------------------- | ------------------ | ---------------------- | ------------------ | -------------------- | ---- | --------------- | -| 1 | 5 | 46.67 s | 0 | 5 | 5 | 5 | 1 | 0 | 5 | -| 2 | 6 | 56.52 s | 0 | 6 | 6 | 6 | 1 | 0 | 4 | -| 3 | 4 | 54.94 s | 0 | 4 | 6 | 6 | 1 | 0 | 4 | -| 4 | 4 | 57.87 s | 0 | 4 | 6 | 6 | 1 | 0 | 4 | -| 5 | 6 | 58.92 s | 0 | 6 | 8 | 8 | 1 | 0 | 8 | -| 6 | 5 | 44.86 s | 0 | 5 | 5 | 5 | 1 | 0 | 3 | -| 7 | 3 | 45.84 s | 0 | 3 | 5 | 5 | 1 | 0 | 4 | -| 8 | 3 | 51.35 s | 0 | 3 | 4 | 4 | 1 | 0 | 4 | -| 9 | 5 | 60.72 s | 0 | 5 | 5 | 5 | 1 | 0 | 5 | -| 10 | 6 | 55.06 s | 0 | 6 | 6 | 6 | 1 | 0 | 6 | -| 11 | 3 | 49.55 s | 0 | 3 | 3 | 3 | 1 | 0 | 3 | -| 12 | 6 | 32.39 s | 0 | 6 | 6 | 6 | 1 | 0 | 6 | -| 13 | 6 | 49.36 s | 0 | 6 | 6 | 6 | 1 | 0 | 3 | -| 14 | 3 | 49.50 s | 0 | 3 | 6 | 6 | 1 | 0 | 6 | -| 15 | 6 | 46.22 s | 0 | 6 | 6 | 6 | 1 | 0 | 6 | -| 16 | 6 | 40.57 s | 0 | 6 | 6 | 6 | 1 | 0 | 4 | -| 17 | 6 | 55.14 s | 0 | 6 | 8 | 8 | 1 | 0 | 8 | -| 18 | 3 | 47.84 s | 0 | 3 | 3 | 3 | 1 | 0 | 3 | -| 19 | 5 | 43.48 s | 0 | 5 | 5 | 5 | 1 | 0 | 5 | -| 20 | 3 | 44.11 s | 0 | 3 | 3 | 3 | 1 | 0 | 3 | \ No newline at end of file +| 1 | 4 | 42.89 s | 0 | 4 | 4 | 4 | 1 | 0 | 4 | +| 2 | 4 | 44.73 s | 0 | 4 | 4 | 4 | 1 | 0 | 4 | +| 3 | 4 | 41.27 s | 0 | 4 | 4 | 4 | 1 | 0 | 4 | +| 4 | 6 | 32.08 s | 0 | 6 | 6 | 6 | 1 | 0 | 6 | +| 5 | 4 | 45.97 s | 0 | 4 | 4 | 4 | 1 | 0 | 4 | +| 6 | 3 | 27.17 s | 0 | 3 | 3 | 3 | 1 | 0 | 3 | +| 7 | 4 | 48.60 s | 0 | 4 | 4 | 4 | 1 | 0 | 3 | +| 8 | 4 | 37.62 s | 0 | 4 | 5 | 5 | 1 | 0 | 5 | +| 9 | 5 | 43.24 s | 0 | 5 | 5 | 5 | 1 | 0 | 4 | +| 10 | 4 | 36.80 s | 0 | 4 | 5 | 5 | 1 | 0 | 5 | +| 11 | 5 | 40.23 s | 0 | 5 | 5 | 5 | 1 | 0 | 4 | +| 12 | 5 | 30.23 s | 0 | 5 | 6 | 6 | 1 | 0 | 5 | +| 13 | 6 | 46.20 s | 0 | 6 | 7 | 7 | 1 | 0 | 7 | +| 14 | 5 | 49.78 s | 0 | 5 | 5 | 5 | 1 | 0 | 5 | +| 15 | 5 | 72.02 s | 0 | 5 | 5 | 5 | 1 | 0 | 5 | +| 16 | 5 | 36.86 s | 0 | 5 | 5 | 5 | 1 | 0 | 5 | +| 17 | 5 | 40.52 s | 0 | 5 | 5 | 5 | 1 | 0 | 4 | +| 18 | 4 | 52.60 s | 0 | 4 | 5 | 5 | 1 | 0 | 5 | +| 19 | 6 | 41.22 s | 0 | 6 | 6 | 6 | 1 | 0 | 4 | +| 20 | 5 | 38.79 s | 0 | 5 | 7 | 7 | 1 | 0 | 7 | \ No newline at end of file diff --git a/.keda/results_test_k8s_autoscaling_job_count_strategy_default_with_node_max_sessions.md b/.keda/results_test_k8s_autoscaling_job_count_strategy_default_with_node_max_sessions.md index f60c0ec6d0..c9fc259746 100644 --- a/.keda/results_test_k8s_autoscaling_job_count_strategy_default_with_node_max_sessions.md +++ b/.keda/results_test_k8s_autoscaling_job_count_strategy_default_with_node_max_sessions.md @@ -1,22 +1,22 @@ | Iteration | New request sessions | Sessions created time | Sessions failed to create | New pods scaled up | Total running sessions | Total running pods | Max sessions per pod | Gaps | Sessions closed | | --------- | -------------------- | --------------------- | ------------------------- | ------------------ | ---------------------- | ------------------ | -------------------- | ---- | --------------- | -| 1 | 1 | 34.05 s | 0 | 1 | 1 | 1 | 3 | 2 | 1 | -| 2 | 3 | 73.48 s | 0 | 2 | 3 | 3 | 3 | 6 | 0 | -| 3 | 1 | 6.75 s | 0 | 0 | 4 | 3 | 3 | 5 | 0 | -| 4 | 3 | 16.18 s | 0 | 0 | 7 | 3 | 3 | 2 | 0 | -| 5 | 1 | 6.45 s | 0 | 0 | 8 | 3 | 3 | 1 | 0 | -| 6 | 3 | 54.20 s | 0 | 5 | 11 | 8 | 3 | 13 | 11 | -| 7 | 2 | 34.96 s | 0 | 1 | 2 | 6 | 3 | 16 | 0 | -| 8 | 2 | 7.98 s | 0 | 0 | 4 | 6 | 3 | 14 | 0 | -| 9 | 2 | 17.20 s | 0 | 0 | 6 | 6 | 3 | 12 | 0 | -| 10 | 1 | 15.56 s | 0 | 0 | 7 | 6 | 3 | 11 | 0 | -| 11 | 1 | 4.99 s | 0 | 0 | 8 | 6 | 3 | 10 | 8 | -| 12 | 1 | 16.48 s | 0 | 0 | 1 | 5 | 3 | 14 | 0 | -| 13 | 1 | 6.87 s | 0 | 0 | 2 | 5 | 3 | 13 | 0 | -| 14 | 3 | 15.72 s | 0 | 0 | 5 | 5 | 3 | 10 | 0 | -| 15 | 2 | 42.55 s | 0 | 2 | 7 | 7 | 3 | 14 | 0 | -| 16 | 2 | 43.25 s | 0 | 1 | 9 | 8 | 3 | 15 | 9 | -| 17 | 3 | 15.73 s | 0 | 0 | 3 | 4 | 3 | 9 | 0 | -| 18 | 3 | 43.50 s | 0 | 3 | 6 | 7 | 3 | 15 | 0 | -| 19 | 3 | 74.96 s | 0 | 1 | 9 | 8 | 3 | 15 | 0 | -| 20 | 1 | 7.99 s | 0 | 0 | 10 | 8 | 3 | 14 | 0 | \ No newline at end of file +| 1 | 3 | 37.01 s | 0 | 3 | 3 | 3 | 3 | 6 | 3 | +| 2 | 2 | 12.63 s | 0 | 0 | 2 | 3 | 3 | 7 | 0 | +| 3 | 2 | 9.84 s | 0 | 0 | 4 | 3 | 3 | 5 | 0 | +| 4 | 1 | 18.74 s | 0 | 1 | 5 | 6 | 3 | 13 | 0 | +| 5 | 3 | 31.18 s | 0 | 2 | 8 | 8 | 3 | 16 | 0 | +| 6 | 3 | 17.15 s | 0 | 0 | 11 | 9 | 3 | 16 | 11 | +| 7 | 1 | 7.43 s | 0 | 0 | 1 | 7 | 3 | 20 | 0 | +| 8 | 3 | 29.03 s | 0 | 1 | 4 | 8 | 3 | 20 | 0 | +| 9 | 1 | 4.56 s | 0 | 0 | 5 | 8 | 3 | 19 | 0 | +| 10 | 2 | 6.88 s | 0 | 0 | 7 | 8 | 3 | 17 | 0 | +| 11 | 1 | 7.83 s | 0 | 0 | 8 | 9 | 3 | 19 | 8 | +| 12 | 3 | 17.47 s | 0 | 0 | 3 | 8 | 3 | 21 | 0 | +| 13 | 3 | 25.50 s | 0 | 2 | 6 | 10 | 3 | 24 | 0 | +| 14 | 3 | 20.88 s | 0 | 1 | 9 | 11 | 3 | 24 | 0 | +| 15 | 2 | 20.04 s | 0 | 1 | 11 | 13 | 3 | 28 | 0 | +| 16 | 2 | 18.00 s | 0 | 3 | 13 | 16 | 3 | 35 | 13 | +| 17 | 1 | 15.56 s | 0 | 0 | 1 | 15 | 3 | 44 | 0 | +| 18 | 3 | 16.59 s | 0 | 0 | 4 | 15 | 3 | 41 | 0 | +| 19 | 3 | 5.41 s | 0 | 0 | 7 | 15 | 3 | 38 | 0 | +| 20 | 1 | 4.70 s | 0 | 0 | 8 | 15 | 3 | 37 | 0 | \ No newline at end of file diff --git a/Makefile b/Makefile index 3c4fd0fb8e..5e3db752d0 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ SBOM_OUTPUT := $(or $(SBOM_OUTPUT),$(SBOM_OUTPUT),package_versions.txt) KEDA_TAG_PREV_VERSION := $(or $(KEDA_TAG_PREV_VERSION),$(KEDA_TAG_PREV_VERSION),2.16.0-selenium-grid) KEDA_TAG_VERSION := $(or $(KEDA_TAG_VERSION),$(KEDA_TAG_VERSION),2.16.0-selenium-grid) KEDA_BASED_NAME := $(or $(KEDA_BASED_NAME),$(KEDA_BASED_NAME),ndviet) -KEDA_BASED_TAG := $(or $(KEDA_BASED_TAG),$(KEDA_BASED_TAG),2.16.0-selenium-grid-20241201) +KEDA_BASED_TAG := $(or $(KEDA_BASED_TAG),$(KEDA_BASED_TAG),2.16.0-selenium-grid-20241224) all: hub \ distributor \ @@ -930,7 +930,7 @@ chart_test_autoscaling_disabled: ./tests/charts/make/chart_test.sh NoAutoscaling chart_test_autoscaling_deployment_https: - PLATFORMS=$(PLATFORMS) CHART_FULL_DISTRIBUTED_MODE=true CHART_ENABLE_BASIC_AUTH=true TEST_EXTERNAL_DATASTORE=postgresql \ + PLATFORMS=$(PLATFORMS) CHART_FULL_DISTRIBUTED_MODE=true CHART_ENABLE_BASIC_AUTH=true TEST_EXTERNAL_DATASTORE=postgresql TEST_MULTIPLE_VERSIONS=true AUTOSCALING_COOLDOWN_PERIOD=60 SELENIUM_GRID_MONITORING=false \ SECURE_INGRESS_ONLY_DEFAULT=true INGRESS_DISABLE_USE_HTTP2=true SELENIUM_GRID_PROTOCOL=https CHART_ENABLE_INGRESS_HOSTNAME=true SELENIUM_GRID_PORT=443 \ SELENIUM_GRID_AUTOSCALING_MIN_REPLICA=0 MAX_SESSIONS_FIREFOX=1 MAX_SESSIONS_EDGE=1 MAX_SESSIONS_CHROME=1 TEST_NAME_OVERRIDE=true \ VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) KEDA_BASED_NAME=$(KEDA_BASED_NAME) KEDA_BASED_TAG=$(KEDA_BASED_TAG) NAMESPACE=$(NAMESPACE) BINDING_VERSION=$(BINDING_VERSION) BASE_VERSION=$(BASE_VERSION) \ @@ -938,7 +938,7 @@ chart_test_autoscaling_deployment_https: ./tests/charts/make/chart_test.sh DeploymentAutoscaling chart_test_autoscaling_deployment: - PLATFORMS=$(PLATFORMS) TEST_EXISTING_KEDA=true RELEASE_NAME=selenium CHART_ENABLE_TRACING=true TEST_PATCHED_KEDA=false \ + PLATFORMS=$(PLATFORMS) TEST_EXISTING_KEDA=true RELEASE_NAME=selenium CHART_ENABLE_TRACING=true TEST_PATCHED_KEDA=true \ SECURE_CONNECTION_SERVER=true SECURE_USE_EXTERNAL_CERT=true SERVICE_TYPE_NODEPORT=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_HOST=$$(hostname -I | cut -d' ' -f1) SELENIUM_GRID_PORT=31444 \ SELENIUM_GRID_AUTOSCALING_MIN_REPLICA=1 SET_MAX_REPLICAS=3 TEST_DELAY_AFTER_TEST=2 SELENIUM_GRID_MONITORING=false \ VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) KEDA_BASED_NAME=$(KEDA_BASED_NAME) KEDA_BASED_TAG=$(KEDA_BASED_TAG) NAMESPACE=$(NAMESPACE) BINDING_VERSION=$(BINDING_VERSION) BASE_VERSION=$(BASE_VERSION) \ @@ -954,14 +954,21 @@ chart_test_autoscaling_job_https: ./tests/charts/make/chart_test.sh JobAutoscaling chart_test_autoscaling_job_hostname: - PLATFORMS=$(PLATFORMS) CHART_ENABLE_TRACING=true CHART_ENABLE_BASIC_AUTH=true BASIC_AUTH_EMBEDDED_URL=true TEST_PATCHED_KEDA=false \ + PLATFORMS=$(PLATFORMS) CHART_ENABLE_TRACING=true CHART_ENABLE_BASIC_AUTH=true BASIC_AUTH_EMBEDDED_URL=true TEST_PATCHED_KEDA=true \ SECURE_INGRESS_ONLY_DEFAULT=true SECURE_USE_EXTERNAL_CERT=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_HOST=$$(hostname -I | cut -d' ' -f1) SELENIUM_GRID_PORT=443 \ VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) KEDA_BASED_NAME=$(KEDA_BASED_NAME) KEDA_BASED_TAG=$(KEDA_BASED_TAG) NAMESPACE=$(NAMESPACE) BINDING_VERSION=$(BINDING_VERSION) BASE_VERSION=$(BASE_VERSION) \ TEMPLATE_OUTPUT_FILENAME="k8s_enableTracing_basicAuth_secureIngress_externalCerts_ingressPublicIP_autoScaling_originKEDA_scaledJob_subPath.yaml" \ ./tests/charts/make/chart_test.sh JobAutoscaling +chart_test_autoscaling_job_multiple_versions_without_explicit: + TEST_MULTIPLE_VERSIONS=true TEST_MULTIPLE_VERSIONS_EXPLICIT=false make chart_test_autoscaling_job + +chart_test_autoscaling_job_without_multiple_versions: + TEST_MULTIPLE_VERSIONS=false make chart_test_autoscaling_job + chart_test_autoscaling_job: PLATFORMS=$(PLATFORMS) TEST_EXISTING_KEDA=true TEST_CHROMIUM=true RELEASE_NAME=selenium CHART_ENABLE_TRACING=true CHART_FULL_DISTRIBUTED_MODE=true SELENIUM_GRID_MONITORING=false \ + CLEAR_POD_HISTORY=true TEST_MULTIPLE_VERSIONS=$(or $(TEST_MULTIPLE_VERSIONS), "true") TEST_MULTIPLE_VERSIONS_EXPLICIT=$(or $(TEST_MULTIPLE_VERSIONS_EXPLICIT), "true") \ SECURE_INGRESS_ONLY_CONFIG_INLINE=true SECURE_USE_EXTERNAL_CERT=true CHART_ENABLE_INGRESS_HOSTNAME=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_HOST=selenium-grid.prod SUB_PATH=/ SELENIUM_GRID_PORT=443 \ VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) KEDA_BASED_NAME=$(KEDA_BASED_NAME) KEDA_BASED_TAG=$(KEDA_BASED_TAG) NAMESPACE=$(NAMESPACE) BINDING_VERSION=$(BINDING_VERSION) BASE_VERSION=$(BASE_VERSION) \ TEMPLATE_OUTPUT_FILENAME="k8s_fullDistributed_secureIngress_externalCerts_ingressHostName_ingressTLSInline_autoScaling_scaledJob_existingKEDA_prefixSelenium_nodeChromium_enableTracing.yaml" \ diff --git a/charts/selenium-grid/CONFIGURATION.md b/charts/selenium-grid/CONFIGURATION.md index c9f10fbd7b..44ba195fa5 100644 --- a/charts/selenium-grid/CONFIGURATION.md +++ b/charts/selenium-grid/CONFIGURATION.md @@ -406,6 +406,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes | chromeNode.scaledObjectOptions | string | `nil` | Override the scaledObjectOptions for chrome nodes | | chromeNode.hpa.browserName | string | `"chrome"` | browserName from the capability | | chromeNode.hpa.sessionBrowserName | string | `"chrome"` | sessionBrowserName if the browserName is different from the sessionBrowserName | +| chromeNode.hpa.browserVersion | string | `""` | browserVersion from the capability | | chromeNode.hpa.platformName | string | `"linux"` | platformName from the capability | | chromeNode.hpa.unsafeSsl | string | `"{{ template \"seleniumGrid.graphqlURL.unsafeSsl\" . }}"` | Skip check SSL when connecting to the Graphql endpoint | | chromeNode.initContainers | list | `[]` | It is used to add initContainers in the same pod of the browser node. It should be set using the --set-json option | @@ -457,6 +458,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes | firefoxNode.scaledObjectOptions | string | `nil` | Override the scaledObjectOptions for firefox nodes | | firefoxNode.hpa.browserName | string | `"firefox"` | browserName from the capability | | firefoxNode.hpa.sessionBrowserName | string | `"firefox"` | sessionBrowserName if the browserName is different from the sessionBrowserName | +| firefoxNode.hpa.browserVersion | string | `""` | browserVersion from the capability | | firefoxNode.hpa.platformName | string | `"linux"` | platformName from the capability | | firefoxNode.hpa.unsafeSsl | string | `"{{ template \"seleniumGrid.graphqlURL.unsafeSsl\" . }}"` | Skip check SSL when connecting to the Graphql endpoint | | firefoxNode.initContainers | list | `[]` | It is used to add initContainers in the same pod of the browser node. It should be set using the --set-json option | @@ -508,6 +510,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes | edgeNode.scaledObjectOptions | string | `nil` | Override the scaledObjectOptions for edge nodes | | edgeNode.hpa.browserName | string | `"MicrosoftEdge"` | browserName from the capability | | edgeNode.hpa.sessionBrowserName | string | `"msedge"` | sessionBrowserName if the browserName is different from the sessionBrowserName | +| edgeNode.hpa.browserVersion | string | `""` | browserVersion from the capability | | edgeNode.hpa.platformName | string | `"linux"` | platformName from the capability | | edgeNode.hpa.unsafeSsl | string | `"{{ template \"seleniumGrid.graphqlURL.unsafeSsl\" . }}"` | Skip check SSL when connecting to the Graphql endpoint | | edgeNode.initContainers | list | `[]` | It is used to add initContainers in the same pod of the browser node. It should be set using the --set-json option | @@ -560,6 +563,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes | relayNode.hpa.browserName | string | `"chrome"` | browserName from the capability | | relayNode.hpa.sessionBrowserName | string | `""` | sessionBrowserName if the browserName is different from the sessionBrowserName | | relayNode.hpa.platformName | string | `"Android"` | platformName from the capability | +| relayNode.hpa.browserVersion | string | `""` | browserVersion from the capability | | relayNode.hpa.unsafeSsl | string | `"{{ template \"seleniumGrid.graphqlURL.unsafeSsl\" . }}"` | Skip check SSL when connecting to the Graphql endpoint | | relayNode.initContainers | list | `[]` | It is used to add initContainers in the same pod of the browser node. It should be set using the --set-json option | | relayNode.sidecars | list | `[]` | It is used to add sidecars proxy in the same pod of the browser node. It means it will add a new container to the deployment itself. It should be set using the --set-json option | diff --git a/charts/selenium-grid/cross-browsers-values.yaml b/charts/selenium-grid/cross-browsers-values.yaml index bfd950dbb3..4de4963877 100644 --- a/charts/selenium-grid/cross-browsers-values.yaml +++ b/charts/selenium-grid/cross-browsers-values.yaml @@ -2,6 +2,12 @@ crossBrowsers: chromeNode: # Keep the first iteration with latest version of Chrome - nameOverride: + hpa: + browserVersion: '' + - nameOverride: '{{ $.Release.Name }}-node-chrome-131' + imageTag: '131.0' + hpa: + browserVersion: '131.0' - nameOverride: '{{ $.Release.Name }}-node-chrome-130' imageTag: '130.0' hpa: @@ -17,6 +23,20 @@ crossBrowsers: firefoxNode: # Keep the first iteration with latest version of Firefox - nameOverride: + hpa: + browserVersion: '' + - nameOverride: '{{ $.Release.Name }}-node-firefox-133' + imageTag: '133.0' + hpa: + browserVersion: '133.0' + - nameOverride: '{{ $.Release.Name }}-node-firefox-132' + imageTag: '132.0' + hpa: + browserVersion: '132.0' + - nameOverride: '{{ $.Release.Name }}-node-firefox-131' + imageTag: '131.0' + hpa: + browserVersion: '131.0' - nameOverride: '{{ $.Release.Name }}-node-firefox-130' imageTag: '130.0' hpa: @@ -32,6 +52,12 @@ crossBrowsers: edgeNode: # Keep the first iteration with latest version of Edge - nameOverride: + hpa: + browserVersion: '' + - nameOverride: '{{ $.Release.Name }}-node-edge-131' + imageTag: '131.0' + hpa: + browserVersion: '131.0' - nameOverride: '{{ $.Release.Name }}-node-edge-130' imageTag: '130.0' hpa: diff --git a/charts/selenium-grid/templates/_helpers.tpl b/charts/selenium-grid/templates/_helpers.tpl index ed1053538b..43a1c47f13 100644 --- a/charts/selenium-grid/templates/_helpers.tpl +++ b/charts/selenium-grid/templates/_helpers.tpl @@ -343,6 +343,14 @@ template: {{- end }} - name: SE_DRAIN_AFTER_SESSION_COUNT value: {{ and (eq (include "seleniumGrid.useKEDA" $) "true") (eq .Values.autoscaling.scalingType "job") | ternary $nodeMaxSessions 0 | quote }} + {{- if and (eq (include "seleniumGrid.useKEDA" $) "true") }} + - name: SE_NODE_BROWSER_VERSION + value: {{ default "" .node.hpa.browserVersion | quote }} + {{- end }} + {{- if and (eq (include "seleniumGrid.useKEDA" $) "true") }} + - name: SE_NODE_PLATFORM_NAME + value: {{ default "Linux" .node.hpa.platformName | quote }} + {{- end }} - name: SE_NODE_CONTAINER_NAME valueFrom: fieldRef: diff --git a/charts/selenium-grid/values.yaml b/charts/selenium-grid/values.yaml index 92c1434f9e..1bc13903f3 100644 --- a/charts/selenium-grid/values.yaml +++ b/charts/selenium-grid/values.yaml @@ -1117,6 +1117,8 @@ chromeNode: browserName: "chrome" # -- sessionBrowserName if the browserName is different from the sessionBrowserName sessionBrowserName: "chrome" + # -- browserVersion from the capability + browserVersion: "" # -- platformName from the capability platformName: "linux" # browserVersion: '91.0' # Optional. Only required when supporting multiple versions of browser in your Selenium Grid. @@ -1300,6 +1302,8 @@ firefoxNode: browserName: "firefox" # -- sessionBrowserName if the browserName is different from the sessionBrowserName sessionBrowserName: "firefox" + # -- browserVersion from the capability + browserVersion: "" # -- platformName from the capability platformName: "linux" # -- Skip check SSL when connecting to the Graphql endpoint @@ -1482,6 +1486,8 @@ edgeNode: browserName: "MicrosoftEdge" # -- sessionBrowserName if the browserName is different from the sessionBrowserName sessionBrowserName: "msedge" + # -- browserVersion from the capability + browserVersion: "" # -- platformName from the capability platformName: "linux" # -- Skip check SSL when connecting to the Graphql endpoint @@ -1666,6 +1672,8 @@ relayNode: sessionBrowserName: "" # -- platformName from the capability platformName: "Android" + # -- browserVersion from the capability + browserVersion: "" # browserVersion: '91.0' # Optional. Only required when supporting multiple versions of browser in your Selenium Grid. # -- Skip check SSL when connecting to the Graphql endpoint unsafeSsl: '{{ template "seleniumGrid.graphqlURL.unsafeSsl" . }}' # Optional diff --git a/generate_chart_changelog.sh b/generate_chart_changelog.sh index 1a4ab27dc3..49d8607fa2 100755 --- a/generate_chart_changelog.sh +++ b/generate_chart_changelog.sh @@ -7,6 +7,11 @@ TAG_PATTERN="selenium-grid" DEFAULT_TAG="trunk" SET_TAG=${1:-$(git rev-parse --abbrev-ref HEAD)} +function get_keda_version() { + KEDA_TAG_VERSION=$(grep KEDA_TAG_VERSION Makefile | sed 's/.*,\([^)]*\))/\1/p' | head -n 1) + KEDA_IMAGE_TAG=$(find . \( -type d -name .git -prune \) -o -type f -wholename '*/selenium-grid/values.yaml' -print0 | xargs -0 cat | grep $KEDA_TAG_VERSION | head -n 1 | cut -d ':' -f 2 | tr -d '[:space:]' | tr -d '"') +} + # Get current chart app version CHART_APP_VERSION=$(find . \( -type d -name .git -prune \) -o -type f -wholename '*/selenium-grid/Chart.yaml' -print0 | xargs -0 cat | grep ^appVersion | cut -d ':' -f 2 | tr -d '[:space:]') @@ -82,8 +87,12 @@ generate_changelog() { echo "" >>"$temp_file" fi + get_keda_version echo "### Experimental" >>"$temp_file" echo "- Selenium Grid Scaler implementation preview. [README](https://github.com/seleniumhq/docker-selenium/tree/trunk/.keda/README.md)" >>"$temp_file" + if [ -n "$KEDA_IMAGE_TAG" ]; then + echo "- Chart is tested autoscaling capabilities with KEDA image tag: $KEDA_IMAGE_TAG" >>"$temp_file" + fi echo "" >>"$temp_file" # Create chart_release_notes.md diff --git a/tests/AutoscalingTests/common.py b/tests/AutoscalingTests/common.py index a6d7426b7e..28dd182085 100644 --- a/tests/AutoscalingTests/common.py +++ b/tests/AutoscalingTests/common.py @@ -34,7 +34,9 @@ def get_pod_count(): return len([line for line in result.stdout.splitlines() if "selenium-node-" in line and "Running" in line]) def create_session(browser_name): - return webdriver.Remote(command_executor=CLIENT_CONFIG.remote_server_addr, options=BROWSER[browser_name], client_config=CLIENT_CONFIG) + options = BROWSER[browser_name] + options.set_capability("platformName", "Linux") + return webdriver.Remote(command_executor=CLIENT_CONFIG.remote_server_addr, options=options, client_config=CLIENT_CONFIG) def wait_for_count_matches(sessions, timeout=10, interval=5): elapsed = 0 diff --git a/tests/CDPTests/bootstrap.sh b/tests/CDPTests/bootstrap.sh index 1da9e6adf1..ad0ebfca3c 100755 --- a/tests/CDPTests/bootstrap.sh +++ b/tests/CDPTests/bootstrap.sh @@ -15,7 +15,7 @@ if [ -n ${SELENIUM_GRID_USERNAME} ] && [ -n ${SELENIUM_GRID_PASSWORD} ]; then echo "SELENIUM_REMOTE_HEADERS={\"Authorization\": \"Basic ${BASIC_AUTH}\"}" >> .env fi -echo "SELENIUM_REMOTE_CAPABILITIES={\"browserName\": \"${BROWSER}\"}" >> .env +echo "SELENIUM_REMOTE_CAPABILITIES={\"browserName\": \"${BROWSER}\", \"platformName\": \"Linux\"}" >> .env echo "NODE_EXTRA_CA_CERTS=${CHART_CERT_PATH}" >> .env cat .env diff --git a/tests/SeleniumTests/__init__.py b/tests/SeleniumTests/__init__.py index 9c612324ff..aee7d5b263 100644 --- a/tests/SeleniumTests/__init__.py +++ b/tests/SeleniumTests/__init__.py @@ -31,6 +31,14 @@ TEST_FIREFOX_INSTALL_LANG_PACKAGE = os.environ.get('TEST_FIREFOX_INSTALL_LANG_PACKAGE', 'false').lower() == 'true' TEST_ADD_CAPS_RECORD_VIDEO = os.environ.get('TEST_ADD_CAPS_RECORD_VIDEO', 'true').lower() == 'true' TEST_CUSTOM_SPECIFIC_NAME = os.environ.get('TEST_CUSTOM_SPECIFIC_NAME', 'false').lower() == 'true' +TEST_MULTIPLE_VERSIONS = os.environ.get('TEST_MULTIPLE_VERSIONS', 'false').lower() == 'true' +TEST_MULTIPLE_VERSIONS_EXPLICIT = os.environ.get('TEST_MULTIPLE_VERSIONS_EXPLICIT', 'true').lower() == 'true' +LIST_CHROMIUM_VERSIONS = ['130.0', '129.0', '128.0'] +LIST_FIREFOX_VERSIONS = ['132.0', '131.0', '130.0', '129.0', '128.0'] + +if not TEST_MULTIPLE_VERSIONS_EXPLICIT: + LIST_CHROMIUM_VERSIONS.append(None) + LIST_FIREFOX_VERSIONS.append(None) SELENIUM_GRID_URL = f"{SELENIUM_GRID_PROTOCOL}://{SELENIUM_GRID_HOST}:{SELENIUM_GRID_PORT}" CLIENT_CONFIG = ClientConfig( @@ -153,6 +161,10 @@ def setUp(self): options.set_capability('se:screenResolution', '1920x1080') if SELENIUM_GRID_TEST_HEADLESS: options.add_argument('--headless=new') + if TEST_MULTIPLE_VERSIONS: + browser_version = random.choice(LIST_CHROMIUM_VERSIONS) + if browser_version: + options.set_capability('browserVersion', browser_version) if TEST_NODE_RELAY == 'Android': options.set_capability('platformName', TEST_NODE_RELAY) options.set_capability('appium:platformVersion', TEST_ANDROID_PLATFORM_API) @@ -195,6 +207,11 @@ def setUp(self): options.set_capability('se:screenResolution', '1920x1080') if SELENIUM_GRID_TEST_HEADLESS: options.add_argument('--headless=new') + if TEST_MULTIPLE_VERSIONS: + browser_version = random.choice(LIST_CHROMIUM_VERSIONS) + if browser_version: + options.set_capability('browserVersion', browser_version) + options.set_capability('platformName', 'Linux') start_time = time.time() self.driver = webdriver.Remote( options=options, @@ -229,6 +246,11 @@ def setUp(self): options.set_capability('se:screenResolution', '1920x1080') if SELENIUM_GRID_TEST_HEADLESS: options.add_argument('-headless') + if TEST_MULTIPLE_VERSIONS: + browser_version = random.choice(LIST_FIREFOX_VERSIONS) + if browser_version: + options.set_capability('browserVersion', browser_version) + options.set_capability('platformName', 'Linux') start_time = time.time() self.driver = webdriver.Remote( options=options, diff --git a/tests/charts/make/chart_test.sh b/tests/charts/make/chart_test.sh index ba84d00533..f9207de8f4 100755 --- a/tests/charts/make/chart_test.sh +++ b/tests/charts/make/chart_test.sh @@ -63,6 +63,8 @@ TEST_PATCHED_KEDA=${TEST_PATCHED_KEDA:-"true"} BASIC_AUTH_EMBEDDED_URL=${BASIC_AUTH_EMBEDDED_URL:-"false"} SELENIUM_GRID_MONITORING=${SELENIUM_GRID_MONITORING:-"true"} TEST_EXISTING_PTS=${TEST_EXISTING_PTS:-"false"} +TEST_MULTIPLE_VERSIONS=${TEST_MULTIPLE_VERSIONS:-"false"} +TEST_MULTIPLE_VERSIONS_EXPLICIT=${TEST_MULTIPLE_VERSIONS_EXPLICIT:-"true"} cleanup() { # Get the list of pods @@ -386,6 +388,12 @@ if [ "${SELENIUM_GRID_PROTOCOL}" = "https" ]; then " fi +if [ "${TEST_MULTIPLE_VERSIONS}" = "true" ]; then + HELM_COMMAND_SET_BASE_VALUES="${HELM_COMMAND_SET_BASE_VALUES} \ + --values ${CHART_PATH}/cross-browsers-values.yaml \ + " +fi + HELM_COMMAND_SET_BASE_VALUES="${HELM_COMMAND_SET_BASE_VALUES} \ --values ${MATRIX_BROWSER_VALUES_FILE} \ " @@ -460,6 +468,8 @@ export TEST_DELAY_AFTER_TEST=${TEST_DELAY_AFTER_TEST:-"0"} export TEST_PLATFORMS=${TEST_PLATFORMS} export TEST_NODE_MAX_SESSIONS=${TEST_NODE_MAX_SESSIONS} export TEST_AUTOSCALING_ITERATIONS=${TEST_AUTOSCALING_ITERATIONS:-"20"} +export TEST_MULTIPLE_VERSIONS=${TEST_MULTIPLE_VERSIONS} +export TEST_MULTIPLE_VERSIONS_EXPLICIT=${TEST_MULTIPLE_VERSIONS_EXPLICIT} if [ "${MATRIX_BROWSER}" = "NoAutoscaling" ]; then ./tests/bootstrap.sh NodeFirefox if [ "${TEST_PLATFORMS}" = "linux/amd64" ]; then