Skip to content

Commit

Permalink
K8s: Add test multiple browser versions scale
Browse files Browse the repository at this point in the history
Signed-off-by: Viet Nguyen Duc <[email protected]>
  • Loading branch information
VietND96 committed Dec 19, 2024
1 parent d447581 commit 34ad7de
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 3 deletions.
9 changes: 8 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
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) \
Expand Down Expand Up @@ -960,8 +960,15 @@ chart_test_autoscaling_job_hostname:
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" \
Expand Down
2 changes: 1 addition & 1 deletion charts/selenium-grid/CONFIGURATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes
| ingress.nginx.proxyBuffer.number | int | `4` | Set buffer number to corresponding annotations for NGINX Ingress Controller |
| ingress.nginx.sslPassthrough | bool | `true` | Enable corresponding annotations for NGINX Ingress Controller |
| ingress.nginx.sslSecret | string | `""` | Specify a Secret with the certificate `tls.crt`, key `tls.key`, the name in the form "namespace/secretName" for NGINX Ingress Controller |
| ingress.nginx.useHttp2 | bool | `true` | Enables or disables HTTP/2 support in secure connections via annotations for NGINX Ingress Controller |
| ingress.nginx.useHttp2 | bool | `false` | Enables or disables HTTP/2 support in secure connections via annotations for NGINX Ingress Controller |
| ingress.nginx.upstreamKeepalive | object | `{"connections":10000,"requests":10000,"time":"1h"}` | Apply upstream keepalive settings once HTTP/2 is enabled |
| ingress.nginx.upstreamKeepalive.connections | int | `10000` | Set keepalive connections to corresponding annotations for NGINX Ingress Controller |
| ingress.nginx.upstreamKeepalive.time | string | `"1h"` | Set keepalive timeout to corresponding annotations for NGINX Ingress Controller |
Expand Down
26 changes: 26 additions & 0 deletions charts/selenium-grid/cross-browsers-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand All @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion charts/selenium-grid/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ ingress:
# -- Specify a Secret with the certificate `tls.crt`, key `tls.key`, the name in the form "namespace/secretName" for NGINX Ingress Controller
sslSecret: ""
# -- Enables or disables HTTP/2 support in secure connections via annotations for NGINX Ingress Controller
useHttp2: true
useHttp2: false
# -- Apply upstream keepalive settings once HTTP/2 is enabled
upstreamKeepalive:
# -- Set keepalive connections to corresponding annotations for NGINX Ingress Controller
Expand Down
20 changes: 20 additions & 0 deletions tests/SeleniumTests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = ['131.0', '130.0', '129.0', '128.0']
LIST_FIREFOX_VERSIONS = ['133.0', '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(
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -195,6 +207,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)
start_time = time.time()
self.driver = webdriver.Remote(
options=options,
Expand Down Expand Up @@ -229,6 +245,10 @@ 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)
start_time = time.time()
self.driver = webdriver.Remote(
options=options,
Expand Down
10 changes: 10 additions & 0 deletions tests/charts/make/chart_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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} \
"
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 34ad7de

Please sign in to comment.