From 01d47536522c5082127757b8d28fea529e6752be Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 11 Jun 2026 17:21:04 -0700 Subject: [PATCH 1/9] added unit test sharding --- .github/workflows/unittest.yml | 43 ++++++++++++++++++++++++++++------ ci/run_conditional_tests.sh | 34 ++++++++++++++++++++++++++- 2 files changed, 69 insertions(+), 8 deletions(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 83a8280132e9..0c7882624447 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -13,11 +13,40 @@ permissions: contents: read jobs: + discover: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.10" + - name: Get package shards + id: set-matrix + env: + BUILD_TYPE: presubmit + TARGET_BRANCH: ${{ github.base_ref || github.event.merge_group.base_ref }} + run: | + if [ -n "$TARGET_BRANCH" ]; then + git fetch origin "$TARGET_BRANCH" --deepen=200 + fi + echo "matrix=$(python ci/get_package_shards.py)" >> $GITHUB_OUTPUT + unit: + needs: discover + if: needs.discover.outputs.matrix != '[]' && needs.discover.outputs.matrix != '' runs-on: ubuntu-22.04 strategy: + fail-fast: false matrix: python: ['3.9', '3.10', "3.11", "3.12", "3.13", "3.14"] + package_shard: ${{ fromJson(needs.discover.outputs.matrix) }} + name: unit (${{ matrix.package_shard.name }}, ${{ matrix.python }}) steps: - name: Checkout uses: actions/checkout@v4 @@ -36,17 +65,18 @@ jobs: python -m pip install nox - name: Run unit tests env: - COVERAGE_FILE: .coverage-${{ matrix.python }} + COVERAGE_FILE: ${{ github.workspace }}/.coverage-${{ matrix.python }} BUILD_TYPE: presubmit TARGET_BRANCH: ${{ github.base_ref || github.event.merge_group.base_ref }} TEST_TYPE: unit PY_VERSION: ${{ matrix.python }} + PACKAGE_LIST: ${{ matrix.package_shard.packages }} run: | ci/run_conditional_tests.sh - name: Upload coverage results uses: actions/upload-artifact@v4 with: - name: coverage-artifact-${{ '{{' }} matrix.python {{ '}}' }} + name: coverage-artifact-${{ matrix.python }}-${{ matrix.package_shard.index }} path: .coverage-${{ matrix.python }} cover: @@ -67,20 +97,19 @@ jobs: python-version: "3.10" - name: Set number of files changes in packages directory id: packages - run: echo "::set-output name=num_files_changed::$(git diff HEAD~1 -- packages | wc -l)" + run: echo "num_files_changed=$(git diff HEAD~1 -- packages | wc -l)" >> $GITHUB_OUTPUT - name: Install coverage - if: steps.packages.num_files_changed > 0 + if: steps.packages.outputs.num_files_changed > 0 run: | python -m pip install --upgrade setuptools pip wheel python -m pip install coverage - name: Download coverage results - if: ${{ steps.date.packages.num_files_changed > 0 }} + if: steps.packages.outputs.num_files_changed > 0 uses: actions/download-artifact@v4 with: path: .coverage-results/ - name: Report coverage results - if: ${{ steps.date.packages.num_files_changed > 0 }} + if: steps.packages.outputs.num_files_changed > 0 run: | - find .coverage-results -type f -name '*.zip' -exec unzip {} \; coverage combine .coverage-results/**/.coverage* coverage report --show-missing --fail-under=100 diff --git a/ci/run_conditional_tests.sh b/ci/run_conditional_tests.sh index 9b8eaee52e5b..12b02c127ae9 100755 --- a/ci/run_conditional_tests.sh +++ b/ci/run_conditional_tests.sh @@ -82,10 +82,42 @@ subdirs=( packages ) +if [ -n "${PACKAGE_LIST}" ]; then + echo "Using provided PACKAGE_LIST" + to_test=(${PACKAGE_LIST}) + RETVAL=0 + for d in ${to_test[@]}; do + echo "running test in ${d}" + pushd ${d} + set +e + ${test_script} + ret=$? + set -e + if [ ${ret} -ne 0 ]; then + RETVAL=${ret} + fi + popd + done + exit ${RETVAL} +fi + +# Sharding logic (fallback for manual runs) +TOTAL_SHARDS="${TOTAL_SHARDS:-1}" +SHARD_INDEX="${SHARD_INDEX:-1}" +count=0 + RETVAL=0 for subdir in ${subdirs[@]}; do - for d in `ls -d ${subdir}/*/`; do + # Sort the directories to ensure consistent sharding across jobs + for d in `ls -d ${subdir}/*/ | sort`; do + # Sharding logic: only process directories that belong to this shard + if (( count % TOTAL_SHARDS != SHARD_INDEX - 1 )); then + ((count++)) + continue + fi + ((count++)) + should_test=false if [ -n "${GIT_DIFF_ARG}" ]; then echo "checking changes with 'git diff --quiet ${GIT_DIFF_ARG} ${d}'" From a7502d4e8a0969010a2eb6a641092a9e879326f9 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 11 Jun 2026 17:21:14 -0700 Subject: [PATCH 2/9] run system tests concurrently --- .kokoro/system.sh | 88 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 86 insertions(+), 2 deletions(-) diff --git a/.kokoro/system.sh b/.kokoro/system.sh index 469d0e81c7fa..52550987340b 100755 --- a/.kokoro/system.sh +++ b/.kokoro/system.sh @@ -39,6 +39,9 @@ run_package_test() { local package_name=$1 local package_path="packages/${package_name}" + # Isolate gcloud config for parallel execution + export CLOUDSDK_CONFIG=$(mktemp -d) + # Declare local overrides to prevent bleeding into the next loop iteration local PROJECT_ID local GOOGLE_APPLICATION_CREDENTIALS @@ -87,12 +90,52 @@ run_package_test() { set -e popd > /dev/null + # Clean up isolated gcloud config + rm -rf "${CLOUDSDK_CONFIG}" + return $res } # A file for running system tests system_test_script="${PROJECT_ROOT}/.kokoro/system-single.sh" +# Parallel execution settings +MAX_PARALLEL=4 +running_pids=() +declare -A pid_to_pkg +declare -A pid_to_log +declare -A pid_to_resfile + +# Array to keep track of results for the final summary +results=() + +handle_finished_job() { + local pid=$1 + local pkg=${pid_to_pkg[$pid]} + local log=${pid_to_log[$pid]} + local resfile=${pid_to_resfile[$pid]} + + # wait $pid might fail if it was already reaped by wait -n, + # so we ignore its exit code and use the resfile. + wait "$pid" 2>/dev/null || true + + local res=$(cat "$resfile") + rm "$resfile" + + echo "------------------------------------------------------------" + echo "System tests for ${pkg} finished (Exit code: ${res})" + echo "------------------------------------------------------------" + cat "$log" + rm "$log" + + if [ "${res}" -ne 0 ]; then + RETVAL=${res} + results+=("${pkg}: FAILED") + else + results+=("${pkg}: PASSED") + fi +} + # Run system tests for each package with directory packages/*/tests/system for path in `find 'packages' \ \( -type d -wholename 'packages/*/tests/system' \) -o \ @@ -140,10 +183,51 @@ for path in `find 'packages' \ set -e if [[ "${package_modified}" -gt 0 || "$KOKORO_BUILD_ARTIFACTS_SUBDIR" == *"continuous"* ]]; then - # Call the function - its internal exports won't affect the next loop - run_package_test "$package_name" || RETVAL=$? + # Wait if we have reached MAX_PARALLEL + while [[ ${#running_pids[@]} -ge $MAX_PARALLEL ]]; do + wait -n + # Find which job finished + new_pids=() + for pid in "${running_pids[@]}"; do + if kill -0 "$pid" 2>/dev/null; then + new_pids+=("$pid") + else + handle_finished_job "$pid" + fi + done + running_pids=("${new_pids[@]}") + done + + # Start the next test in the background + log_file=$(mktemp) + res_file=$(mktemp) + ( + run_package_test "$package_name" > "$log_file" 2>&1 + echo $? > "$res_file" + ) & + pid=$! + running_pids+=($pid) + pid_to_pkg[$pid]=$package_name + pid_to_log[$pid]=$log_file + pid_to_resfile[$pid]=$res_file + echo "Started system tests for ${package_name} (PID: ${pid})" else echo "No changes in ${package_name} and not a continuous build, skipping." fi done + +# Wait for all remaining jobs +for pid in "${running_pids[@]}"; do + handle_finished_job "$pid" +done + +echo "------------------------------------------------------------" +echo "System Test Summary" +echo "------------------------------------------------------------" +for res in "${results[@]}"; do + echo "$res" +done +echo "------------------------------------------------------------" + exit ${RETVAL} + From 9ad0f0c2abb24862dbbd6ea8e1212130acf12b5d Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 11 Jun 2026 17:24:57 -0700 Subject: [PATCH 3/9] added changes to many packages for testing --- packages/django-google-spanner/SHARD_TEST.txt | 1 + packages/google-cloud-appoptimize/SHARD_TEST.txt | 1 + packages/google-cloud-artifact-registry/SHARD_TEST.txt | 1 + packages/google-cloud-asset/SHARD_TEST.txt | 1 + packages/google-cloud-assured-workloads/SHARD_TEST.txt | 1 + packages/google-cloud-audit-log/SHARD_TEST.txt | 1 + packages/google-cloud-auditmanager/SHARD_TEST.txt | 1 + packages/google-cloud-automl/SHARD_TEST.txt | 1 + packages/google-cloud-backupdr/SHARD_TEST.txt | 1 + packages/google-cloud-bare-metal-solution/SHARD_TEST.txt | 1 + packages/google-cloud-batch/SHARD_TEST.txt | 1 + packages/google-cloud-beyondcorp-appconnections/SHARD_TEST.txt | 1 + packages/google-cloud-beyondcorp-appconnectors/SHARD_TEST.txt | 1 + packages/google-cloud-beyondcorp-appgateways/SHARD_TEST.txt | 1 + .../SHARD_TEST.txt | 1 + packages/google-cloud-beyondcorp-clientgateways/SHARD_TEST.txt | 1 + packages/google-cloud-biglake-hive/SHARD_TEST.txt | 1 + packages/google-cloud-biglake/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-analyticshub/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-biglake/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-connection/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-data-exchange/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-datapolicies/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-datatransfer/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-logging/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-migration/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-reservation/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery-storage/SHARD_TEST.txt | 1 + packages/google-cloud-bigquery/SHARD_TEST.txt | 1 + packages/google-cloud-bigtable/SHARD_TEST.txt | 1 + packages/google-cloud-container/SHARD_TEST.txt | 1 + packages/google-cloud-containeranalysis/SHARD_TEST.txt | 1 + packages/google-cloud-contentwarehouse/SHARD_TEST.txt | 1 + packages/google-cloud-core/SHARD_TEST.txt | 1 + packages/google-cloud-data-fusion/SHARD_TEST.txt | 1 + packages/google-cloud-data-qna/SHARD_TEST.txt | 1 + packages/google-cloud-databasecenter/SHARD_TEST.txt | 1 + .../SHARD_TEST.txt | 1 + packages/google-cloud-datacatalog-lineage/SHARD_TEST.txt | 1 + packages/google-cloud-datacatalog/SHARD_TEST.txt | 1 + packages/google-cloud-dataflow-client/SHARD_TEST.txt | 1 + packages/google-cloud-dataform/SHARD_TEST.txt | 1 + packages/google-cloud-datalabeling/SHARD_TEST.txt | 1 + packages/google-cloud-dataplex/SHARD_TEST.txt | 1 + packages/google-cloud-dataproc-metastore/SHARD_TEST.txt | 1 + packages/google-cloud-dataproc/SHARD_TEST.txt | 1 + packages/google-cloud-datastore/SHARD_TEST.txt | 1 + packages/google-cloud-datastream/SHARD_TEST.txt | 1 + packages/google-cloud-deploy/SHARD_TEST.txt | 1 + packages/google-cloud-developerconnect/SHARD_TEST.txt | 1 + packages/google-cloud-essential-contacts/SHARD_TEST.txt | 1 + packages/google-cloud-eventarc-publishing/SHARD_TEST.txt | 1 + packages/google-cloud-eventarc/SHARD_TEST.txt | 1 + packages/google-cloud-filestore/SHARD_TEST.txt | 1 + packages/google-cloud-financialservices/SHARD_TEST.txt | 1 + packages/google-cloud-firestore/SHARD_TEST.txt | 1 + packages/google-cloud-functions/SHARD_TEST.txt | 1 + packages/google-cloud-gdchardwaremanagement/SHARD_TEST.txt | 1 + packages/google-cloud-geminidataanalytics/SHARD_TEST.txt | 1 + packages/google-cloud-gke-backup/SHARD_TEST.txt | 1 + packages/google-cloud-gke-connect-gateway/SHARD_TEST.txt | 1 + packages/google-cloud-gke-hub/SHARD_TEST.txt | 1 + packages/google-cloud-gke-multicloud/SHARD_TEST.txt | 1 + packages/google-cloud-gkerecommender/SHARD_TEST.txt | 1 + packages/google-cloud-gsuiteaddons/SHARD_TEST.txt | 1 + packages/google-cloud-hypercomputecluster/SHARD_TEST.txt | 1 + packages/google-cloud-iam-logging/SHARD_TEST.txt | 1 + packages/google-cloud-iam/SHARD_TEST.txt | 1 + packages/google-cloud-iamconnectorcredentials/SHARD_TEST.txt | 1 + packages/google-cloud-iap/SHARD_TEST.txt | 1 + packages/google-cloud-ids/SHARD_TEST.txt | 1 + packages/google-cloud-kms-inventory/SHARD_TEST.txt | 1 + packages/google-cloud-kms/SHARD_TEST.txt | 1 + packages/google-cloud-pubsub/SHARD_TEST.txt | 1 + packages/google-cloud-quotas/SHARD_TEST.txt | 1 + packages/google-cloud-rapidmigrationassessment/SHARD_TEST.txt | 1 + packages/google-cloud-recaptcha-enterprise/SHARD_TEST.txt | 1 + packages/google-cloud-recommendations-ai/SHARD_TEST.txt | 1 + packages/google-cloud-recommender/SHARD_TEST.txt | 1 + packages/google-cloud-redis-cluster/SHARD_TEST.txt | 1 + packages/google-cloud-redis/SHARD_TEST.txt | 1 + packages/google-cloud-resource-manager/SHARD_TEST.txt | 1 + packages/google-cloud-retail/SHARD_TEST.txt | 1 + packages/google-cloud-run/SHARD_TEST.txt | 1 + packages/sqlalchemy-bigquery/SHARD_TEST.txt | 1 + packages/sqlalchemy-spanner/SHARD_TEST.txt | 1 + 86 files changed, 86 insertions(+) create mode 100644 packages/django-google-spanner/SHARD_TEST.txt create mode 100644 packages/google-cloud-appoptimize/SHARD_TEST.txt create mode 100644 packages/google-cloud-artifact-registry/SHARD_TEST.txt create mode 100644 packages/google-cloud-asset/SHARD_TEST.txt create mode 100644 packages/google-cloud-assured-workloads/SHARD_TEST.txt create mode 100644 packages/google-cloud-audit-log/SHARD_TEST.txt create mode 100644 packages/google-cloud-auditmanager/SHARD_TEST.txt create mode 100644 packages/google-cloud-automl/SHARD_TEST.txt create mode 100644 packages/google-cloud-backupdr/SHARD_TEST.txt create mode 100644 packages/google-cloud-bare-metal-solution/SHARD_TEST.txt create mode 100644 packages/google-cloud-batch/SHARD_TEST.txt create mode 100644 packages/google-cloud-beyondcorp-appconnections/SHARD_TEST.txt create mode 100644 packages/google-cloud-beyondcorp-appconnectors/SHARD_TEST.txt create mode 100644 packages/google-cloud-beyondcorp-appgateways/SHARD_TEST.txt create mode 100644 packages/google-cloud-beyondcorp-clientconnectorservices/SHARD_TEST.txt create mode 100644 packages/google-cloud-beyondcorp-clientgateways/SHARD_TEST.txt create mode 100644 packages/google-cloud-biglake-hive/SHARD_TEST.txt create mode 100644 packages/google-cloud-biglake/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-analyticshub/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-biglake/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-connection/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-data-exchange/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-datapolicies/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-datatransfer/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-logging/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-migration/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-reservation/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery-storage/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigquery/SHARD_TEST.txt create mode 100644 packages/google-cloud-bigtable/SHARD_TEST.txt create mode 100644 packages/google-cloud-container/SHARD_TEST.txt create mode 100644 packages/google-cloud-containeranalysis/SHARD_TEST.txt create mode 100644 packages/google-cloud-contentwarehouse/SHARD_TEST.txt create mode 100644 packages/google-cloud-core/SHARD_TEST.txt create mode 100644 packages/google-cloud-data-fusion/SHARD_TEST.txt create mode 100644 packages/google-cloud-data-qna/SHARD_TEST.txt create mode 100644 packages/google-cloud-databasecenter/SHARD_TEST.txt create mode 100644 packages/google-cloud-datacatalog-lineage-configmanagement/SHARD_TEST.txt create mode 100644 packages/google-cloud-datacatalog-lineage/SHARD_TEST.txt create mode 100644 packages/google-cloud-datacatalog/SHARD_TEST.txt create mode 100644 packages/google-cloud-dataflow-client/SHARD_TEST.txt create mode 100644 packages/google-cloud-dataform/SHARD_TEST.txt create mode 100644 packages/google-cloud-datalabeling/SHARD_TEST.txt create mode 100644 packages/google-cloud-dataplex/SHARD_TEST.txt create mode 100644 packages/google-cloud-dataproc-metastore/SHARD_TEST.txt create mode 100644 packages/google-cloud-dataproc/SHARD_TEST.txt create mode 100644 packages/google-cloud-datastore/SHARD_TEST.txt create mode 100644 packages/google-cloud-datastream/SHARD_TEST.txt create mode 100644 packages/google-cloud-deploy/SHARD_TEST.txt create mode 100644 packages/google-cloud-developerconnect/SHARD_TEST.txt create mode 100644 packages/google-cloud-essential-contacts/SHARD_TEST.txt create mode 100644 packages/google-cloud-eventarc-publishing/SHARD_TEST.txt create mode 100644 packages/google-cloud-eventarc/SHARD_TEST.txt create mode 100644 packages/google-cloud-filestore/SHARD_TEST.txt create mode 100644 packages/google-cloud-financialservices/SHARD_TEST.txt create mode 100644 packages/google-cloud-firestore/SHARD_TEST.txt create mode 100644 packages/google-cloud-functions/SHARD_TEST.txt create mode 100644 packages/google-cloud-gdchardwaremanagement/SHARD_TEST.txt create mode 100644 packages/google-cloud-geminidataanalytics/SHARD_TEST.txt create mode 100644 packages/google-cloud-gke-backup/SHARD_TEST.txt create mode 100644 packages/google-cloud-gke-connect-gateway/SHARD_TEST.txt create mode 100644 packages/google-cloud-gke-hub/SHARD_TEST.txt create mode 100644 packages/google-cloud-gke-multicloud/SHARD_TEST.txt create mode 100644 packages/google-cloud-gkerecommender/SHARD_TEST.txt create mode 100644 packages/google-cloud-gsuiteaddons/SHARD_TEST.txt create mode 100644 packages/google-cloud-hypercomputecluster/SHARD_TEST.txt create mode 100644 packages/google-cloud-iam-logging/SHARD_TEST.txt create mode 100644 packages/google-cloud-iam/SHARD_TEST.txt create mode 100644 packages/google-cloud-iamconnectorcredentials/SHARD_TEST.txt create mode 100644 packages/google-cloud-iap/SHARD_TEST.txt create mode 100644 packages/google-cloud-ids/SHARD_TEST.txt create mode 100644 packages/google-cloud-kms-inventory/SHARD_TEST.txt create mode 100644 packages/google-cloud-kms/SHARD_TEST.txt create mode 100644 packages/google-cloud-pubsub/SHARD_TEST.txt create mode 100644 packages/google-cloud-quotas/SHARD_TEST.txt create mode 100644 packages/google-cloud-rapidmigrationassessment/SHARD_TEST.txt create mode 100644 packages/google-cloud-recaptcha-enterprise/SHARD_TEST.txt create mode 100644 packages/google-cloud-recommendations-ai/SHARD_TEST.txt create mode 100644 packages/google-cloud-recommender/SHARD_TEST.txt create mode 100644 packages/google-cloud-redis-cluster/SHARD_TEST.txt create mode 100644 packages/google-cloud-redis/SHARD_TEST.txt create mode 100644 packages/google-cloud-resource-manager/SHARD_TEST.txt create mode 100644 packages/google-cloud-retail/SHARD_TEST.txt create mode 100644 packages/google-cloud-run/SHARD_TEST.txt create mode 100644 packages/sqlalchemy-bigquery/SHARD_TEST.txt create mode 100644 packages/sqlalchemy-spanner/SHARD_TEST.txt diff --git a/packages/django-google-spanner/SHARD_TEST.txt b/packages/django-google-spanner/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/django-google-spanner/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-appoptimize/SHARD_TEST.txt b/packages/google-cloud-appoptimize/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-appoptimize/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-artifact-registry/SHARD_TEST.txt b/packages/google-cloud-artifact-registry/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-artifact-registry/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-asset/SHARD_TEST.txt b/packages/google-cloud-asset/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-asset/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-assured-workloads/SHARD_TEST.txt b/packages/google-cloud-assured-workloads/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-assured-workloads/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-audit-log/SHARD_TEST.txt b/packages/google-cloud-audit-log/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-audit-log/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-auditmanager/SHARD_TEST.txt b/packages/google-cloud-auditmanager/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-auditmanager/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-automl/SHARD_TEST.txt b/packages/google-cloud-automl/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-automl/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-backupdr/SHARD_TEST.txt b/packages/google-cloud-backupdr/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-backupdr/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bare-metal-solution/SHARD_TEST.txt b/packages/google-cloud-bare-metal-solution/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bare-metal-solution/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-batch/SHARD_TEST.txt b/packages/google-cloud-batch/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-batch/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-beyondcorp-appconnections/SHARD_TEST.txt b/packages/google-cloud-beyondcorp-appconnections/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-beyondcorp-appconnections/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-beyondcorp-appconnectors/SHARD_TEST.txt b/packages/google-cloud-beyondcorp-appconnectors/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-beyondcorp-appconnectors/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-beyondcorp-appgateways/SHARD_TEST.txt b/packages/google-cloud-beyondcorp-appgateways/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-beyondcorp-appgateways/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-beyondcorp-clientconnectorservices/SHARD_TEST.txt b/packages/google-cloud-beyondcorp-clientconnectorservices/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-beyondcorp-clientconnectorservices/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-beyondcorp-clientgateways/SHARD_TEST.txt b/packages/google-cloud-beyondcorp-clientgateways/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-beyondcorp-clientgateways/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-biglake-hive/SHARD_TEST.txt b/packages/google-cloud-biglake-hive/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-biglake-hive/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-biglake/SHARD_TEST.txt b/packages/google-cloud-biglake/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-biglake/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-analyticshub/SHARD_TEST.txt b/packages/google-cloud-bigquery-analyticshub/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-analyticshub/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-biglake/SHARD_TEST.txt b/packages/google-cloud-bigquery-biglake/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-biglake/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-connection/SHARD_TEST.txt b/packages/google-cloud-bigquery-connection/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-connection/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-data-exchange/SHARD_TEST.txt b/packages/google-cloud-bigquery-data-exchange/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-data-exchange/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-datapolicies/SHARD_TEST.txt b/packages/google-cloud-bigquery-datapolicies/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-datapolicies/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-datatransfer/SHARD_TEST.txt b/packages/google-cloud-bigquery-datatransfer/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-datatransfer/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-logging/SHARD_TEST.txt b/packages/google-cloud-bigquery-logging/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-logging/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-migration/SHARD_TEST.txt b/packages/google-cloud-bigquery-migration/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-migration/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-reservation/SHARD_TEST.txt b/packages/google-cloud-bigquery-reservation/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-reservation/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery-storage/SHARD_TEST.txt b/packages/google-cloud-bigquery-storage/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery-storage/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigquery/SHARD_TEST.txt b/packages/google-cloud-bigquery/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigquery/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-bigtable/SHARD_TEST.txt b/packages/google-cloud-bigtable/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-bigtable/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-container/SHARD_TEST.txt b/packages/google-cloud-container/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-container/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-containeranalysis/SHARD_TEST.txt b/packages/google-cloud-containeranalysis/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-containeranalysis/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-contentwarehouse/SHARD_TEST.txt b/packages/google-cloud-contentwarehouse/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-contentwarehouse/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-core/SHARD_TEST.txt b/packages/google-cloud-core/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-core/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-data-fusion/SHARD_TEST.txt b/packages/google-cloud-data-fusion/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-data-fusion/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-data-qna/SHARD_TEST.txt b/packages/google-cloud-data-qna/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-data-qna/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-databasecenter/SHARD_TEST.txt b/packages/google-cloud-databasecenter/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-databasecenter/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-datacatalog-lineage-configmanagement/SHARD_TEST.txt b/packages/google-cloud-datacatalog-lineage-configmanagement/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-datacatalog-lineage-configmanagement/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-datacatalog-lineage/SHARD_TEST.txt b/packages/google-cloud-datacatalog-lineage/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-datacatalog-lineage/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-datacatalog/SHARD_TEST.txt b/packages/google-cloud-datacatalog/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-datacatalog/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-dataflow-client/SHARD_TEST.txt b/packages/google-cloud-dataflow-client/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-dataflow-client/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-dataform/SHARD_TEST.txt b/packages/google-cloud-dataform/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-dataform/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-datalabeling/SHARD_TEST.txt b/packages/google-cloud-datalabeling/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-datalabeling/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-dataplex/SHARD_TEST.txt b/packages/google-cloud-dataplex/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-dataplex/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-dataproc-metastore/SHARD_TEST.txt b/packages/google-cloud-dataproc-metastore/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-dataproc-metastore/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-dataproc/SHARD_TEST.txt b/packages/google-cloud-dataproc/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-dataproc/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-datastore/SHARD_TEST.txt b/packages/google-cloud-datastore/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-datastore/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-datastream/SHARD_TEST.txt b/packages/google-cloud-datastream/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-datastream/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-deploy/SHARD_TEST.txt b/packages/google-cloud-deploy/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-deploy/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-developerconnect/SHARD_TEST.txt b/packages/google-cloud-developerconnect/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-developerconnect/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-essential-contacts/SHARD_TEST.txt b/packages/google-cloud-essential-contacts/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-essential-contacts/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-eventarc-publishing/SHARD_TEST.txt b/packages/google-cloud-eventarc-publishing/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-eventarc-publishing/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-eventarc/SHARD_TEST.txt b/packages/google-cloud-eventarc/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-eventarc/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-filestore/SHARD_TEST.txt b/packages/google-cloud-filestore/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-filestore/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-financialservices/SHARD_TEST.txt b/packages/google-cloud-financialservices/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-financialservices/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-firestore/SHARD_TEST.txt b/packages/google-cloud-firestore/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-firestore/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-functions/SHARD_TEST.txt b/packages/google-cloud-functions/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-functions/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-gdchardwaremanagement/SHARD_TEST.txt b/packages/google-cloud-gdchardwaremanagement/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-gdchardwaremanagement/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-geminidataanalytics/SHARD_TEST.txt b/packages/google-cloud-geminidataanalytics/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-geminidataanalytics/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-gke-backup/SHARD_TEST.txt b/packages/google-cloud-gke-backup/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-gke-backup/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-gke-connect-gateway/SHARD_TEST.txt b/packages/google-cloud-gke-connect-gateway/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-gke-connect-gateway/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-gke-hub/SHARD_TEST.txt b/packages/google-cloud-gke-hub/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-gke-hub/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-gke-multicloud/SHARD_TEST.txt b/packages/google-cloud-gke-multicloud/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-gke-multicloud/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-gkerecommender/SHARD_TEST.txt b/packages/google-cloud-gkerecommender/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-gkerecommender/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-gsuiteaddons/SHARD_TEST.txt b/packages/google-cloud-gsuiteaddons/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-gsuiteaddons/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-hypercomputecluster/SHARD_TEST.txt b/packages/google-cloud-hypercomputecluster/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-hypercomputecluster/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-iam-logging/SHARD_TEST.txt b/packages/google-cloud-iam-logging/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-iam-logging/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-iam/SHARD_TEST.txt b/packages/google-cloud-iam/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-iam/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-iamconnectorcredentials/SHARD_TEST.txt b/packages/google-cloud-iamconnectorcredentials/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-iamconnectorcredentials/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-iap/SHARD_TEST.txt b/packages/google-cloud-iap/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-iap/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-ids/SHARD_TEST.txt b/packages/google-cloud-ids/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-ids/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-kms-inventory/SHARD_TEST.txt b/packages/google-cloud-kms-inventory/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-kms-inventory/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-kms/SHARD_TEST.txt b/packages/google-cloud-kms/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-kms/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-pubsub/SHARD_TEST.txt b/packages/google-cloud-pubsub/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-pubsub/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-quotas/SHARD_TEST.txt b/packages/google-cloud-quotas/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-quotas/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-rapidmigrationassessment/SHARD_TEST.txt b/packages/google-cloud-rapidmigrationassessment/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-rapidmigrationassessment/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-recaptcha-enterprise/SHARD_TEST.txt b/packages/google-cloud-recaptcha-enterprise/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-recaptcha-enterprise/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-recommendations-ai/SHARD_TEST.txt b/packages/google-cloud-recommendations-ai/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-recommendations-ai/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-recommender/SHARD_TEST.txt b/packages/google-cloud-recommender/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-recommender/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-redis-cluster/SHARD_TEST.txt b/packages/google-cloud-redis-cluster/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-redis-cluster/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-redis/SHARD_TEST.txt b/packages/google-cloud-redis/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-redis/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-resource-manager/SHARD_TEST.txt b/packages/google-cloud-resource-manager/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-resource-manager/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-retail/SHARD_TEST.txt b/packages/google-cloud-retail/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-retail/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/google-cloud-run/SHARD_TEST.txt b/packages/google-cloud-run/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/google-cloud-run/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/sqlalchemy-bigquery/SHARD_TEST.txt b/packages/sqlalchemy-bigquery/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/sqlalchemy-bigquery/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding diff --git a/packages/sqlalchemy-spanner/SHARD_TEST.txt b/packages/sqlalchemy-spanner/SHARD_TEST.txt new file mode 100644 index 000000000000..b7ac1b35614f --- /dev/null +++ b/packages/sqlalchemy-spanner/SHARD_TEST.txt @@ -0,0 +1 @@ +Test change for sharding From 02c765377413efc0cc9b807f411f157ff03439e7 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 11 Jun 2026 17:25:15 -0700 Subject: [PATCH 4/9] added sharding test file --- ci/get_package_shards.py | 94 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 ci/get_package_shards.py diff --git a/ci/get_package_shards.py b/ci/get_package_shards.py new file mode 100644 index 000000000000..25bec5703efb --- /dev/null +++ b/ci/get_package_shards.py @@ -0,0 +1,94 @@ +import os +import subprocess +import json +import math +import sys + +def get_packages(): + subdirs = ['packages'] + packages = [] + for subdir in subdirs: + if not os.path.exists(subdir): + continue + # Use the same sorting as the shell script + pkg_dirs = [os.path.join(subdir, d) + '/' for d in os.listdir(subdir) if os.path.isdir(os.path.join(subdir, d))] + packages.extend(sorted(pkg_dirs)) + return packages + +def get_packages_to_test(): + build_type = os.environ.get('BUILD_TYPE', 'presubmit') + target_branch = os.environ.get('TARGET_BRANCH', 'main') + + all_packages = get_packages() + + if build_type == 'presubmit': + git_diff_arg = f"origin/{target_branch}..." + elif build_type == 'continuous': + git_diff_arg = "HEAD~.." + else: + return all_packages + + # Check if ci/ changed + try: + subprocess.check_call(['git', 'diff', '--quiet', git_diff_arg, 'ci']) + ci_changed = False + except subprocess.CalledProcessError: + ci_changed = True + + if ci_changed: + return all_packages + + try: + res = subprocess.check_output(['git', 'diff', '--name-only', git_diff_arg]).decode('utf-8') + changed_files = res.splitlines() + except subprocess.CalledProcessError: + return all_packages + + to_test = [] + for pkg in all_packages: + # Check if any changed file starts with the package path + if any(f.startswith(pkg) for f in changed_files): + to_test.append(pkg) + + return to_test + +def group_packages(packages, max_packages_per_shard=25, max_total_shards=20): + if not packages: + return [] + + num_packages = len(packages) + + # Calculate number of shards based on packages per shard + num_shards = math.ceil(num_packages / max_packages_per_shard) + + # Cap the total number of shards + num_shards = min(num_shards, max_total_shards) + + # Recalculate shard size to be as even as possible given the capped shards + shard_size = math.ceil(num_packages / num_shards) + + shards = [] + for i in range(num_shards): + start = i * shard_size + end = min((i + 1) * shard_size, num_packages) + if start >= num_packages: + break + + shard_packages = packages[start:end] + if len(shard_packages) == 1: + name = shard_packages[0].strip('/').split('/')[-1] + else: + name = f"{shard_packages[0].strip('/').split('/')[-1]}...{shard_packages[-1].strip('/').split('/')[-1]}" + + shards.append({ + "name": name, + "index": i + 1, + "packages": " ".join(shard_packages) + }) + return shards + +if __name__ == "__main__": + packages = get_packages_to_test() + # Shard into groups of ~25 libraries, up to 20 parallel jobs + shards = group_packages(packages, max_packages_per_shard=25, max_total_shards=20) + print(json.dumps(shards)) From 3c8d0577061dfab9008afffd39f8f58a6f1556b1 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 11 Jun 2026 17:29:10 -0700 Subject: [PATCH 5/9] added unit-complete to gather all shards --- .github/workflows/unittest.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 0c7882624447..49ede47ce769 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -79,11 +79,24 @@ jobs: name: coverage-artifact-${{ matrix.python }}-${{ matrix.package_shard.index }} path: .coverage-${{ matrix.python }} + unit-complete: + needs: [discover, unit] + if: always() + runs-on: ubuntu-latest + steps: + - name: Check unit test results + run: | + if [[ "${{ needs.unit.result }}" != "success" && "${{ needs.unit.result }}" != "skipped" ]]; then + echo "Unit tests failed" + exit 1 + fi + echo "All unit tests passed or were skipped" + cover: runs-on: ubuntu-latest needs: - unit - steps: + ... - name: Checkout uses: actions/checkout@v4 # Use a fetch-depth of 2 to avoid error `fatal: origin/main...HEAD: no merge base` From 73ab0915ed3d3f22e90ef398e59e1a27b5508698 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 11 Jun 2026 17:31:58 -0700 Subject: [PATCH 6/9] changed shard params --- ci/get_package_shards.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/ci/get_package_shards.py b/ci/get_package_shards.py index 25bec5703efb..880bc689d29b 100644 --- a/ci/get_package_shards.py +++ b/ci/get_package_shards.py @@ -52,7 +52,7 @@ def get_packages_to_test(): return to_test -def group_packages(packages, max_packages_per_shard=25, max_total_shards=20): +def group_packages(packages, max_packages_per_shard=50, max_total_shards=10): if not packages: return [] @@ -75,20 +75,18 @@ def group_packages(packages, max_packages_per_shard=25, max_total_shards=20): break shard_packages = packages[start:end] - if len(shard_packages) == 1: - name = shard_packages[0].strip('/').split('/')[-1] - else: - name = f"{shard_packages[0].strip('/').split('/')[-1]}...{shard_packages[-1].strip('/').split('/')[-1]}" + index = i + 1 + name = f"Shard {index}" shards.append({ "name": name, - "index": i + 1, + "index": index, "packages": " ".join(shard_packages) }) return shards if __name__ == "__main__": packages = get_packages_to_test() - # Shard into groups of ~25 libraries, up to 20 parallel jobs - shards = group_packages(packages, max_packages_per_shard=25, max_total_shards=20) + # Shard into groups of ~50 libraries, up to 10 parallel jobs + shards = group_packages(packages, max_packages_per_shard=50, max_total_shards=10) print(json.dumps(shards)) From 74f1ef7d22f12d93ee2712b91e374f0af9406db7 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 11 Jun 2026 17:36:13 -0700 Subject: [PATCH 7/9] fixed tests --- .github/workflows/unittest.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 49ede47ce769..a30ea6c684f3 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -33,9 +33,9 @@ jobs: TARGET_BRANCH: ${{ github.base_ref || github.event.merge_group.base_ref }} run: | if [ -n "$TARGET_BRANCH" ]; then - git fetch origin "$TARGET_BRANCH" --deepen=200 + git fetch origin "$TARGET_BRANCH" --deepen=200 || true fi - echo "matrix=$(python ci/get_package_shards.py)" >> $GITHUB_OUTPUT + echo "matrix=$(python3 ci/get_package_shards.py)" >> $GITHUB_OUTPUT unit: needs: discover @@ -96,7 +96,7 @@ jobs: runs-on: ubuntu-latest needs: - unit - ... + steps: - name: Checkout uses: actions/checkout@v4 # Use a fetch-depth of 2 to avoid error `fatal: origin/main...HEAD: no merge base` From a450254f883140d649ec98cad9fb61ce453c6ef5 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 11 Jun 2026 19:01:06 -0700 Subject: [PATCH 8/9] fix coverage --- .github/workflows/unittest.yml | 3 +-- ci/run_conditional_tests.sh | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index a30ea6c684f3..1de144540dd6 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -65,7 +65,6 @@ jobs: python -m pip install nox - name: Run unit tests env: - COVERAGE_FILE: ${{ github.workspace }}/.coverage-${{ matrix.python }} BUILD_TYPE: presubmit TARGET_BRANCH: ${{ github.base_ref || github.event.merge_group.base_ref }} TEST_TYPE: unit @@ -77,7 +76,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: coverage-artifact-${{ matrix.python }}-${{ matrix.package_shard.index }} - path: .coverage-${{ matrix.python }} + path: .coverage.${{ matrix.python }}.* unit-complete: needs: [discover, unit] diff --git a/ci/run_conditional_tests.sh b/ci/run_conditional_tests.sh index 12b02c127ae9..e047b49cf365 100755 --- a/ci/run_conditional_tests.sh +++ b/ci/run_conditional_tests.sh @@ -140,6 +140,13 @@ for subdir in ${subdirs[@]}; do pushd ${d} # Temporarily allow failure. set +e + + # Ensure unique coverage file per package to avoid DataError + # when combining statement and branch coverage. + # Strip trailing slash from directory name for the filename. + pkg_name_clean=$(echo ${d} | sed 's|/$||' | sed 's|/|_|g') + export COVERAGE_FILE="${PROJECT_ROOT}/.coverage.${PY_VERSION}.${pkg_name_clean}" + ${test_script} ret=$? set -e From af4d10c45b1de758d51eb56e3089ec7e22676965 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 11 Jun 2026 21:33:04 -0700 Subject: [PATCH 9/9] fix system tests --- .kokoro/system.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.kokoro/system.sh b/.kokoro/system.sh index 52550987340b..6aedd9885e70 100755 --- a/.kokoro/system.sh +++ b/.kokoro/system.sh @@ -119,14 +119,21 @@ handle_finished_job() { # so we ignore its exit code and use the resfile. wait "$pid" 2>/dev/null || true - local res=$(cat "$resfile") - rm "$resfile" + local res=1 + if [ -f "$resfile" ]; then + res=$(cat "$resfile") + rm "$resfile" + fi echo "------------------------------------------------------------" echo "System tests for ${pkg} finished (Exit code: ${res})" echo "------------------------------------------------------------" - cat "$log" - rm "$log" + if [ -f "$log" ]; then + cat "$log" + rm "$log" + else + echo "Log file missing for ${pkg}" + fi if [ "${res}" -ne 0 ]; then RETVAL=${res} @@ -185,7 +192,9 @@ for path in `find 'packages' \ if [[ "${package_modified}" -gt 0 || "$KOKORO_BUILD_ARTIFACTS_SUBDIR" == *"continuous"* ]]; then # Wait if we have reached MAX_PARALLEL while [[ ${#running_pids[@]} -ge $MAX_PARALLEL ]]; do + set +e wait -n + set -e # Find which job finished new_pids=() for pid in "${running_pids[@]}"; do