From c5262d40a8d3b353392d76550c5e1f919b0e1ba7 Mon Sep 17 00:00:00 2001 From: strtgbb <146047128+strtgbb@users.noreply.github.com> Date: Tue, 2 Jun 2026 14:37:31 -0400 Subject: [PATCH 01/25] update runner labels --- .github/workflows/release_branches.yml | 90 +++++++++++++------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/.github/workflows/release_branches.yml b/.github/workflows/release_branches.yml index dcb462cd6a759..0d55dd2e364b9 100644 --- a/.github/workflows/release_branches.yml +++ b/.github/workflows/release_branches.yml @@ -30,7 +30,7 @@ on: # yamllint disable-line rule:truthy jobs: DockerHubPushAarch64: - runs-on: [self-hosted, altinity-on-demand, altinity-type-cax41, altinity-in-hel1, altinity-image-arm-snapshot-22.04-arm, altinity-startup-snapshot, altinity-setup-none] + runs-on: [self-hosted, altinity-on-demand, altinity-style-checker-aarch64] steps: - name: Check out repository code uses: Altinity/checkout@19599efdf36c4f3f30eb55d5bb388896faea69f6 @@ -52,7 +52,7 @@ jobs: path: ${{ runner.temp }}/docker_images_check/changed_images_aarch64.json DockerHubPushAmd64: - runs-on: [self-hosted, altinity-on-demand, altinity-type-cpx51, altinity-in-ash, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none] + runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] steps: - name: Check out repository code uses: Altinity/checkout@19599efdf36c4f3f30eb55d5bb388896faea69f6 @@ -75,7 +75,7 @@ jobs: DockerHubPush: needs: [DockerHubPushAmd64, DockerHubPushAarch64] - runs-on: [self-hosted, altinity-on-demand, altinity-type-cpx51, altinity-in-ash, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none] + runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] steps: - name: Check out repository code uses: Altinity/checkout@19599efdf36c4f3f30eb55d5bb388896faea69f6 @@ -119,7 +119,7 @@ jobs: secrets: inherit with: test_name: Compatibility check X86 - runner_type: altinity-on-demand, altinity-type-cpx51, altinity-in-ash, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-func-tester timeout_minutes: 180 run_command: | cd "$REPO_COPY/tests/ci" @@ -131,7 +131,7 @@ jobs: secrets: inherit with: test_name: Compatibility check Aarch64 - runner_type: altinity-on-demand, altinity-type-cax41, altinity-image-arm-snapshot-22.04-arm, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-on-demand, altinity-func-tester-aarch64 timeout_minutes: 180 run_command: | cd "$REPO_COPY/tests/ci" @@ -148,7 +148,7 @@ jobs: build_name: package_release checkout_depth: 0 timeout_minutes: 180 - runner_type: altinity-on-demand, altinity-type-ccx53, altinity-in-hil, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-builder additional_envs: | CLICKHOUSE_STABLE_VERSION_SUFFIX=altinitystable @@ -160,7 +160,7 @@ jobs: build_name: package_aarch64 checkout_depth: 0 timeout_minutes: 180 - runner_type: altinity-on-demand, altinity-type-ccx53, altinity-in-hil, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-builder additional_envs: | CLICKHOUSE_STABLE_VERSION_SUFFIX=altinitystable @@ -172,7 +172,7 @@ jobs: build_name: package_asan checkout_depth: 0 timeout_minutes: 180 - runner_type: altinity-on-demand, altinity-type-ccx53, altinity-in-hil, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-builder additional_envs: | CLICKHOUSE_STABLE_VERSION_SUFFIX=altinitystable @@ -184,7 +184,7 @@ jobs: build_name: package_ubsan checkout_depth: 0 timeout_minutes: 180 - runner_type: altinity-on-demand, altinity-type-ccx53, altinity-in-hil, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-builder additional_envs: | CLICKHOUSE_STABLE_VERSION_SUFFIX=altinitystable @@ -196,7 +196,7 @@ jobs: build_name: package_tsan checkout_depth: 0 timeout_minutes: 180 - runner_type: altinity-on-demand, altinity-type-ccx53, altinity-in-hil, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-builder additional_envs: | CLICKHOUSE_STABLE_VERSION_SUFFIX=altinitystable @@ -208,7 +208,7 @@ jobs: build_name: package_msan checkout_depth: 0 timeout_minutes: 180 - runner_type: altinity-on-demand, altinity-type-ccx53, altinity-in-hil, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-builder additional_envs: | CLICKHOUSE_STABLE_VERSION_SUFFIX=altinitystable @@ -220,7 +220,7 @@ jobs: build_name: package_debug checkout_depth: 0 timeout_minutes: 180 - runner_type: altinity-on-demand, altinity-type-ccx53, altinity-in-hil, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-builder additional_envs: | CLICKHOUSE_STABLE_VERSION_SUFFIX=altinitystable @@ -231,7 +231,7 @@ jobs: needs: - BuilderDebRelease - BuilderDebAarch64 - runs-on: [self-hosted, altinity-on-demand, altinity-type-cpx41, altinity-in-ash, altinity-image-x86-snapshot-22.04-amd, altinity-startup-snapshot, altinity-setup-none] + runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] timeout-minutes: 180 steps: - name: Check out repository code @@ -267,7 +267,7 @@ jobs: secrets: inherit with: test_name: ClickHouse build check - runner_type: altinity-on-demand, altinity-type-cax11, altinity-in-hel1, altinity-image-arm-snapshot-22.04-arm, altinity-startup-snapshot, altinity-setup-none + runner_type: altinity-on-demand, altinity-style-checker-aarch64 timeout_minutes: 180 additional_envs: | NEEDS_DATA< Date: Tue, 2 Jun 2026 14:59:48 -0400 Subject: [PATCH 02/25] update artifact actions --- .github/workflows/backport_branches.yml | 6 +++--- .github/workflows/master.yml | 6 +++--- .github/workflows/regression.yml | 18 +++++++++--------- .github/workflows/release_branches.yml | 8 ++++---- .github/workflows/reusable_build.yml | 2 +- .github/workflows/reusable_test.yml | 2 +- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.github/workflows/backport_branches.yml b/.github/workflows/backport_branches.yml index 55e4a4087263a..149047da73833 100644 --- a/.github/workflows/backport_branches.yml +++ b/.github/workflows/backport_branches.yml @@ -48,7 +48,7 @@ jobs: cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_images_check.py --suffix aarch64 - name: Upload images files to artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v7 with: name: changed_images_aarch64 path: ${{ runner.temp }}/docker_images_check/changed_images_aarch64.json @@ -65,7 +65,7 @@ jobs: cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_images_check.py --suffix amd64 - name: Upload images files to artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v7 with: name: changed_images_amd64 path: ${{ runner.temp }}/docker_images_check/changed_images_amd64.json @@ -94,7 +94,7 @@ jobs: cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_manifests_merge.py --suffix amd64 --suffix aarch64 - name: Upload images files to artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v7 with: name: changed_images path: ${{ runner.temp }}/changed_images.json diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index d1431008450d7..7e8867027bb3e 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -33,7 +33,7 @@ jobs: cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_images_check.py --suffix aarch64 - name: Upload images files to artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v7 with: name: changed_images_aarch64 path: ${{ runner.temp }}/docker_images_check/changed_images_aarch64.json @@ -49,7 +49,7 @@ jobs: cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_images_check.py --suffix amd64 - name: Upload images files to artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v7 with: name: changed_images_amd64 path: ${{ runner.temp }}/docker_images_check/changed_images_amd64.json @@ -78,7 +78,7 @@ jobs: cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_manifests_merge.py --suffix amd64 --suffix aarch64 - name: Upload images files to artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v7 with: name: changed_images path: ${{ runner.temp }}/changed_images.json diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml index 66682ea320e1e..62b562278d9a1 100644 --- a/.github/workflows/regression.yml +++ b/.github/workflows/regression.yml @@ -161,7 +161,7 @@ jobs: SUITE=${{ matrix.SUITE }} EOF - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ${{ env.REPORTS_PATH }} name: build_report_package_${{ inputs.arch }} @@ -205,7 +205,7 @@ jobs: SUITE=alter EOF - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ${{ env.REPORTS_PATH }} name: build_report_package_${{ inputs.arch }} @@ -251,7 +251,7 @@ jobs: STORAGE=/${{ matrix.STORAGE }} EOF - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ${{ env.REPORTS_PATH }} name: build_report_package_${{ inputs.arch }} @@ -300,7 +300,7 @@ jobs: STORAGE=/ssl EOF - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ${{ env.REPORTS_PATH }} name: build_report_package_${{ inputs.arch }} @@ -345,7 +345,7 @@ jobs: SUITE=ldap/${{ matrix.SUITE }} EOF - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ${{ env.REPORTS_PATH }} name: build_report_package_${{ inputs.arch }} @@ -385,7 +385,7 @@ jobs: SUITE=parquet EOF - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ${{ env.REPORTS_PATH }} name: build_report_package_${{ inputs.arch }} @@ -430,7 +430,7 @@ jobs: STORAGE=${{ matrix.STORAGE}} EOF - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ${{ env.REPORTS_PATH }} name: build_report_package_${{ inputs.arch }} @@ -481,7 +481,7 @@ jobs: STORAGE=/${{ matrix.STORAGE }} EOF - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ${{ env.REPORTS_PATH }} name: build_report_package_${{ inputs.arch }} @@ -534,7 +534,7 @@ jobs: STORAGE=/${{ matrix.STORAGE }} EOF - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: ${{ env.REPORTS_PATH }} name: build_report_package_${{ inputs.arch }} diff --git a/.github/workflows/release_branches.yml b/.github/workflows/release_branches.yml index 0d55dd2e364b9..7fa22f2f2c75a 100644 --- a/.github/workflows/release_branches.yml +++ b/.github/workflows/release_branches.yml @@ -91,13 +91,13 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Download changed aarch64 images - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: changed_images_aarch64 path: ${{ runner.temp }} - name: Download changed amd64 images - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: changed_images_amd64 path: ${{ runner.temp }} @@ -669,7 +669,7 @@ jobs: - name: Check out repository code uses: actions/checkout@v4 - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: build_report_package_release path: ${{ env.REPORTS_PATH }} @@ -711,7 +711,7 @@ jobs: - name: Check out repository code uses: actions/checkout@v4 - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: pattern: build_report_package_aarch64 path: ${{ env.REPORTS_PATH }} diff --git a/.github/workflows/reusable_build.yml b/.github/workflows/reusable_build.yml index aca556d0a405e..0d827e0a22be6 100644 --- a/.github/workflows/reusable_build.yml +++ b/.github/workflows/reusable_build.yml @@ -123,7 +123,7 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Download changed images - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: changed_images path: ${{ env.IMAGES_PATH }} diff --git a/.github/workflows/reusable_test.yml b/.github/workflows/reusable_test.yml index 5dc531af45e6b..2f3cc36de7874 100644 --- a/.github/workflows/reusable_test.yml +++ b/.github/workflows/reusable_test.yml @@ -147,7 +147,7 @@ jobs: job_type: test - name: Download json reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: build_report_package_* path: ${{ env.REPORTS_PATH }} From abc608695d0686859eba34d141699a8044f17c64 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Mon, 26 Oct 2026 15:57:03 +0100 Subject: [PATCH 03/25] Read CI secrets from env instead of SSM, fix runner labels --- .github/workflows/release_branches.yml | 18 +++++++++++------- .github/workflows/reusable_build.yml | 4 ++++ .github/workflows/reusable_test.yml | 4 ++++ tests/ci/clickhouse_helper.py | 11 ++++++++--- tests/ci/docker_images_check.py | 6 +++--- tests/ci/docker_manifests_merge.py | 6 +++--- tests/ci/docker_server.py | 6 +++--- tests/ci/env_helper.py | 4 ++++ tests/ci/get_robot_token.py | 11 +++-------- 9 files changed, 43 insertions(+), 27 deletions(-) diff --git a/.github/workflows/release_branches.yml b/.github/workflows/release_branches.yml index 7fa22f2f2c75a..f0906381bfd80 100644 --- a/.github/workflows/release_branches.yml +++ b/.github/workflows/release_branches.yml @@ -9,6 +9,10 @@ env: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + CLICKHOUSE_TEST_STAT_LOGIN: ${{ secrets.CLICKHOUSE_TEST_STAT_LOGIN }} + CLICKHOUSE_TEST_STAT_PASSWORD: ${{ secrets.CLICKHOUSE_TEST_STAT_PASSWORD }} + CLICKHOUSE_TEST_STAT_URL: ${{ secrets.CLICKHOUSE_TEST_STAT_URL }} + ROBOT_TOKEN: ${{ secrets.ROBOT_TOKEN }} on: # yamllint disable-line rule:truthy pull_request: @@ -30,7 +34,7 @@ on: # yamllint disable-line rule:truthy jobs: DockerHubPushAarch64: - runs-on: [self-hosted, altinity-on-demand, altinity-style-checker-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] steps: - name: Check out repository code uses: Altinity/checkout@19599efdf36c4f3f30eb55d5bb388896faea69f6 @@ -52,7 +56,7 @@ jobs: path: ${{ runner.temp }}/docker_images_check/changed_images_aarch64.json DockerHubPushAmd64: - runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] steps: - name: Check out repository code uses: Altinity/checkout@19599efdf36c4f3f30eb55d5bb388896faea69f6 @@ -131,7 +135,7 @@ jobs: secrets: inherit with: test_name: Compatibility check Aarch64 - runner_type: altinity-on-demand, altinity-on-demand, altinity-func-tester-aarch64 + runner_type: altinity-on-demand, altinity-func-tester-aarch64 timeout_minutes: 180 run_command: | cd "$REPO_COPY/tests/ci" @@ -231,7 +235,7 @@ jobs: needs: - BuilderDebRelease - BuilderDebAarch64 - runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] timeout-minutes: 180 steps: - name: Check out repository code @@ -314,7 +318,7 @@ jobs: secrets: inherit with: test_name: Install packages (arm64) - runner_type: altinity-on-demand, altinity-on-demand, altinity-func-tester-aarch64 + runner_type: altinity-on-demand, altinity-func-tester-aarch64 run_command: | cd "$REPO_COPY/tests/ci" python3 install_check.py "$CHECK_NAME" @@ -341,7 +345,7 @@ jobs: secrets: inherit with: test_name: Stateless tests (aarch64) - runner_type: altinity-on-demand, altinity-style-checker-aarch64 + runner_type: altinity-on-demand, altinity-func-tester-aarch64 additional_envs: | KILL_TIMEOUT=10800 run_command: | @@ -440,7 +444,7 @@ jobs: secrets: inherit with: test_name: Stateful tests (aarch64) - runner_type: altinity-on-demand, altinity-style-checker-aarch64 + runner_type: altinity-on-demand, altinity-func-tester-aarch64 additional_envs: | KILL_TIMEOUT=3600 run_command: | diff --git a/.github/workflows/reusable_build.yml b/.github/workflows/reusable_build.yml index 0d827e0a22be6..f1d75b7bd21a0 100644 --- a/.github/workflows/reusable_build.yml +++ b/.github/workflows/reusable_build.yml @@ -42,6 +42,10 @@ env: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + CLICKHOUSE_TEST_STAT_LOGIN: ${{ secrets.CLICKHOUSE_TEST_STAT_LOGIN }} + CLICKHOUSE_TEST_STAT_PASSWORD: ${{ secrets.CLICKHOUSE_TEST_STAT_PASSWORD }} + CLICKHOUSE_TEST_STAT_URL: ${{ secrets.CLICKHOUSE_TEST_STAT_URL }} + ROBOT_TOKEN: ${{ secrets.ROBOT_TOKEN }} jobs: runner_labels_setup: diff --git a/.github/workflows/reusable_test.yml b/.github/workflows/reusable_test.yml index 2f3cc36de7874..d8434600553bc 100644 --- a/.github/workflows/reusable_test.yml +++ b/.github/workflows/reusable_test.yml @@ -59,6 +59,10 @@ env: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + CLICKHOUSE_TEST_STAT_LOGIN: ${{ secrets.CLICKHOUSE_TEST_STAT_LOGIN }} + CLICKHOUSE_TEST_STAT_PASSWORD: ${{ secrets.CLICKHOUSE_TEST_STAT_PASSWORD }} + CLICKHOUSE_TEST_STAT_URL: ${{ secrets.CLICKHOUSE_TEST_STAT_URL }} + ROBOT_TOKEN: ${{ secrets.ROBOT_TOKEN }} jobs: runner_labels_setup: diff --git a/tests/ci/clickhouse_helper.py b/tests/ci/clickhouse_helper.py index 90a40fbaf737c..c38cd56896a7e 100644 --- a/tests/ci/clickhouse_helper.py +++ b/tests/ci/clickhouse_helper.py @@ -8,6 +8,11 @@ import requests # type: ignore +from env_helper import ( + CLICKHOUSE_TEST_STAT_LOGIN, + CLICKHOUSE_TEST_STAT_PASSWORD, + CLICKHOUSE_TEST_STAT_URL, +) from get_robot_token import get_parameter_from_ssm from pr_info import PRInfo from report import TestResults @@ -26,12 +31,12 @@ def __init__( self, url: Optional[str] = None, auth: Optional[Dict[str, str]] = None ): if url is None: - url = get_parameter_from_ssm("clickhouse-test-stat-url") + url = CLICKHOUSE_TEST_STAT_URL self.url = url self.auth = auth or { - "X-ClickHouse-User": get_parameter_from_ssm("clickhouse-test-stat-login"), - "X-ClickHouse-Key": get_parameter_from_ssm("clickhouse-test-stat-password"), + "X-ClickHouse-User": CLICKHOUSE_TEST_STAT_LOGIN, + "X-ClickHouse-Key": CLICKHOUSE_TEST_STAT_PASSWORD, } @staticmethod diff --git a/tests/ci/docker_images_check.py b/tests/ci/docker_images_check.py index adab6be672c88..7ae193cedf437 100644 --- a/tests/ci/docker_images_check.py +++ b/tests/ci/docker_images_check.py @@ -13,8 +13,8 @@ from clickhouse_helper import ClickHouseHelper, prepare_tests_results_for_clickhouse from commit_status_helper import format_description, get_commit, post_commit_status -from env_helper import REPO_COPY, RUNNER_TEMP, GITHUB_RUN_URL -from get_robot_token import get_best_robot_token, get_parameter_from_ssm +from env_helper import REPO_COPY, RUNNER_TEMP, GITHUB_RUN_URL, DOCKER_PASSWORD +from get_robot_token import get_best_robot_token from pr_info import PRInfo from report import TestResults, TestResult from s3_helper import S3Helper @@ -426,7 +426,7 @@ def main(): logging.info('Doing docker login') subprocess.check_output( # pylint: disable=unexpected-keyword-arg "docker login --username 'altinityinfra' --password-stdin", - input=get_parameter_from_ssm("dockerhub-password"), + input=DOCKER_PASSWORD, encoding="utf-8", shell=True, ) diff --git a/tests/ci/docker_manifests_merge.py b/tests/ci/docker_manifests_merge.py index 2692a0da2cb91..a689a59169a36 100644 --- a/tests/ci/docker_manifests_merge.py +++ b/tests/ci/docker_manifests_merge.py @@ -18,8 +18,8 @@ ) from commit_status_helper import format_description, get_commit, post_commit_status from docker_images_helper import IMAGES_FILE_PATH, get_image_names -from env_helper import RUNNER_TEMP, REPO_COPY -from get_robot_token import get_best_robot_token, get_parameter_from_ssm +from env_helper import RUNNER_TEMP, REPO_COPY, DOCKER_PASSWORD +from get_robot_token import get_best_robot_token from git_helper import Runner from pr_info import PRInfo from report import TestResults, TestResult @@ -251,7 +251,7 @@ def main(): if args.push: subprocess.check_output( # pylint: disable=unexpected-keyword-arg "docker login --username 'altinityinfra' --password-stdin", - input=get_parameter_from_ssm("dockerhub-password"), + input=DOCKER_PASSWORD, encoding="utf-8", shell=True, ) diff --git a/tests/ci/docker_server.py b/tests/ci/docker_server.py index 0cec4a8968b85..8e52fbb2a8671 100644 --- a/tests/ci/docker_server.py +++ b/tests/ci/docker_server.py @@ -17,8 +17,8 @@ from clickhouse_helper import ClickHouseHelper, prepare_tests_results_for_clickhouse from commit_status_helper import format_description, get_commit, post_commit_status from docker_images_check import DockerImage -from env_helper import CI, GITHUB_RUN_URL, RUNNER_TEMP, S3_BUILDS_BUCKET, S3_DOWNLOAD -from get_robot_token import get_best_robot_token, get_parameter_from_ssm +from env_helper import CI, GITHUB_RUN_URL, RUNNER_TEMP, S3_BUILDS_BUCKET, S3_DOWNLOAD, DOCKER_PASSWORD +from get_robot_token import get_best_robot_token from git_helper import Git from pr_info import PRInfo from report import TestResults, TestResult @@ -342,7 +342,7 @@ def main(): if args.push: subprocess.check_output( # pylint: disable=unexpected-keyword-arg "docker login --username 'altinityinfra' --password-stdin", - input=get_parameter_from_ssm("dockerhub-password"), + input=DOCKER_PASSWORD, encoding="utf-8", shell=True, ) diff --git a/tests/ci/env_helper.py b/tests/ci/env_helper.py index 16dd5495d0230..70d9197792440 100644 --- a/tests/ci/env_helper.py +++ b/tests/ci/env_helper.py @@ -32,6 +32,10 @@ S3_TEST_REPORTS_BUCKET = os.getenv("S3_TEST_REPORTS_BUCKET", "altinity-build-artifacts") S3_URL = os.getenv("S3_URL", "https://s3.amazonaws.com") CLICKHOUSE_STABLE_VERSION_SUFFIX = os.getenv("CLICKHOUSE_STABLE_VERSION_SUFFIX", "stable") +CLICKHOUSE_TEST_STAT_LOGIN = os.getenv("CLICKHOUSE_TEST_STAT_LOGIN") +CLICKHOUSE_TEST_STAT_PASSWORD = os.getenv("CLICKHOUSE_TEST_STAT_PASSWORD") +CLICKHOUSE_TEST_STAT_URL = os.getenv("CLICKHOUSE_TEST_STAT_URL") +DOCKER_PASSWORD = os.getenv("DOCKER_PASSWORD") S3_DOWNLOAD = os.getenv("S3_DOWNLOAD", S3_URL) S3_ARTIFACT_DOWNLOAD_TEMPLATE = ( diff --git a/tests/ci/get_robot_token.py b/tests/ci/get_robot_token.py index b93eea52f7006..d2091d511731d 100644 --- a/tests/ci/get_robot_token.py +++ b/tests/ci/get_robot_token.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import logging +import os from dataclasses import dataclass from typing import Any, Dict, List, Optional @@ -57,14 +58,8 @@ def get_parameters_from_ssm( # and the original implementation selects the "best one". To make it simpler and iterate faster, # we are using only one robot and keeping the method signature. In the future we might reconsider # having multiple robot tokens -def get_best_robot_token(token_prefix_env_name="github_robot_token"): - # Re-use already fetched token (same as in get_best_robot_token_original) - # except here we assume it is always a string (since we use only one token and don't do token rotation) - global ROBOT_TOKEN - if ROBOT_TOKEN is not None: - return ROBOT_TOKEN - ROBOT_TOKEN = get_parameter_from_ssm(token_prefix_env_name) - return ROBOT_TOKEN +def get_best_robot_token(): + return os.getenv("ROBOT_TOKEN") def get_best_robot_token_original(token_prefix_env_name: str="github_robot_token_") -> str: global ROBOT_TOKEN From 0a5d74b8fc90b5a5be35f2da6bec139ca426a656 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Mon, 26 Oct 2026 16:44:41 +0100 Subject: [PATCH 04/25] CI: use the clickhouse/minio-minio mirror image minio/minio was deleted from Docker Hub, so every with_minio=True test fails in cluster.start() on the image pull. Point docker_compose_minio.yml at the clickhouse/minio-minio mirror (upstream #119999). The mirror has no RELEASE.2021-09-23T04-46-24Z tag, so bump to RELEASE.2024-07-31T05-46-26Z, the same image releases/24.8.14 uses. Also take the test_storage_delta change from upstream #55245 (the 2021 -> 2023 minio upgrade): newer minio does not match a list_objects prefix with a leading slash. --- .../test/integration/runner/compose/docker_compose_minio.yml | 4 +--- tests/integration/test_storage_delta/test.py | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/docker/test/integration/runner/compose/docker_compose_minio.yml b/docker/test/integration/runner/compose/docker_compose_minio.yml index 9b17486542383..deb687053b922 100644 --- a/docker/test/integration/runner/compose/docker_compose_minio.yml +++ b/docker/test/integration/runner/compose/docker_compose_minio.yml @@ -2,9 +2,7 @@ version: '2.3' services: minio1: - # Newer version of minio results in such errors: - # "AWSErrorMarshaller: Encountered AWSError 'InternalError': We encountered an internal error, please try again" - image: minio/minio:RELEASE.2021-09-23T04-46-24Z + image: clickhouse/minio-minio:RELEASE.2024-07-31T05-46-26Z volumes: - data1-1:/data1 - ${MINIO_CERTS_DIR:-}:/certs diff --git a/tests/integration/test_storage_delta/test.py b/tests/integration/test_storage_delta/test.py index 0cd1208edfad2..621d2b89fc5ef 100644 --- a/tests/integration/test_storage_delta/test.py +++ b/tests/integration/test_storage_delta/test.py @@ -274,7 +274,7 @@ def test_multiple_log_files(started_cluster): assert len(files) == 2 # 1 metadata files + 1 data file s3_objects = list( - minio_client.list_objects(bucket, f"/{TABLE_NAME}/_delta_log/", recursive=True) + minio_client.list_objects(bucket, f"{TABLE_NAME}/_delta_log/", recursive=True) ) assert len(s3_objects) == 1 @@ -288,7 +288,7 @@ def test_multiple_log_files(started_cluster): assert len(files) == 4 # 2 metadata files + 2 data files s3_objects = list( - minio_client.list_objects(bucket, f"/{TABLE_NAME}/_delta_log/", recursive=True) + minio_client.list_objects(bucket, f"{TABLE_NAME}/_delta_log/", recursive=True) ) assert len(s3_objects) == 2 From e2bc825c10da727ea61f0027aef8252557735fa7 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Mon, 26 Oct 2026 16:59:45 +0100 Subject: [PATCH 05/25] CI: take stateless-test minio binaries from the mirror image dl.min.io returns 410 Gone for every minio/mc binary, so the stateless-test image can no longer be rebuilt. Copy minio and mc from clickhouse/minio-minio:RELEASE.2024-07-31T05-46-26Z instead, the same image the integration tests use. The newer mc and minio need the same changes upstream made when it moved stateless tests to 2024 minio (#67975): the renamed mc policy commands, and not sending a "/" prefix in S3ObjectStorage::listObjects. --- docker/test/stateless/Dockerfile | 13 ++----------- docker/test/stateless/setup_minio.sh | 4 ++-- src/Disks/ObjectStorages/S3/S3ObjectStorage.cpp | 3 ++- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/docker/test/stateless/Dockerfile b/docker/test/stateless/Dockerfile index 7e841a63b9c55..f6f99ff235d83 100644 --- a/docker/test/stateless/Dockerfile +++ b/docker/test/stateless/Dockerfile @@ -62,17 +62,8 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV NUM_TRIES=1 ENV MAX_RUN_TIME=0 -# Unrelated to vars in setup_minio.sh, but should be the same there -# to have the same binaries for local running scenario -ARG MINIO_SERVER_VERSION=2022-01-03T18-22-58Z -ARG MINIO_CLIENT_VERSION=2022-01-05T23-52-51Z -ARG TARGETARCH - -# Download Minio-related binaries -RUN arch=${TARGETARCH:-amd64} \ - && wget "https://dl.min.io/server/minio/release/linux-${arch}/archive/minio.RELEASE.${MINIO_SERVER_VERSION}" -O ./minio \ - && wget "https://dl.min.io/client/mc/release/linux-${arch}/archive/mc.RELEASE.${MINIO_CLIENT_VERSION}" -O ./mc \ - && chmod +x ./mc ./minio +# MinIO no longer publishes binaries on dl.min.io, take them from the mirror image +COPY --from=clickhouse/minio-minio:RELEASE.2024-07-31T05-46-26Z /usr/bin/minio /usr/bin/mc ./ RUN wget --no-verbose 'https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz' \ diff --git a/docker/test/stateless/setup_minio.sh b/docker/test/stateless/setup_minio.sh index 269c5055ea4fe..ba00df9d692c1 100755 --- a/docker/test/stateless/setup_minio.sh +++ b/docker/test/stateless/setup_minio.sh @@ -83,10 +83,10 @@ setup_minio() { local test_type=$1 ./mc alias set clickminio http://localhost:11111 clickhouse clickhouse ./mc admin user add clickminio test testtest - ./mc admin policy set clickminio readwrite user=test + ./mc admin policy attach clickminio readwrite --user=test ./mc mb clickminio/test if [ "$test_type" = "stateless" ]; then - ./mc policy set public clickminio/test + ./mc anonymous set public clickminio/test fi } diff --git a/src/Disks/ObjectStorages/S3/S3ObjectStorage.cpp b/src/Disks/ObjectStorages/S3/S3ObjectStorage.cpp index 0d9670efebe19..a2da01873e3e5 100644 --- a/src/Disks/ObjectStorages/S3/S3ObjectStorage.cpp +++ b/src/Disks/ObjectStorages/S3/S3ObjectStorage.cpp @@ -272,7 +272,8 @@ void S3ObjectStorage::listObjects(const std::string & path, RelativePathsWithMet S3::ListObjectsV2Request request; request.SetBucket(bucket); - request.SetPrefix(path); + if (path != "/") + request.SetPrefix(path); if (max_keys) request.SetMaxKeys(max_keys); else From 24742c73cf0418103ac4b275327916c75957faca Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Mon, 26 Oct 2026 11:16:15 +0100 Subject: [PATCH 06/25] Bump `brotli` from v1.0.9 to v1.0.10 --- contrib/brotli | 2 +- src/CMakeLists.txt | 4 ++ src/IO/tests/gtest_brotli_decoder.cpp | 58 +++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/IO/tests/gtest_brotli_decoder.cpp diff --git a/contrib/brotli b/contrib/brotli index 63be8a9940199..3646606894cd8 160000 --- a/contrib/brotli +++ b/contrib/brotli @@ -1 +1 @@ -Subproject commit 63be8a99401992075c23e99f7c84de1c653e39e2 +Subproject commit 3646606894cd8b8c75d79a569b6c95a33c699d63 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 81c74234473c8..3ec11ec716b01 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -600,6 +600,10 @@ if (ENABLE_TESTS) string_utils hilite_comparator) + if (TARGET ch_contrib::brotli) + target_link_libraries(unit_tests_dbms PRIVATE ch_contrib::brotli) + endif() + if (TARGET ch_contrib::simdjson) target_link_libraries(unit_tests_dbms PRIVATE ch_contrib::simdjson) endif() diff --git a/src/IO/tests/gtest_brotli_decoder.cpp b/src/IO/tests/gtest_brotli_decoder.cpp new file mode 100644 index 0000000000000..d7b8ade6a3f3a --- /dev/null +++ b/src/IO/tests/gtest_brotli_decoder.cpp @@ -0,0 +1,58 @@ +#include "config.h" + +#if USE_BROTLI + +#include +#include + +#include +#include +#include +#include +#include + +TEST(BrotliDecoder, RejectInvalidBlockSwitch) +{ + // A block switch is invalid when the stream declares only one block type. + // From https://github.com/nodejs/node/blob/main/test/parallel/test-zlib-invalid-input.js. + constexpr std::array input = { + 0x20, 0x00, 0x10, 0x41, 0x41, 0x41, 0xfc, 0xff, 0xff, 0x07, 0x00, + 0x22, 0x28, 0xf0, 0x0b, 0x60, 0xf7, 0xf4, 0x1f, 0x00, 0x00, 0x00}; + + for (size_t chunk_size : {input.size(), size_t{1}}) + { + std::unique_ptr state( + BrotliDecoderCreateInstance(nullptr, nullptr, nullptr), &BrotliDecoderDestroyInstance); + ASSERT_NE(state.get(), nullptr); + + std::array output{}; + size_t total_output = 0; + BrotliDecoderResult result = BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT; + + for (size_t offset = 0; offset < input.size() && result == BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT;) + { + size_t available_input = std::min(chunk_size, input.size() - offset); + const size_t provided_input = available_input; + const uint8_t * next_input = input.data() + offset; + do + { + uint8_t * next_output = output.data(); + size_t available_output = output.size(); + result = BrotliDecoderDecompressStream( + state.get(), &available_input, &next_input, &available_output, &next_output, nullptr); + total_output += output.size() - available_output; + ASSERT_LT(total_output, 64 * 1024 * 1024); + } + while (result == BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT); + offset += provided_input - available_input; + if (result == BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT) + ASSERT_GT(provided_input - available_input, 0); + } + + EXPECT_EQ(result, BROTLI_DECODER_RESULT_ERROR); + // -17 is the `BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH` code added by the fix. + EXPECT_EQ(BrotliDecoderGetErrorCode(state.get()), static_cast(-17)); + } +} + +#endif From 75fa109db06b151766b51bfeffab74a78514d87c Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Mon, 26 Oct 2026 21:45:32 +0100 Subject: [PATCH 07/25] CI: fix test-util image build (LLVM key hash, cmake-data pin) --- docker/test/util/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/test/util/Dockerfile b/docker/test/util/Dockerfile index 02e5171a34da0..6dfe4155bb6d0 100644 --- a/docker/test/util/Dockerfile +++ b/docker/test/util/Dockerfile @@ -20,7 +20,7 @@ RUN apt-get update \ lsb-release='11.1.*' \ wget='1.21.*' \ --yes --no-install-recommends --verbose-versions \ - && export LLVM_PUBKEY_HASH="bda960a8da687a275a2078d43c111d66b1c6a893a3275271beedf266c1ff4a0cdecb429c7a5cccf9f486ea7aa43fd27f" \ + && export LLVM_PUBKEY_HASH="5ffc7c9a9299ce774f81cada703e23ebba5bdfb0345b6c3b667b3ead7aa21c75ef62ccd74f7a8f2aa0cbe158d3068bbe" \ && wget -nv -O /tmp/llvm-snapshot.gpg.key https://apt.llvm.org/llvm-snapshot.gpg.key \ && echo "${LLVM_PUBKEY_HASH} /tmp/llvm-snapshot.gpg.key" | sha384sum -c \ && apt-key add /tmp/llvm-snapshot.gpg.key \ @@ -44,6 +44,7 @@ RUN apt-get update \ clang-${LLVM_VERSION} \ clang-tidy-${LLVM_VERSION} \ cmake='3.*' \ + cmake-data='3.*' \ gdb='12.1*' \ git='1:2.34.*' \ gperf='3.1*' \ From 62505bd4ffee0e8049c0fec0a586999e3675ad98 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 10:03:08 +0100 Subject: [PATCH 08/25] CI: build server-jepsen-test on top of the PR's test-base image server-jepsen-test was not listed as a test-base dependent, so it was built from the stale test-base:latest with an outdated Kitware apt key. Also push per-arch images without provenance attestation: an index with an attestation is rejected by `docker manifest create`. --- docker/images.json | 1 + tests/ci/docker_images_check.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/docker/images.json b/docker/images.json index 50d8036d5ab1e..531a4333ea72c 100644 --- a/docker/images.json +++ b/docker/images.json @@ -115,6 +115,7 @@ "dependent": [ "docker/test/fuzzer", "docker/test/integration/base", + "docker/test/server-jepsen", "docker/test/sqllogic", "docker/test/sqltest", "docker/test/stateless", diff --git a/tests/ci/docker_images_check.py b/tests/ci/docker_images_check.py index 7ae193cedf437..d1428febfbf87 100644 --- a/tests/ci/docker_images_check.py +++ b/tests/ci/docker_images_check.py @@ -250,6 +250,8 @@ def build_and_push_one_image( cmd = ( "docker buildx build --builder default " + # A single image is required by `docker manifest create`, not an index with an attestation + "--provenance=false " f"--label build-url={GITHUB_RUN_URL} " f"{from_tag_arg}" # A hack to invalidate cache, grep for it in docker/ dir From db4e8c28ecae536ae217fb7b72b6a4136faf7fe4 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 10:08:01 +0100 Subject: [PATCH 09/25] CI: fix docker_test unit tests Restore the test images fixture and the expected changed images from upstream, with altinityinfra names: the fixture referenced images it did not define. Run test_get_changed_docker_images as a push to an existing PR, since PR number 0 rebuilds every image. Mock reading the build log on failure, and expect --provenance=false and the :latest tag in the build command. --- tests/ci/docker_test.py | 78 ++++++++++++--------- tests/ci/tests/docker_images_for_tests.json | 46 ++++++++++-- 2 files changed, 86 insertions(+), 38 deletions(-) diff --git a/tests/ci/docker_test.py b/tests/ci/docker_test.py index def24a07f836f..e4655434048cf 100644 --- a/tests/ci/docker_test.py +++ b/tests/ci/docker_test.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import unittest -from unittest.mock import patch, MagicMock +from unittest.mock import patch, MagicMock, mock_open from pathlib import Path from env_helper import GITHUB_RUN_URL @@ -17,8 +17,13 @@ class TestDockerImageCheck(unittest.TestCase): - def test_get_changed_docker_images(self): + @patch("docker_images_check.subprocess") + def test_get_changed_docker_images(self, mock_subprocess): + # A push to an existing PR, where every unchanged image is already built for it + mock_subprocess.run.return_value.returncode = 0 pr_info = PRInfo(PRInfo.default_event.copy()) + pr_info.number = 12345 + pr_info.event = {"action": "synchronize"} pr_info.changed_files = { "docker/test/stateless", "docker/test/base", @@ -58,30 +63,30 @@ def test_get_changed_docker_images(self): False, "altinityinfra/test-base", # type: ignore ), - # di.DockerImage( - # "docker/test/fuzzer", - # "altinityinfra/fuzzer", - # False, - # "altinityinfra/test-base", # type: ignore - # ), - # di.DockerImage( - # # "docker/test/keeper-jepsen", - # # "altinityinfra/keeper-jepsen-test", - # False, - # "altinityinfra/test-base", # type: ignore - # ), - # di.DockerImage( - # "docker/docs/check", - # "altinityinfra/docs-check", - # False, - # "altinityinfra/docs-builder", # type: ignore - # ), - # di.DockerImage( - # "docker/docs/release", - # "altinityinfra/docs-release", - # False, - # "altinityinfra/docs-builder", # type: ignore - # ), + di.DockerImage( + "docker/test/fuzzer", + "altinityinfra/fuzzer", + False, + "altinityinfra/test-base", # type: ignore + ), + di.DockerImage( + "docker/test/keeper-jepsen", + "altinityinfra/keeper-jepsen-test", + False, + "altinityinfra/test-base", # type: ignore + ), + di.DockerImage( + "docker/docs/check", + "altinityinfra/docs-check", + False, + "altinityinfra/docs-builder", # type: ignore + ), + di.DockerImage( + "docker/docs/release", + "altinityinfra/docs-release", + False, + "altinityinfra/docs-builder", # type: ignore + ), di.DockerImage( "docker/test/stateful", "altinityinfra/stateful-test", @@ -122,6 +127,7 @@ def test_gen_version(self): self.assertEqual(versions, ["1", "1-HEAD"]) self.assertEqual(result_version, "1-HEAD") + @patch("docker_images_check.open", mock_open(), create=True) @patch("docker_images_check.TeePopen") @patch("platform.machine") def test_build_and_push_one_image(self, mock_machine, mock_popen): @@ -132,12 +138,13 @@ def test_build_and_push_one_image(self, mock_machine, mock_popen): mock_popen.assert_called_once() mock_machine.assert_not_called() self.assertIn( - f"docker buildx build --builder default --label build-url={GITHUB_RUN_URL} " + "docker buildx build --builder default --provenance=false " + f"--label build-url={GITHUB_RUN_URL} " "--build-arg FROM_TAG=version " f"--build-arg CACHE_INVALIDATOR={GITHUB_RUN_URL} " "--tag name:version --cache-from type=registry,ref=name:version " "--cache-from type=registry,ref=name:latest " - "--cache-to type=inline,mode=max --push --progress plain path", + "--cache-to type=inline,mode=max --tag name:latest --push --progress plain path", mock_popen.call_args.args, ) self.assertTrue(result) @@ -149,12 +156,13 @@ def test_build_and_push_one_image(self, mock_machine, mock_popen): mock_popen.assert_called_once() mock_machine.assert_not_called() self.assertIn( - f"docker buildx build --builder default --label build-url={GITHUB_RUN_URL} " + "docker buildx build --builder default --provenance=false " + f"--label build-url={GITHUB_RUN_URL} " "--build-arg FROM_TAG=version2 " f"--build-arg CACHE_INVALIDATOR={GITHUB_RUN_URL} " "--tag name:version2 --cache-from type=registry,ref=name:version2 " "--cache-from type=registry,ref=name:latest " - "--cache-to type=inline,mode=max --progress plain path", + "--cache-to type=inline,mode=max --tag name:latest --progress plain path", mock_popen.call_args.args, ) self.assertTrue(result) @@ -166,11 +174,12 @@ def test_build_and_push_one_image(self, mock_machine, mock_popen): mock_popen.assert_called_once() mock_machine.assert_not_called() self.assertIn( - f"docker buildx build --builder default --label build-url={GITHUB_RUN_URL} " + "docker buildx build --builder default --provenance=false " + f"--label build-url={GITHUB_RUN_URL} " f"--build-arg CACHE_INVALIDATOR={GITHUB_RUN_URL} " "--tag name:version2 --cache-from type=registry,ref=name:version2 " "--cache-from type=registry,ref=name:latest " - "--cache-to type=inline,mode=max --progress plain path", + "--cache-to type=inline,mode=max --tag name:latest --progress plain path", mock_popen.call_args.args, ) self.assertFalse(result) @@ -184,13 +193,14 @@ def test_build_and_push_one_image(self, mock_machine, mock_popen): mock_popen.assert_called_once() mock_machine.assert_not_called() self.assertIn( - f"docker buildx build --builder default --label build-url={GITHUB_RUN_URL} " + "docker buildx build --builder default --provenance=false " + f"--label build-url={GITHUB_RUN_URL} " f"--build-arg CACHE_INVALIDATOR={GITHUB_RUN_URL} " "--tag name:version2 --cache-from type=registry,ref=name:version2 " "--cache-from type=registry,ref=name:latest " "--cache-from type=registry,ref=name:cached-version " "--cache-from type=registry,ref=name:another-cached " - "--cache-to type=inline,mode=max --progress plain path", + "--cache-to type=inline,mode=max --tag name:latest --progress plain path", mock_popen.call_args.args, ) self.assertFalse(result) diff --git a/tests/ci/tests/docker_images_for_tests.json b/tests/ci/tests/docker_images_for_tests.json index 008c60ba62065..e0fead2968d69 100644 --- a/tests/ci/tests/docker_images_for_tests.json +++ b/tests/ci/tests/docker_images_for_tests.json @@ -5,7 +5,9 @@ }, "docker/packager/binary": { "name": "altinityinfra/binary-builder", - "dependent": [] + "dependent": [ + "docker/test/codebrowser" + ] }, "docker/test/compatibility/centos": { "name": "altinityinfra/test-old-centos", @@ -19,6 +21,14 @@ "name": "altinityinfra/integration-test", "dependent": [] }, + "docker/test/fuzzer": { + "name": "altinityinfra/fuzzer", + "dependent": [] + }, + "docker/test/performance-comparison": { + "name": "altinityinfra/performance-comparison", + "dependent": [] + }, "docker/test/util": { "name": "altinityinfra/test-util", "dependent": [ @@ -43,6 +53,14 @@ "name": "altinityinfra/unit-test", "dependent": [] }, + "docker/test/stress": { + "name": "altinityinfra/stress-test", + "dependent": [] + }, + "docker/test/codebrowser": { + "name": "altinityinfra/codebrowser", + "dependent": [] + }, "docker/test/integration/runner": { "name": "altinityinfra/integration-tests-runner", "dependent": [] @@ -51,6 +69,10 @@ "name": "altinityinfra/fasttest", "dependent": [] }, + "docker/test/style": { + "name": "altinityinfra/style-test", + "dependent": [] + }, "docker/test/integration/s3_proxy": { "name": "altinityinfra/s3-proxy", "dependent": [] @@ -92,14 +114,14 @@ "dependent": [] }, "docker/test/base": { - "name": "altinityinfra/test-base", - "dependent": [ + "name": "altinityinfra/test-base", + "dependent": [ "docker/test/stateless", "docker/test/integration/base", "docker/test/fuzzer", "docker/test/keeper-jepsen", "docker/test/sqltest" - ] + ] }, "docker/test/integration/kerberized_hadoop": { "name": "altinityinfra/kerberized-hadoop", @@ -113,6 +135,22 @@ "name": "altinityinfra/keeper-jepsen-test", "dependent": [] }, + "docker/docs/builder": { + "name": "altinityinfra/docs-builder", + "only_amd64": true, + "dependent": [ + "docker/docs/check", + "docker/docs/release" + ] + }, + "docker/docs/check": { + "name": "altinityinfra/docs-check", + "dependent": [] + }, + "docker/docs/release": { + "name": "altinityinfra/docs-release", + "dependent": [] + }, "docker/test/sqllogic": { "name": "altinityinfra/sqllogic-test", "dependent": [] From 64375c6cb9a626cbaee421b5a7873d56b223f6e9 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 12:13:44 +0100 Subject: [PATCH 10/25] CI: run azurite on a newer Node.js in the stateless-test image Azurite's transitive dependency @dabh/diagnostics >= 2.0.5 pulls @so-ric/colorspace, which uses syntax Node.js 12 from Ubuntu 22.04 can't parse, so azurite failed to start. --- docker/test/stateless/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/test/stateless/Dockerfile b/docker/test/stateless/Dockerfile index f6f99ff235d83..9ec220bd5e649 100644 --- a/docker/test/stateless/Dockerfile +++ b/docker/test/stateless/Dockerfile @@ -75,8 +75,10 @@ ENV MINIO_ROOT_PASSWORD="clickhouse" ENV EXPORT_S3_STORAGE_POLICIES=1 # TODO: check against 3.29.0, but 23.8.11 had azurite@3.28.0 +# Current azurite dependencies need a newer Node.js than the Ubuntu one RUN npm install -g azurite@3.29.0 \ - && npm install -g tslib@2.6.2 + && npm install -g tslib@2.6.2 \ + && npm install -g node@20.20.2 COPY run.sh / From 2898a59fdcbc1d29699c13ee7e40419c593a0981 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 12:53:40 +0100 Subject: [PATCH 11/25] CI: log in to Docker Hub as altinityinfra in docker setup DOCKER_PASSWORD belongs to the altinityinfra account (the image push scripts log in with it), so pairing it with secrets.DOCKER_USERNAME failed with 'incorrect username or password'. --- .github/workflows/release_branches.yml | 2 +- .github/workflows/reusable_build.yml | 2 +- .github/workflows/reusable_test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release_branches.yml b/.github/workflows/release_branches.yml index f0906381bfd80..e040cbe20804c 100644 --- a/.github/workflows/release_branches.yml +++ b/.github/workflows/release_branches.yml @@ -91,7 +91,7 @@ jobs: - name: Common docker setup uses: ./.github/actions/docker_setup with: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_USERNAME: altinityinfra DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Download changed aarch64 images diff --git a/.github/workflows/reusable_build.yml b/.github/workflows/reusable_build.yml index f1d75b7bd21a0..d337d24b2b5fe 100644 --- a/.github/workflows/reusable_build.yml +++ b/.github/workflows/reusable_build.yml @@ -123,7 +123,7 @@ jobs: - name: Common docker setup uses: ./.github/actions/docker_setup with: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_USERNAME: altinityinfra DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Download changed images diff --git a/.github/workflows/reusable_test.yml b/.github/workflows/reusable_test.yml index d8434600553bc..ace9e5006989e 100644 --- a/.github/workflows/reusable_test.yml +++ b/.github/workflows/reusable_test.yml @@ -159,7 +159,7 @@ jobs: - name: Docker setup uses: ./.github/actions/docker_setup with: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_USERNAME: altinityinfra DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Setup batch From b9bce0edaef18fb5effc2cc0f6bdee27136a6d29 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 13:59:36 +0100 Subject: [PATCH 12/25] CI: pin rustup to 1.27.0 in the binary-builder image rustup >= 1.28 prints the toolchain list as '(active, default)', which the bundled contrib/corrosion does not parse, so cmake failed with "Could not find toolchain ''". Same pin as upstream 0511e726e81, plus disabling auto self-update, since 'rustup toolchain install' otherwise updates rustup back to the latest version. --- docker/packager/binary/Dockerfile | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docker/packager/binary/Dockerfile b/docker/packager/binary/Dockerfile index c4691cfc59ebd..af5528e10ee7c 100644 --- a/docker/packager/binary/Dockerfile +++ b/docker/packager/binary/Dockerfile @@ -49,7 +49,22 @@ COPY --from=clickhouse/cctools:d9e3596e706b /cctools /cctools ENV RUSTUP_HOME=/rust/rustup ENV CARGO_HOME=/rust/cargo ENV PATH="/rust/cargo/bin:${PATH}" -RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \ +# Newer rustup changed the `rustup toolchain list` output that contrib/corrosion parses +ENV RUSTUP_VERSION=1.27.0 + +RUN ARCH=$(uname -m) && \ + if [ "$ARCH" = "x86_64" ]; then \ + RUSTUP_ARCH="x86_64-unknown-linux-gnu"; \ + elif [ "$ARCH" = "aarch64" ]; then \ + RUSTUP_ARCH="aarch64-unknown-linux-gnu"; \ + else \ + echo "Unsupported architecture: $ARCH"; exit 1; \ + fi && \ + curl -fsSL -o rustup-init "https://static.rust-lang.org/rustup/archive/${RUSTUP_VERSION}/${RUSTUP_ARCH}/rustup-init" && \ + chmod +x rustup-init && \ + ./rustup-init -y && \ + rm rustup-init && \ + rustup set auto-self-update disable && \ chmod 777 -R /rust && \ rustup toolchain install nightly-2023-07-04 && \ rustup default nightly-2023-07-04 && \ From a2c307a8c5070c24eeea0e71bb7e07e401b33ac4 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 14:42:26 +0100 Subject: [PATCH 13/25] Build rust crates with the workspace Cargo.lock Each crate is copied to the build directory on its own, outside of the workspace, so cargo ignored rust/Cargo.lock and resolved the latest dependency versions. Those now include crates using the 2024 edition (cpufeatures 0.3.1), which the pinned nightly-2023-07-04 cargo can't parse. --- rust/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rust/CMakeLists.txt b/rust/CMakeLists.txt index 6aa25e9567968..a060b14ba3666 100644 --- a/rust/CMakeLists.txt +++ b/rust/CMakeLists.txt @@ -81,6 +81,8 @@ function(add_rust_subdirectory src) message(STATUS "Copy ${src} to ${dst}") file(COPY "${src}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" PATTERN target EXCLUDE) + # The copied crate is outside of the workspace, give it the workspace lock file to keep dependency versions pinned + file(COPY "Cargo.lock" DESTINATION "${dst}") add_subdirectory("${dst}" "${dst}") # cmake -E copy* do now know how to exclude files From b0eee6bb590fc16d611efd79885688ee512c01cf Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 16:15:49 +0100 Subject: [PATCH 14/25] CI: use the bitnamilegacy openldap image in integration tests --- docker/test/integration/runner/compose/docker_compose_ldap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/test/integration/runner/compose/docker_compose_ldap.yml b/docker/test/integration/runner/compose/docker_compose_ldap.yml index 857f8fdce624b..a04753e5280b6 100644 --- a/docker/test/integration/runner/compose/docker_compose_ldap.yml +++ b/docker/test/integration/runner/compose/docker_compose_ldap.yml @@ -1,7 +1,7 @@ version: '2.3' services: openldap: - image: bitnami/openldap:2.6.6 + image: bitnamilegacy/openldap:2.6.6 restart: always environment: LDAP_ROOT: dc=example,dc=org From 372504ed46f61d8513fcde1899838a54bdf424eb Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 20:26:02 +0100 Subject: [PATCH 15/25] CI: use the PR tag of python-bottle in integration tests altinityinfra/python-bottle:latest is an arm64-only image now, so on amd64 runners the S3 mock servers in the resolver container fail to start. --- docker/test/integration/runner/compose/docker_compose_minio.yml | 2 +- tests/ci/integration_test_check.py | 1 + tests/integration/ci-runner.py | 1 + tests/integration/runner | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docker/test/integration/runner/compose/docker_compose_minio.yml b/docker/test/integration/runner/compose/docker_compose_minio.yml index deb687053b922..de48c6b24f2a7 100644 --- a/docker/test/integration/runner/compose/docker_compose_minio.yml +++ b/docker/test/integration/runner/compose/docker_compose_minio.yml @@ -34,7 +34,7 @@ services: # Empty container to run proxy resolver. resolver: - image: altinityinfra/python-bottle + image: altinityinfra/python-bottle:${DOCKER_PYTHON_BOTTLE_TAG:-latest} expose: - "8080" tty: true diff --git a/tests/ci/integration_test_check.py b/tests/ci/integration_test_check.py index fa0c8a84ae538..3bc0009b38ffd 100644 --- a/tests/ci/integration_test_check.py +++ b/tests/ci/integration_test_check.py @@ -51,6 +51,7 @@ "altinityinfra/mysql-php-client", "altinityinfra/nginx-dav", "altinityinfra/postgresql-java-client", + "altinityinfra/python-bottle", ] diff --git a/tests/integration/ci-runner.py b/tests/integration/ci-runner.py index 06746fc919d4c..aae542f1e5988 100755 --- a/tests/integration/ci-runner.py +++ b/tests/integration/ci-runner.py @@ -316,6 +316,7 @@ def get_images_names(): "altinityinfra/mysql-php-client", "altinityinfra/nginx-dav", "altinityinfra/postgresql-java-client", + "altinityinfra/python-bottle", ] def _pre_pull_images(self, repo_path): diff --git a/tests/integration/runner b/tests/integration/runner index ef00881d33586..8ef5e76d6550d 100755 --- a/tests/integration/runner +++ b/tests/integration/runner @@ -353,6 +353,8 @@ if __name__ == "__main__": env_tags += "-e {}={} ".format("DOCKER_NGINX_DAV_TAG", tag) elif image == "altinityinfra/postgresql-java-client": env_tags += "-e {}={} ".format("DOCKER_POSTGRESQL_JAVA_CLIENT_TAG", tag) + elif image == "altinityinfra/python-bottle": + env_tags += "-e {}={} ".format("DOCKER_PYTHON_BOTTLE_TAG", tag) else: logging.info("Unknown image %s" % (image)) From fe16f2be968fbf6ca1a769f9895434a734b41981 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 20:26:02 +0100 Subject: [PATCH 16/25] Regenerate expired certificates for test_reload_certificate Backport of ClickHouse/ClickHouse#77495. --- .../configs/WithChain.crt | 81 ++++++++++--------- .../configs/WithChain.key | 55 ++++++------- 2 files changed, 70 insertions(+), 66 deletions(-) diff --git a/tests/integration/test_reload_certificate/configs/WithChain.crt b/tests/integration/test_reload_certificate/configs/WithChain.crt index c75ee533f26f5..db522530e6e40 100644 --- a/tests/integration/test_reload_certificate/configs/WithChain.crt +++ b/tests/integration/test_reload_certificate/configs/WithChain.crt @@ -1,43 +1,46 @@ -----BEGIN CERTIFICATE----- -MIIDkzCCAnugAwIBAgIUSChEeHqJus9jzKmD/L3Tw0x4OwcwDQYJKoZIhvcNAQEL -BQAwQTEaMBgGA1UEAwwRZGVtby5tbG9wc2h1Yi5jb20xCzAJBgNVBAYTAlVTMRYw -FAYDVQQHDA1TYW4gRnJhbnNpc2NvMCAXDTI0MDMyMDE5MTE1OVoYDzIxMjQwMjI1 -MTkxMTU5WjBxMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQG -A1UEBwwNU2FuIEZyYW5zaXNjbzEPMA0GA1UECgwGRm9vQmFyMRAwDgYDVQQLDAdG -b28gQmFyMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDM//0s6AX988J86HzxX95irGa9cJIfY24UDBXVkO3gREiwj1Uf -bpvpxCcwADMuFdggsJlppWa3q+PNJ/eoVwdl3gG0WXaZp1rcuv6ltxdQAUtgfMAb -5p7HwsO7rCTGJBwa62Jg+E79j+V8rZWfaJRfNtY0p7eauWIrqLA0Gyse+lRayPHI -hsR9+0qedF+qziFpbNxpW8DHrpIrLb8LEao1BCYQ44koBXjkrXeR6OidXw/gek8+ -9M2GLxy6ubQ7hrcYwVWpFOKLLZLmyYDgescM6AIU904o1bN0yJ5rM7a1+f150qp6 -ttZlya0sJH0lm3gzEsqb6Fbh+Dw/9Lsp66sDAgMBAAGjUTBPMB8GA1UdIwQYMBaA -FMjyDUyXujACeQa2G+4I8ic5HVBiMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgTwMBQG -A1UdEQQNMAuCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEABEWEaVDqv9Za -bFpD/JEMIFVqe5ANKAnbbff0/vFJQ7yFmsL8/G4bbdd8uidRgE4WgoeNUscCnfk+ -kjb1vFjvY4/cBYITn41Pz5I7lQMH+BaR5gHb1oJVlJavQ2vsaeMuyDJaNmumejmU -YnoKZRwwb6SCXujS2MKgKl+jL5OkZk60i+nJhIXfxwMNmlvtqADSU5Z3VMagq8hj -DnEsxTz8PptuVaLVT4kcZm9gZpDEW2KPMZhNCv/g7EzQv8r3WnFGqumMGBO82ZE0 -mUh/Chrhss/meVK0FqTTBjOlex7R0GiJBCDfZGYTWIVdND4ICdZ1OpGWid5CXbfQ -sWBrbBaEyw== +MIID3DCCAsSgAwIBAgIUcfGThnHotOeUcs1+YKl6pCRr4cUwDQYJKoZIhvcNAQEL +BQAwcTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM +DVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCE15Um9vdENBMQswCQYDVQQLDAJJVDEV +MBMGA1UEAwwMVGVzdCBSb290IENBMCAXDTI1MDMxMjE0NTQ0MVoYDzMwMjQwNzEz +MTQ1NDQxWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQG +A1UEBwwNU2FuIEZyYW5jaXNjbzEOMAwGA1UECgwFTXlPcmcxCzAJBgNVBAsMAklU +MRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCb7I+Bn+8oZdieJk1fhmiQobsGWPgWjsb4BctrOSVMogI8xq6zoY1qb/fv +GmuWFKlQLhTiMxoulms9bj8nodEmvdE//fkhFsKRE4fWNFWuca3Dn7oAI0T3Y6Om +hjloAHyQsrn1Wu67rLbw4dlLho/e1MDQnrvm4GUXDNomKJqpKEYLuwRCHneGZODY +clyBG+e2zJihQ7zTuclWQ5DEMfZv5hZCzMLuN39jhNu0HXsHoV83+0WYUNlsLfIQ +A6VHMFc4nO1hsVgNNOiN8GoIas2mFSNXEgYwtJFUNZryxTKobSqQdTtV/ntTpQcM +edFLOfDQARjEVmG++WcgnWMhiRb7AgMBAAGjcDBuMB8GA1UdIwQYMBaAFJUmSN9Q +1AUhz/cIcj9jbHdI5yjqMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMBQGA1UdEQQN +MAuCCWxvY2FsaG9zdDAdBgNVHQ4EFgQUvAUvWxHDBYAOgKscyfWI5gFK3xQwDQYJ +KoZIhvcNAQELBQADggEBAGLZiE1KNgZtriqCEWyHNCCmJX8KjNsgOh7TP96M+Mhk +s/X/15fkKTuYymYC0r8x+zcAmI5YCqSquyuUvJfdUPJD0or0Ert4pWzs1kT60NAZ +fZcQYVaFVBYAbC3jaHDMP1v5lIWr3rRM4PVNcs/+/1CoLKng4S7qoy0u1wKR4Ctd +XWtURflfBp+xOxj9y3DR6H82M171c8pWNiIXxn0Btm8DweeuMRH2JbyOW+NnQ9v8 +QeLRxzolN97XhCYZkRMowXICfIHfcCFNB9JdVlbQRMB1noZcmxh/+Ah+SEq3orEM +sKe+BPyo1vlIkij+uDyzzSgGG+MV05RTkbMCfkJeTqM= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIDYzCCAkugAwIBAgIUR0PldYYSk3DAifgb600kvqjaCAIwDQYJKoZIhvcNAQEL -BQAwQTEaMBgGA1UEAwwRZGVtby5tbG9wc2h1Yi5jb20xCzAJBgNVBAYTAlVTMRYw -FAYDVQQHDA1TYW4gRnJhbnNpc2NvMB4XDTI0MDMyMDE5MTEzMVoXDTI1MDMxMTE5 -MTEzMVowQTEaMBgGA1UEAwwRZGVtby5tbG9wc2h1Yi5jb20xCzAJBgNVBAYTAlVT -MRYwFAYDVQQHDA1TYW4gRnJhbnNpc2NvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAqL3k6Pexu1KR8fc84fRmu0hYon7+xOPmtFSzspeN+DJNe5oDO6x0 -RzTQkgtDoxTcq32O290r3uURnDmnvNubz5yTpM1Zcz/kuSNpHLJh4yyZsXRsB21v -lb3bhjqyn6rkfoQzIMekt7clPQS0dWdU2T+lwn6XBVShOyB/W7ysP309ofQGXV+T -VFyU+lgZc2WjK6611QDCpTXgRc/UKUfU5460BnTCylP6jzBOWBZb8FX6dYBzS4U2 -yISvOXagxJVruoWjscc35ln6HBQ8bu/fI8Q0n1/ROlm785Bsd/LpVw465kklwQwS -FY3FQkiedD1fyszXO4Yq5PARw54AGKbAyQIDAQABo1MwUTAdBgNVHQ4EFgQUyPIN -TJe6MAJ5BrYb7gjyJzkdUGIwHwYDVR0jBBgwFoAUyPINTJe6MAJ5BrYb7gjyJzkd -UGIwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAYyl27sxwrjz5 -qcqwbLYv2eFIR6VZzvHfknSK1ht1jzMkXxvAOjETbYwqwWquWwMHOD2X4q5d57nu -qYAE9YE27HFzknPQkDdzwJ0u4dKi28PK8tM6dqDK46LSal/MEUxXGuzW3TRyJXrl -lPi+Wh6gZRRiANJ+giEwvQ+8k6eURHrhtL7yZqT+swi+jP4h6S4mmHmsaOj4VoP/ -NCFoRZud5SCd7RZV+fzNfxhLHI9I2c2gFycBDZOEdlrIZHM6EoaDb3i9kDVbnZqG -Zj/+k/NwCKg5UiDap6Z7Xj7w0chSppg3DMcsxGeQ9vQcMtydNu5fSK4CozNqxObb -hGBJrQylAw== +MIIDxTCCAq2gAwIBAgIUT5ZPP1IeTrlIGhlR6AI4aoL6HVcwDQYJKoZIhvcNAQEL +BQAwcTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM +DVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCE15Um9vdENBMQswCQYDVQQLDAJJVDEV +MBMGA1UEAwwMVGVzdCBSb290IENBMCAXDTI1MDMxMjE0NTIwM1oYDzMwMjQwNzEz +MTQ1MjAzWjBxMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQG +A1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwITXlSb290Q0ExCzAJBgNVBAsM +AklUMRUwEwYDVQQDDAxUZXN0IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQD3Ijwg2bnQelc1TdqXg4rLfDcMWZHGHiYB1pN9jF4t6vrhKvgc +SgqCtTbcTHiXNh3CVrrIXhJlHy/tqg6w+kLSKwjTFBIvEqL8xTl4FaqY4LOVvWGl +q7c6xLXZOuEaeXniBZqF8v3G2sQc5m84giSo3F8arXui8eiGJvFSWnXSgjtau0Yx +xcvKoedMcSGYQNKt71qrXAe9d41zumt5L30dxSSLbMT8p7QE2CDSkfiw50p62a4h +o3cqa5Mqgd5Uv+JHgrwhXEQFeJ7652yIGP+bLLNj5cG14lhzuOa3Psw8XUoqp05S +FQdvzmdDJph3CFldN5ZI6UAXA9TIZCdCQGpRAgMBAAGjUzBRMB0GA1UdDgQWBBSV +JkjfUNQFIc/3CHI/Y2x3SOco6jAfBgNVHSMEGDAWgBSVJkjfUNQFIc/3CHI/Y2x3 +SOco6jAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAhHItkIwHq +HKeAPA4rCPTvqoWXAFL9zgpqdlwEOGJTjriJnCfAxABWbn1oekMdVzxPoO7qP/0K +YNo5ZUu1u7dspQDRumn48NBjBDUL8dIKmksUo3OABHkGPU3q0WjaUbXELTvGqdb5 +7XZFFSp0f0GKFUtxR0ZomzPKDy3yhuHhl4QJiB7xfbtXrNskUKqUeYsRUas9VzhF +KKGRcIKjm5gTmNUMTMzi+QLqlfqaqQh+z7Z3okmLM+4bD2ud9xFOqgZSE83mI5aV +wahcYXHV1b2OhV/nJ4PtLoQHqfG2IZhcXM4EONMfQ5QdhpkMDaead+qHwMqK45+k +l35/AcexkZc+ -----END CERTIFICATE----- diff --git a/tests/integration/test_reload_certificate/configs/WithChain.key b/tests/integration/test_reload_certificate/configs/WithChain.key index eb55458b143f4..13d6ac3729f13 100644 --- a/tests/integration/test_reload_certificate/configs/WithChain.key +++ b/tests/integration/test_reload_certificate/configs/WithChain.key @@ -1,27 +1,28 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEAzP/9LOgF/fPCfOh88V/eYqxmvXCSH2NuFAwV1ZDt4ERIsI9V -H26b6cQnMAAzLhXYILCZaaVmt6vjzSf3qFcHZd4BtFl2mada3Lr+pbcXUAFLYHzA -G+aex8LDu6wkxiQcGutiYPhO/Y/lfK2Vn2iUXzbWNKe3mrliK6iwNBsrHvpUWsjx -yIbEfftKnnRfqs4haWzcaVvAx66SKy2/CxGqNQQmEOOJKAV45K13kejonV8P4HpP -PvTNhi8curm0O4a3GMFVqRTiiy2S5smA4HrHDOgCFPdOKNWzdMieazO2tfn9edKq -erbWZcmtLCR9JZt4MxLKm+hW4fg8P/S7KeurAwIDAQABAoIBAQDIT6LtzFJ+kT+L -mgjsOocs19UUavj9XsTjJeP36UPnDhIRJB1DN2t2Astf5fIcqA+l8aoWRx6Vfop7 -nwAqJ8/8w+/acEipX5Qzdyz4dG19Kaajw4JcQP8JptBng4/zZLlpvHNG2ZslvQO6 -zksTlrbUStsIXJHVyCubCZwTbjC2dJlc97705DZAk/8L7FkljmyJws2xwQZlxdQG -FZ+8IrAqpWJC55EPfKo6+QsKEc9hh4N/MQW483V5yCuw9dLShcEMDGuxcHGFHif8 -BrwImih0rIwj9tTDY9pw6aJ5+80tVStNLDk+1eQRME6Fy/c7RG/sm/lj+P0YOI7F -jH4wyXVRAoGBAOc+rFNpM/CgRZD4VXQ+gV1+PLdaqUUU3UXAPfNWkrMIr0u4+tmg -OMMkXaM7B/ps7o5+Rcj+tO1VAvl6m7uM376szC3Ex8JA0XBDmJrJKfEQCHkzvkdf -wywVBeAR4f3D2+9Meh1XSNRqGU+Anb48neTyVYzPNIoK8ZmtZID49GfVAoGBAOLy -EX1TT1xwE/VwDy5BeJQzyZ+xwevie/960RIYooLeb31NLhOcX142b8U7XRMtiqdd -wfsT5SbjnrATBponKZELO7LwE+Z4djo2+O6JZjYB5/t/Z6r7qfOaTTlJEl8VJKo4 -F+qAsqKo0Q9EpkRUeNdcOjDzkuEikw9IlhS0VEt3AoGAWLHoRQH4AxZmOGmX1UNY -OTT/MtCaVj3fdS58VIZjNDpjiibESI601txu8fnlYH9BrPPv7l0LpnBR+MC3VON+ -ulLq6a8tc2uLKYUz1kLMTIL6zQo0tImdgZ36p+wUA1KJXCq4N+LPs3GSjbTmTB5R -7Yuplp2vKDd0XZ5tCy7yB5UCgYEA3ppoE1DTSC1bNmSLT2jCuEOv4ic+unw1+lti -lWh6hvldzD8XEf9RAB1PNtvKqNQD67SoX/mczK956OVQlYYSXIXzMcoRCwBfnyxq -sbct/Y2TGXpXmjwt8JcKZkVJcuBPTXOl6cwA7FHAdkR0/hMJUNzS608PZCtAqj4d -kANtp3MCgYEA3plv6RYYDZsUdJmIcdIvr/LxWTSqYf37LQM//k+OXo+zWMxgnUNv -AEqDlNWP+bw3yJlU1bQS2o1Z+hKzDgqDZtaVVVDgdVsUaDSW0EsJpedWXoGqJdrw -yxhB7RYi1tQsXHbR1iyT5hH0ZlV7s0XIKRU4U8MP05av099+++YKhks= ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCb7I+Bn+8oZdie +Jk1fhmiQobsGWPgWjsb4BctrOSVMogI8xq6zoY1qb/fvGmuWFKlQLhTiMxoulms9 +bj8nodEmvdE//fkhFsKRE4fWNFWuca3Dn7oAI0T3Y6OmhjloAHyQsrn1Wu67rLbw +4dlLho/e1MDQnrvm4GUXDNomKJqpKEYLuwRCHneGZODYclyBG+e2zJihQ7zTuclW +Q5DEMfZv5hZCzMLuN39jhNu0HXsHoV83+0WYUNlsLfIQA6VHMFc4nO1hsVgNNOiN +8GoIas2mFSNXEgYwtJFUNZryxTKobSqQdTtV/ntTpQcMedFLOfDQARjEVmG++Wcg +nWMhiRb7AgMBAAECggEAN+av7IEydQFOkCSbSMwfYPsa2kO7bhryKqmpLF/oh3jt +5Gw25h/dW3OZKBgIyl3N9fkPc6lukZVMDVIhQkw5d/JFuvOLBdnrF6gw4xMQROJs +sd3qCXKbnzYRzfoBStAh2J67HMPlI1PgoqvWA8XSfsk395NxOmzo0ULCUzvrdwlx +44oBUp9rOgHves16s9Nk5TNbqAjoQXUdm9p0GkbpWqVhJEJWHh8VpX8OBGuvx0yW +JwAKTRNiWBlmm28KL2VyDPOHUhtqMK8P+jWO145ZdYMMI/UccMzKSfzPmXjTfOcs +LL4iIbDPjakcjvoVhP1v0K6ifTUTSkwZh3HvEseYgQKBgQDSBQhlBsrKnf0Yq3A+ +K0rK5z010zeOyy2wpfF/5sGS7LILuhO75Xx0321bjzigZsPL9Vx/ftlIc2qYsy2H +LZt8QSG5xMc8J+I/A417kNBsHr57leQDH19cYMpTkBkvTfB5VlWKom4K+pTBrenK +3eBUrrIq4D5/Uoa3u5hGJu3oIwKBgQC+D6IYVsZ+WMpZE9ngQqlbpj3g5NWzBQCO +sqxeNwKyd0aQ1el28ojLL2eQ13lV2G2vSbM+PhnfHqN2EvJ4xG0uGEf9bD9O7dnu +6Ll5Q2wsURLS6Vk9qh4V7xIX0A7NgtCeiAXm61Ek98gTP87+2p8G7R02G58R70mW +3OtqgNpXSQKBgDkS6Q8bY2zgtnFH1b7vYOn3IWlJNyX1DTuePRz3Bs/4xwHs1YQQ +f1v7g+qH52mfw8Hfsf1r6XyI8QUCXHMJ7+E6igHD+ijc5d0eCAr2dc2MJVPMjiRT +GEUwgIto848pbRpsXd7I+YK+SkLAEnLxDQ+2UfDY8+MB+F5h+qXF2o1lAoGAJAt4 +9V63pEyYi449Os/JqKz9fUJI2Puw4F84W2HZbBk808kNztYuZUJnRMvoogQ6wQyc +JsjGRU9dNs5fF9JA1oYaWRCHbSOkui9+xWWpBTqW9FL27r/tlsFRUBzQQd92SyqG +3AVyzS0Ez8nBKwoxMLIVYSaZ41/bN/ZL21X2kqkCgYEAnRg1DF33CKxtX0rJDm4d +z6EBBH56+dGe7F1JJNn40KNTZTNIcJJXCL8ZDwDTu4HuVWPicx4lrNqh4kTZAZzM +6m7qtNBmlSRRo4Ncb/GtKHFAqrifveo2wP1WC3u9pqafq5r/Y+PrIBEbnCx+PHoT +AkbNeX65miN+DZiwALMk9k4= +-----END PRIVATE KEY----- From 80f91d8b802973af72fac7e2c766239a6049d533 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 20:26:02 +0100 Subject: [PATCH 17/25] Update expired mongo_cert.pem mongod refuses to start with an expired certificate. Taken from 6439feccb9d. --- tests/integration/helpers/mongo_cert.pem | 93 ++++++++++++------------ 1 file changed, 48 insertions(+), 45 deletions(-) diff --git a/tests/integration/helpers/mongo_cert.pem b/tests/integration/helpers/mongo_cert.pem index b9c3b83e4733c..9444d19a3d2a5 100644 --- a/tests/integration/helpers/mongo_cert.pem +++ b/tests/integration/helpers/mongo_cert.pem @@ -1,49 +1,52 @@ -----BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC3uaPiZMfjPBBE -yDEYJsJIoriu0SaC80uTmPM7bFpnOOXOBvbT4wD2q+uVaLQifKtPTgZAkP5Y3rX8 -S5TOzaLsNp68S1Ja/EzxQUolOSgb4A948TTiUTrTjfMxsPRhmxXTjozWV8CFtL9P -Lg6H+55oyQOJedWYe1kSWRJQayXSweBK5qjOPi2qDF/xdFRQuMivpBUar/b/E9GQ -RKpIaoqMYsl/WF/tReb4N658UxkVlFdR8s48UoA9LfJLMPr4N+QDTfvtcT2bYlpT -4a9b6IXa9BQKCw3AKfTqEPO1XunH//iLNkt1bLtqgZNyT/tY0tLY3EKMXIDuRBVn -KCbfVJ1RAgMBAAECggEAJFCjXiqBgB7tMEtJuPZgTK8tRhC9RgEFHUWMPmCqdeC/ -O7wQqc0i8Z8Fz+CESpTN370Sa0y9mZ9b5WSjI0VuQLaDJcDVpHpeUwmOuFDV5ryh -EkzLITjhIdPbECVkCK7433o7yFpMCaGydtopsSNBKoEhG9ljKOKotoG4pwCm10N5 -K9Qepj82OjRhLkpmuiMFb4/vvOm5dglYmkq5+n/fdUYFtrYr3NvMSCTlietPHDgV -Wb3strvk1g9ARWfa2j7Q6moF2sbyob9zVLoRiD9VgmNB60v7QAJxDctVkbOoDgKp -uN2fkxTHwlOPAO6Zhgnie11jnZr1711TFxmEfMkSKQKBgQDqpB8m0hSJsWLKWxQK -yx+5Xgs+Cr8gb0AYHJQ87obj2XqwXLpBSMrkzTn6vIGRv+NMSfiM/755RUm5aJPY -om+7F68JEIL26ZA7bIfjHhV5o9fvpo+6N6cJyR08Q/KkF8Tej9K4qQec0W/jtKeZ -KAJ1k7/BBuN82iTtEJ3GWBaaRwKBgQDIcwQrGlyyXqnBK25gl/E1Ng+V3p/2sy98 -1BpEshxen4KorHEXCJArydELtvK/ll6agil6QebrJN5dtYOOgvcDTu1mQjdUPN3C -VXpSQ0L8XxfyTNYQTWON9wJGL1pzlTiyHvlSrQFsFWMUoxrqndWIIRtrXjap1npp -HDrcqy2/pwKBgB5fHhUlTjlAd7wfq+l1v2Z8ENJ4C6NEIzS7xkhYy6cEiIf5iLZY -mMKi+eVFrzPRdbdzP7Poipwh5tgT/EcnR3UdLK/srjcNpni6pKA2TatQFOxVT/dX -qsxudtVNKkQpO3dfgHQclPqsdWIxCRye/CqB9Gkk3h9UEUGKTBHXZx2TAoGAF0tG -cLvfidr2Xzxs10zQ+x4NMZ1teX3ZRuhfJRyNr3FZ/cAMZGDaYDxTzsiz7Q/Mbqgx -qcN+0lS2gq1VXHpbukaxz/Bh/agVHUBRtr2aSznBzqafOcXEi/roiL94A3aT4B85 -WiJAyA60NPG/bwRojClMxm1sbNA/6XceYAaEioECgYEA3m88G3UwizfJAsfT5H5K -3HXNYzQ1XGrA8shI0kxeqfNP5qmTfH5q/K2VMWeShT3F/9Ytgc+H8c9XP1wKq7Zl -6AtmdDOeLzHkgwVK0p20/Wh2Qjw4ikJLdM+y8wnfMiwCXWQxoh1X905EwNtyBc2Z -9S3G5CXldFHC4NGdx0vetiE= +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCUnkHzBu8XdPpD +3oWJRLBMNEptQwdOUl1QhMyF9wxQ+lya3fHnlsJc2GgWrZHMI/vMr6rJHtNl/92M +KcychYswKiSKCqpeXOWIotsR9UvTxT9Mvi6Ca3vnkM4h8jt97XnnnXhjSdOUptmQ +M43zEO0XYekvoHSDuGNdNokEecq9mk64e7bu15DQo8Ck6jDL80opD9UX7diehAop +vjI2AgrR/+MlxnhCeXqVOLd8ukNtwdmRIWPrKlHcICvabvKHuJpGdUL8GpHPUINd +qMEUg4wQWKz74IV1aZCdiZICk6yACM/bWed3g1RzV21jAKLaL4xJkUqBiEtcs8Jk +PT3cVMGHAgMBAAECggEAAul6qiHchB+uQMCWyC5xTeRqAXR3tAv4Tj4fGJjkXY4Z +OrAjr9Kp38EvX1amgvUWV3FT3NMevDf5xd9OdzAA0g0uJIF+mAhYFW48i1FnQcHQ +mOf0zmiZR7l8o7ROb3JvooXHxW+ba/qjGPVwC801gJvruehgbOCRxh9DTRp7sH5K +BmcddhULhKBEQjWUmYNEM3A2axpdi3g1aYKERRLn8J0DXcItTwbxuxbNcs3erl8W +3yyv/JKmqnWF5sNyX3wEWuQcDEZZy+W7Hn4KPMxyU+WA5el5nJ8kFlxhpInmajwu +8Ytn6IEyThyXutVomosVBuP16QORl2Nad0hnQO9toQKBgQDDgiehXr3k2wfVaVOD +PocW4leXausIU2XcCn6FxTG9vLUDMPANw0MxgenC2nrjaUU9J9UjdRYgMcFGWrl4 +E27wEn5e0nZ/Y7F2cfhuOc9vNmZ+eHm2KQRyfAjIVL5Hpldqk2jXyCnLBNeWGHSw +kPQMU+FLqmrOFUvXlD2my+OSHwKBgQDCmgS9r+xFh4BCB9dY6eyQJF/jYmAQHs26 +80WJ6gAhbUw1O71uDtS9/3PZVXwwNCOHrcc49BPrpJdxGPHGvd2Q5y+j5LDDbQSZ +aLTiCZ2B0RM5Bd2dXD8gEHN4WCX7pJ/o4kDi4zONBmp5mg/tFfer5z5IU/1P7Wak +1Mu0JIHzmQKBgDNaNoqeVgaMuYwGtFbez6DlJtiwzrdLIJAheYYte5k4vdruub8D +sNyKIRp7RJgDCJq9obBEiuE98GRIZDrz78nDMco6QcHIL87KtNRO/vtZMKa7gkyk +jXR8u9nS2H/9YyytN3amLsQSq4XTOqM+D7xFNAIp6w/ibB9d4quzFj1FAoGBAKTE +x/LcO897NWuzO/D6z+QUCGR87R15F3SNenmVedrTskz4ciH3yMW+v5ZrPSWLX/IH +f8GHWD6TM+780eoW5L1GIh5BCjHN4rEJ6O3iekxqfD4x6zzL2F8Lztk8uZxh/Uuw +FoSFHybvIcQoYAe8K+KPfzq6cqb0OY6i5n920dkxAoGAJkw6ADqsJfH3NR+bQfgF +oEA1KqriMxyEJm44Y7E80C+iF4iNALF+Er9TSnr4mDxX5e/dW9d1YeS9o0nOfkpF +MaBmJfxqo4QQJLPRaxYQ2Jhfn7irir4BroxeNXQgNNhgSuKIvkfRyGYwl7P0AT4v +8H8rkZGneMD3gLB5MfnRhGk= -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -MIIDazCCAlOgAwIBAgIUO9pfiBMsADdk9nBMHs10n8kaIr8wDQYJKoZIhvcNAQEL -BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM -GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMjA0MTIwOTQxNDVaFw0yNTAx -MDUwOTQxNDVaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw -HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQC3uaPiZMfjPBBEyDEYJsJIoriu0SaC80uTmPM7bFpn -OOXOBvbT4wD2q+uVaLQifKtPTgZAkP5Y3rX8S5TOzaLsNp68S1Ja/EzxQUolOSgb -4A948TTiUTrTjfMxsPRhmxXTjozWV8CFtL9PLg6H+55oyQOJedWYe1kSWRJQayXS -weBK5qjOPi2qDF/xdFRQuMivpBUar/b/E9GQRKpIaoqMYsl/WF/tReb4N658UxkV -lFdR8s48UoA9LfJLMPr4N+QDTfvtcT2bYlpT4a9b6IXa9BQKCw3AKfTqEPO1XunH -//iLNkt1bLtqgZNyT/tY0tLY3EKMXIDuRBVnKCbfVJ1RAgMBAAGjUzBRMB0GA1Ud -DgQWBBSx7Tx8W4c6wjW0qkeG7CAMLY7YkjAfBgNVHSMEGDAWgBSx7Tx8W4c6wjW0 -qkeG7CAMLY7YkjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAb -/Up/LEIdwhiN/S3HolxY2D2BrTpKHLQuggBN4+gZlK5OksCkM46LYlP/ruHXCxbR -mQoRhmooj4TvkKyBwzvKq76O+OuRtBhXzRipnBbNTqFPLf9enJUrut8lsFrI+pdl -Nn4PSGGbFPpQ5vFRCktczwwYh0zLuZ/1DbFsbRWlDnZdvoWZdfV0qsvcBRK2DXDI -29xSfw897OpITIkaryZigQVsKv8TXhfsaq9PUuH0/z84S82QG5fR6FzULofgkylb -wXvwaSdcu3k4Lo8j77BEAEvlH8Ynja0eojx5Avl9h4iw/IOQKE4GAg56CzcequLv -clPlaBBWoD6yn+q4NhLF +MIIEGzCCAwOgAwIBAgIUaoGlyuJAyvs6yowFXymfu7seEiUwDQYJKoZIhvcNAQEL +BQAwgZwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDbGlja0hvdXNlMRMwEQYDVQQH +DApDbGlja0hvdXNlMREwDwYDVQQKDAhQZXJzb25hbDETMBEGA1UECwwKQ2xpY2tI +b3VzZTEkMCIGCSqGSIb3DQEJARYVY2xpY2tob3VzZUBjbGlja2hvdXNlMRUwEwYD +VQQDDAxtb25nb19zZWN1cmUwHhcNMjQwNTI2MTYwMDMxWhcNMzQwNTI0MTYwMDMx +WjCBnDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNsaWNrSG91c2UxEzARBgNVBAcM +CkNsaWNrSG91c2UxETAPBgNVBAoMCFBlcnNvbmFsMRMwEQYDVQQLDApDbGlja0hv +dXNlMSQwIgYJKoZIhvcNAQkBFhVjbGlja2hvdXNlQGNsaWNraG91c2UxFTATBgNV +BAMMDG1vbmdvX3NlY3VyZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AJSeQfMG7xd0+kPehYlEsEw0Sm1DB05SXVCEzIX3DFD6XJrd8eeWwlzYaBatkcwj ++8yvqske02X/3YwpzJyFizAqJIoKql5c5Yii2xH1S9PFP0y+LoJre+eQziHyO33t +eeedeGNJ05Sm2ZAzjfMQ7Rdh6S+gdIO4Y102iQR5yr2aTrh7tu7XkNCjwKTqMMvz +SikP1Rft2J6ECim+MjYCCtH/4yXGeEJ5epU4t3y6Q23B2ZEhY+sqUdwgK9pu8oe4 +mkZ1Qvwakc9Qg12owRSDjBBYrPvghXVpkJ2JkgKTrIAIz9tZ53eDVHNXbWMAotov +jEmRSoGIS1yzwmQ9PdxUwYcCAwEAAaNTMFEwHQYDVR0OBBYEFJyz3Kt5XBDg5cvI +0v1ioqejqX+CMB8GA1UdIwQYMBaAFJyz3Kt5XBDg5cvI0v1ioqejqX+CMA8GA1Ud +EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHAQFA5VMYvaQFnKtKfHg9TF +qfJ4uM3YsGdgsgmGWgflD1S4Z290H6Q2QvyZAEceTrlJxqArlWlVp5DAU6EeXjEh +QMAgdkJHF1Hg2jsZKPtdkb88UtuzwAME357T8NtEJSHzNE5QqYwlVM71JkWpdqvA +UUdOJbWhhJfowIf4tMmL1DUuIy2qYpoP/tEBXEw9uwpmZqb7KELwT3lRyOMaGFN7 +RHVwbvJWlHiu83QDNaWz6ijQkWl3tCN6TWcFD1qc1x8GpMzjbsAAYbCx7fbHM2LD +9kGSCiyv5K0MLNK5u67RtUFfPHtyD8RA0TtxIZ4PEN/eFANKS2/5NEi1ZuZ5/Pk= -----END CERTIFICATE----- From 1b9c6c213f20fc4b3189ae6a56568aada50e4bde Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 23:01:10 +0100 Subject: [PATCH 18/25] CI: pin PHP 8.4 in the mysql-php-client image PHP 8.5 prints a deprecation warning for PDO::MYSQL_ATTR_DIRECT_QUERY, which breaks test_mysql_protocol::test_php_client. --- docker/test/integration/mysql_php_client/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/test/integration/mysql_php_client/Dockerfile b/docker/test/integration/mysql_php_client/Dockerfile index 0e11ae023e635..a3a0560da11c0 100644 --- a/docker/test/integration/mysql_php_client/Dockerfile +++ b/docker/test/integration/mysql_php_client/Dockerfile @@ -1,7 +1,7 @@ # docker build -t clickhouse/mysql-php-client . # MySQL PHP client docker container -FROM php:8-cli-alpine +FROM php:8.4-cli-alpine COPY ./client.crt client.crt COPY ./client.key client.key From acbce46b81a0d6a3edf63d43c14e6b651f413846 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 23:01:10 +0100 Subject: [PATCH 19/25] Add test_skip_unavailable_shards to analyzer broken tests --- tests/analyzer_integration_broken_tests.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/analyzer_integration_broken_tests.txt b/tests/analyzer_integration_broken_tests.txt index 20ea31efa70f5..080cd3f2677b5 100644 --- a/tests/analyzer_integration_broken_tests.txt +++ b/tests/analyzer_integration_broken_tests.txt @@ -95,3 +95,4 @@ test_odbc_interaction/test.py::test_postgres_insert test_zookeeper_config/test.py::test_chroot_with_different_root test_zookeeper_config/test.py::test_chroot_with_same_root test_merge_tree_azure_blob_storage/test.py::test_table_manipulations +test_parallel_replicas_skip_shards/test.py::test_skip_unavailable_shards From 438d09c5abf95a75a9839a7e9abf3a142089d46c Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 23:01:10 +0100 Subject: [PATCH 20/25] CI: pass clickhouse_path to regression suites get-deb-url.py from the clickhouse-regression release branch sets clickhouse_path, so --clickhouse-binary-path was empty. --- .github/workflows/regression.yml | 36 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml index 62b562278d9a1..f4eea3d44bd6e 100644 --- a/.github/workflows/regression.yml +++ b/.github/workflows/regression.yml @@ -172,8 +172,8 @@ jobs: - name: Run ${{ env.SUITE }} suite run: python3 -u ${{ env.SUITE }}/regression.py - --clickhouse-binary-path ${{ env.clickhouse_binary_path }} - --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_binary_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" + --clickhouse-binary-path ${{ env.clickhouse_path }} + --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" ${{ env.args }} - name: Create and upload logs if: always() @@ -216,9 +216,9 @@ jobs: - name: Run ${{ env.SUITE }} suite run: python3 -u alter/regression.py - --clickhouse-binary-path ${{ env.clickhouse_binary_path }} + --clickhouse-binary-path ${{ env.clickhouse_path }} --only "/alter/${{ matrix.ONLY }} partition/*" - --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_binary_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" + --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" ${{ env.args }} - name: Create and upload logs if: always() @@ -262,7 +262,7 @@ jobs: - name: Run ${{ env.SUITE }} suite run: python3 -u ${{ env.SUITE }}/benchmark.py - --clickhouse-binary-path ${{ env.clickhouse_binary_path }} + --clickhouse-binary-path ${{ env.clickhouse_path }} --storage ${{ matrix.STORAGE }} --gcs-uri ${{ secrets.REGRESSION_GCS_URI }} --gcs-key-id ${{ secrets.REGRESSION_GCS_KEY_ID }} @@ -271,7 +271,7 @@ jobs: --aws-s3-region ${{ secrets.REGRESSION_AWS_S3_REGION }} --aws-s3-key-id ${{ secrets.REGRESSION_AWS_S3_KEY_ID }} --aws-s3-access-key ${{ secrets.REGRESSION_AWS_S3_SECRET_ACCESS_KEY }} - --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_binary_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" + --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" ${{ env.args }} - name: Create and upload logs if: always() @@ -312,8 +312,8 @@ jobs: run: python3 -u ${{ env.SUITE }}/regression.py --ssl - --clickhouse-binary-path ${{ env.clickhouse_binary_path }} - --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_binary_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" + --clickhouse-binary-path ${{ env.clickhouse_path }} + --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" ${{ env.args }} - name: Create and upload logs if: always() @@ -356,8 +356,8 @@ jobs: - name: Run ${{ env.SUITE }} suite run: python3 -u ${{ env.SUITE }}/regression.py - --clickhouse-binary-path ${{ env.clickhouse_binary_path }} - --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_binary_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" + --clickhouse-binary-path ${{ env.clickhouse_path }} + --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" ${{ env.args }} - name: Create and upload logs if: always() @@ -396,8 +396,8 @@ jobs: - name: Run ${{ env.SUITE }} suite run: python3 -u ${{ env.SUITE }}/regression.py - --clickhouse-binary-path ${{ env.clickhouse_binary_path }} - --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_binary_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" + --clickhouse-binary-path ${{ env.clickhouse_path }} + --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" ${{ env.args }} - name: Create and upload logs if: always() @@ -441,14 +441,14 @@ jobs: - name: Run ${{ env.SUITE }} suite run: python3 -u ${{ env.SUITE }}/regression.py - --clickhouse-binary-path ${{ env.clickhouse_binary_path }} + --clickhouse-binary-path ${{ env.clickhouse_path }} --only "/parquet/${{ matrix.STORAGE }}/*" --storage ${{ matrix.STORAGE }} --aws-s3-bucket ${{ secrets.REGRESSION_AWS_S3_BUCKET }} --aws-s3-region ${{ secrets.REGRESSION_AWS_S3_REGION }} --aws-s3-key-id ${{ secrets.REGRESSION_AWS_S3_KEY_ID }} --aws-s3-access-key ${{ secrets.REGRESSION_AWS_S3_SECRET_ACCESS_KEY }} - --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_binary_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" + --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" ${{ env.args }} - name: Create and upload logs if: always() @@ -492,7 +492,7 @@ jobs: - name: Run ${{ env.SUITE }} suite run: python3 -u ${{ env.SUITE }}/regression.py - --clickhouse-binary-path ${{ env.clickhouse_binary_path }} + --clickhouse-binary-path ${{ env.clickhouse_path }} --storage ${{ matrix.STORAGE }} --gcs-uri ${{ secrets.REGRESSION_GCS_URI }} --gcs-key-id ${{ secrets.REGRESSION_GCS_KEY_ID }} @@ -501,7 +501,7 @@ jobs: --aws-s3-region ${{ secrets.REGRESSION_AWS_S3_REGION }} --aws-s3-key-id ${{ secrets.REGRESSION_AWS_S3_KEY_ID }} --aws-s3-access-key ${{ secrets.REGRESSION_AWS_S3_SECRET_ACCESS_KEY }} - --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_binary_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" + --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" ${{ env.args }} - name: Create and upload logs if: always() @@ -545,7 +545,7 @@ jobs: - name: Run ${{ env.SUITE }} suite run: python3 -u ${{ env.SUITE }}/regression.py - --clickhouse-binary-path ${{ env.clickhouse_binary_path }} + --clickhouse-binary-path ${{ env.clickhouse_path }} --aws-s3-access-key ${{ secrets.REGRESSION_AWS_S3_SECRET_ACCESS_KEY }} --aws-s3-key-id ${{ secrets.REGRESSION_AWS_S3_KEY_ID }} --aws-s3-uri https://s3.${{ secrets.REGRESSION_AWS_S3_REGION}}.amazonaws.com/${{ secrets.REGRESSION_AWS_S3_BUCKET }}/data/ @@ -553,7 +553,7 @@ jobs: --gcs-key-secret ${{ secrets.REGRESSION_GCS_KEY_SECRET }} --gcs-uri ${{ secrets.REGRESSION_GCS_URI }} --with-${{ matrix.STORAGE }} - --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_binary_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" + --attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.id="$GITHUB_RUN_ID" job.url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" arch="$(uname -i)" ${{ env.args }} - name: Create and upload logs if: always() From 296f2e9decdc685eaa04a59d1844c558412c77e3 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Tue, 27 Oct 2026 23:01:10 +0100 Subject: [PATCH 21/25] Remove CR from 01710_projection_fix_crash.reference --- tests/queries/0_stateless/01710_projection_fix_crash.reference | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/queries/0_stateless/01710_projection_fix_crash.reference b/tests/queries/0_stateless/01710_projection_fix_crash.reference index 18748286e5b8b..573541ac9702d 100644 --- a/tests/queries/0_stateless/01710_projection_fix_crash.reference +++ b/tests/queries/0_stateless/01710_projection_fix_crash.reference @@ -1 +1 @@ -0 +0 From 56a7d4041b6fb68b0b85a396a0a266e81fe0d65b Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:54:18 +0100 Subject: [PATCH 22/25] Use fixed timestamps in 01710_projection_fix_crash The two inserts used now()+1 and now(); when they landed in different seconds the values matched and count() returned 1 instead of 0. --- tests/queries/0_stateless/01710_projection_fix_crash.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/queries/0_stateless/01710_projection_fix_crash.sql b/tests/queries/0_stateless/01710_projection_fix_crash.sql index 703a773ebcab6..b65c8239fe239 100644 --- a/tests/queries/0_stateless/01710_projection_fix_crash.sql +++ b/tests/queries/0_stateless/01710_projection_fix_crash.sql @@ -4,8 +4,8 @@ create table xxxxx (col1 String, col2 String, _time DateTime, projection p (sele create table yyyyyyy (col1 String, col2 String, _time DateTime, projection p (select * order by col2)) engine=MergeTree partition by col1 order by tuple(); -insert into xxxxx (col1, col2, _time) values ('xxx', 'zzzz', now()+1); -insert into yyyyyyy (col1, col2, _time) values ('xxx', 'zzzz', now()); +insert into xxxxx (col1, col2, _time) values ('xxx', 'zzzz', '2100-01-01 00:00:01'); +insert into yyyyyyy (col1, col2, _time) values ('xxx', 'zzzz', '2100-01-01 00:00:00'); SELECT count() FROM xxxxx From 5d2cc57a0ff68c6960969de4240f0f5956b02f5e Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:54:18 +0100 Subject: [PATCH 23/25] CI: upload regression reports with the current AWS credentials The AWS_REPORT_* keys are no longer valid, so every regression job failed on the S3 upload after the suite passed. --- .github/workflows/regression.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml index f4eea3d44bd6e..f94a41cc1f0a0 100644 --- a/.github/workflows/regression.yml +++ b/.github/workflows/regression.yml @@ -88,9 +88,9 @@ name: Regression test workflow env: # Force the stdout and stderr streams to be unbuffered PYTHONUNBUFFERED: 1 - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_REPORT_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_REPORT_SECRET_ACCESS_KEY }} - AWS_DEFAULT_REGION: ${{ secrets.AWS_REPORT_REGION }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} CHECKS_DATABASE_HOST: ${{ secrets.CHECKS_DATABASE_HOST }} From cebd6cd6f2bdbe43d45557dbc15459b9819ef820 Mon Sep 17 00:00:00 2001 From: Andrey Zvonov <32552679+zvonand@users.noreply.github.com> Date: Wed, 28 Oct 2026 10:55:42 +0100 Subject: [PATCH 24/25] Adapt backported stateless tests to 23.8 These tests came with upstream backports but depend on changes that 23.8 does not have: - 02888: the mysql pool throws POCO_EXCEPTION, not ALL_CONNECTION_TRIES_FAILED - 02907: there is no 'backups' disk in the test config; use the default disk - 02920: projections with nullable keys need allow_nullable_key --- .../02888_system_tables_with_inaccsessible_table_function.sql | 2 +- .../0_stateless/02907_backup_mv_with_no_inner_table.sh | 4 ++-- .../queries/0_stateless/02920_alter_column_of_projections.sql | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/queries/0_stateless/02888_system_tables_with_inaccsessible_table_function.sql b/tests/queries/0_stateless/02888_system_tables_with_inaccsessible_table_function.sql index adcdeecb9e1e3..af093b91d20b0 100644 --- a/tests/queries/0_stateless/02888_system_tables_with_inaccsessible_table_function.sql +++ b/tests/queries/0_stateless/02888_system_tables_with_inaccsessible_table_function.sql @@ -14,7 +14,7 @@ CREATE TABLE {CLICKHOUSE_DATABASE:Identifier}.tablefunc06 (a int) AS s3('http:// CREATE TABLE {CLICKHOUSE_DATABASE:Identifier}.tablefunc01_without_schema AS postgresql('127.121.0.1:5432', 'postgres_db', 'postgres_table', 'postgres_user', '124444'); -- { serverError 614 } -CREATE TABLE {CLICKHOUSE_DATABASE:Identifier}.tablefunc02_without_schema AS mysql('127.123.0.1:3306', 'mysql_db', 'mysql_table', 'mysql_user','123123'); -- {serverError 279 } +CREATE TABLE {CLICKHOUSE_DATABASE:Identifier}.tablefunc02_without_schema AS mysql('127.123.0.1:3306', 'mysql_db', 'mysql_table', 'mysql_user','123123'); -- {serverError POCO_EXCEPTION } SELECT name, engine, engine_full, create_table_query, data_paths, notEmpty([metadata_path]), notEmpty([uuid]) FROM system.tables diff --git a/tests/queries/0_stateless/02907_backup_mv_with_no_inner_table.sh b/tests/queries/0_stateless/02907_backup_mv_with_no_inner_table.sh index 30ec50fa20f23..9ae3c6cf5f2d5 100755 --- a/tests/queries/0_stateless/02907_backup_mv_with_no_inner_table.sh +++ b/tests/queries/0_stateless/02907_backup_mv_with_no_inner_table.sh @@ -19,12 +19,12 @@ ${CLICKHOUSE_CLIENT} -nm --query "drop table \`$inner_table\` sync" ${CLICKHOUSE_CLIENT} -nm --query " set send_logs_level = 'error'; -backup table ${CLICKHOUSE_DATABASE}.\`mv\` to Disk('backups', '${CLICKHOUSE_TEST_UNIQUE_NAME}'); +backup table ${CLICKHOUSE_DATABASE}.\`mv\` to Disk('default', 'backups/${CLICKHOUSE_TEST_UNIQUE_NAME}'); " | grep -o "BACKUP_CREATED" ${CLICKHOUSE_CLIENT} -nm --query " drop table mv; -restore table ${CLICKHOUSE_DATABASE}.\`mv\` from Disk('backups', '${CLICKHOUSE_TEST_UNIQUE_NAME}'); +restore table ${CLICKHOUSE_DATABASE}.\`mv\` from Disk('default', 'backups/${CLICKHOUSE_TEST_UNIQUE_NAME}'); " | grep -o "RESTORED" ${CLICKHOUSE_CLIENT} --query "select count() from mv;" diff --git a/tests/queries/0_stateless/02920_alter_column_of_projections.sql b/tests/queries/0_stateless/02920_alter_column_of_projections.sql index ab7b79783d772..5ad6a0fef0356 100644 --- a/tests/queries/0_stateless/02920_alter_column_of_projections.sql +++ b/tests/queries/0_stateless/02920_alter_column_of_projections.sql @@ -1,6 +1,6 @@ DROP TABLE IF EXISTS t; -CREATE TABLE t (uid Int16, name String, age Nullable(Int8), i Int16, j Int16, projection p1 (select name, age, uniq(i), count(j) group by name, age)) ENGINE=MergeTree order by uid settings index_granularity = 1; +CREATE TABLE t (uid Int16, name String, age Nullable(Int8), i Int16, j Int16, projection p1 (select name, age, uniq(i), count(j) group by name, age)) ENGINE=MergeTree order by uid settings index_granularity = 1, allow_nullable_key = 1; INSERT INTO t VALUES (1231, 'John', 11, 1, 1), (6666, 'Ksenia', 1, 2, 2), (8888, 'Alice', 1, 3, 3), (6667, 'Ksenia', null, 4, 4); From 581c21f1f4e259b5824886b8fb8e5fa13a2524a2 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Thu, 7 Dec 2023 22:20:39 +0100 Subject: [PATCH 25/25] Remove bad test (3) (cherry picked from commit 2c86d7db711aa1b2156f44585867149fcd004ce1) --- ...02896_memory_accounting_for_user.reference | 0 .../02896_memory_accounting_for_user.sh | 46 ------------------- 2 files changed, 46 deletions(-) delete mode 100644 tests/queries/0_stateless/02896_memory_accounting_for_user.reference delete mode 100755 tests/queries/0_stateless/02896_memory_accounting_for_user.sh diff --git a/tests/queries/0_stateless/02896_memory_accounting_for_user.reference b/tests/queries/0_stateless/02896_memory_accounting_for_user.reference deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/tests/queries/0_stateless/02896_memory_accounting_for_user.sh b/tests/queries/0_stateless/02896_memory_accounting_for_user.sh deleted file mode 100755 index 72f4be1475dfb..0000000000000 --- a/tests/queries/0_stateless/02896_memory_accounting_for_user.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env bash -# Tags: no-parallel, long - -CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -# shellcheck source=../shell_config.sh -. "$CUR_DIR"/../shell_config.sh - - -total_iterations=16 -parallelism=32 - -$CLICKHOUSE_CLIENT --query='DROP TABLE IF EXISTS test_inserts' -$CLICKHOUSE_CLIENT --query='CREATE TABLE test_inserts ENGINE=Null AS system.numbers' - -run_query() { - ( $CLICKHOUSE_CLIENT --query='SELECT * FROM numbers_mt(1000000) FORMAT CSV' | $CLICKHOUSE_CLIENT --max_threads 8 --max_memory_usage_for_user 1073741824 -q 'INSERT INTO test_inserts FORMAT CSV' 2>/dev/null ) -} - -for ((i = 1; i <= total_iterations; i++)); do - for ((j = 1; j <= parallelism; j++)); do - run_query & pids+=($!) - done - - EXIT_CODE=0 - new_pids=() - for pid in "${pids[@]:0:parallelism}"; do - CODE=0 - wait "${pid}" || CODE=$? - run_query & new_pids+=($!) - if [[ "${CODE}" != "0" ]]; then - EXIT_CODE=1; - fi - done - for pid in "${pids[@]:parallelism}"; do - CODE=0 - wait "${pid}" || CODE=$? - if [[ "${CODE}" != "0" ]]; then - EXIT_CODE=1; - fi - done - pids=("${new_pids[@]}") - - if [[ $EXIT_CODE -ne 0 ]]; then - exit $EXIT_CODE - fi -done