Skip to content

Conversation

@sergiitk
Copy link
Member

@sergiitk sergiitk commented Apr 26, 2024

Integrates the new features of the the Kokoro PSM Interop install library introduced in grpc/psm-interop#73.

Nearly all common functionality was moved from per-language/per-branch PSM Interop build scripts to psm_interop_kokoro_lib.sh:

  1. The list of tests in the each test suite
  2. Per-test-suite flag customization
  3. run_test methods
  4. build_docker_images_if_needed methods
  5. Generic build_test_app_docker_images methods (simple docker build + docker push + docker tag). grpc-java is one exception, as it doesn't run docker directly, but a cloudbuild flow.

Now all PSM Interop jobs share the same buildscripts by all test suites:

  1. buildscript that invokes the test: psm-interop-test-{language}.sh (configured as build_file in the build cfg)
  2. buildscript that builds the xDS test client/server and publishes them as a Docker image: psm-interop-build-{language}.sh (conventional name called from psm_interop_kokoro_lib.sh)

psm-interop-test-{language}.sh:

  1. Sets GRPC_LANGUAGE, BUILD_SCRIPT_DIR environment variables.
  2. Downloads the shared psm_interop_kokoro_lib.sh from the main branch of the psm-interop repo.
  3. Sources psm-interop-build-{language}.sh
  4. Calls psm::run "${PSM_TEST_SUITE}" (PSM_TEST_SUITE configured in the cfg file).

psm-interop-build-{language}.sh:

  1. Defines psm::lang::build_docker_images which is called from psm_interop_kokoro_lib.sh.
  2. Invokes any repo-specific logic.
  3. May use psm::build::docker_images_generic for generic Docker build, tag, push, or provide implement its own build/publish method.

References:

@sergiitk
Copy link
Member Author

sergiitk commented Apr 26, 2024

@sergiitk
Copy link
Member Author

sergiitk commented Apr 26, 2024

@sergiitk
Copy link
Member Author

sergiitk commented Apr 27, 2024

@sergiitk
Copy link
Member Author

sergiitk commented Apr 27, 2024

sergiitk added a commit to grpc/psm-interop that referenced this pull request May 1, 2024
#73) Major rework of the shared Kokoro PSM Interop install library. Nearly all common functionality was moved from per-language/per-branch PSM Interop build scripts to psm_interop_kokoro_lib.sh: 1. The list of tests in the each test suite 2. Per-test-suite flag customization 3. `run_test` methods 4. `build_docker_images_if_needed` methods 5. Generic `build_test_app_docker_images` methods (simple docker build + docker push + docker tag). grpc-java is one exception, as it doesn't run docker directly, but a cloudbuild flow. Added new options to control PSM interop test driver execution via environment variables: ```sh # Overrides the list of test to run. A whitespace-separated string. Example: # PSM_TESTS="app_net_test baseline_test" readonly PSM_TESTS="${PSM_TESTS:-}" # A space-separated string with extra flags to append to the test driver arguments. # Can be used to execute a run and test a new flag value, f.e.: # PSM_EXTRA_FLAGS="--noenable_workload_identity --td_bootstrap_image=us-docker.pkg.dev/new-image..." # In addition, can be used to run a single test in a suite. # F.e. to run only test_mtls in security_test: # PSM_TESTS="security_test" PSM_EXTRA_FLAGS="SecurityTest.test_mtls" readonly PSM_EXTRA_FLAGS="${PSM_EXTRA_FLAGS:-}" ``` Improved logging: 1. Buildscript test logs are now prepended with the date: - when a shell command passed to `psm::tools::run_verbose` - `psm::tools::log` is used in place of `echo` 2. Individual install and build steps partially or fully redirected to the dedicated log files: - `install-apt.log` - `install-pip.log` - `build-docker.log` 3. Various other log improvements: printing tests in the suite, printing flags passed to the frameworks, etc Corresponding per-language buildscript PRs: 1. java - grpc/grpc-java#11121 2. cpp - grpc/grpc#36450 3. go - grpc/grpc-go#7171 4. node - grpc/grpc-node#2729 Notes for the reviewer: 1. The new script is backward-compatible with the old-style buildscripts. 2. Per-language buildscript PRs will be backported to all supported branches, and this should be the very last backport chore we'll ever need. 3. A minor change to the subsetting test was needed to solve [a one-off exception](https://github.com/grpc/grpc/blob/6e981d7460af561230d455c3623774e76e18cbfe/tools/internal_ci/linux/grpc_xds_k8s_lb.sh#L123-L127) from the normal `run_test` flow. ref b/288578634
@sergiitk
Copy link
Member Author

sergiitk commented May 2, 2024

The last check using the install script from main:

@sergiitk sergiitk changed the title PSM Interop: move test suite lists to psm_interop_kokoro_lib.sh PSM Interop: simplify Kokoro buildscripts May 2, 2024
@sergiitk
Copy link
Member Author

sergiitk commented May 2, 2024

Please merge it yet. I'd like to wait until I got approvals on the same change from the rest of the repos. So we don't have to do another set of backports if anything comes up.

@sergiitk
Copy link
Member Author

sergiitk commented May 3, 2024

@sergiitk
Copy link
Member Author

sergiitk commented May 3, 2024

@sergiitk sergiitk force-pushed the psm-interop-common-prod-tests branch from 6d6e535 to 1495b02 Compare May 6, 2024 21:06
@sergiitk
Copy link
Member Author

sergiitk commented May 6, 2024

Just to stay on the safe side, ad-hoc run after squashing all commits and rebasing against master:

@murgatroid99 murgatroid99 merged commit 15b7d4d into grpc:master May 6, 2024
@sergiitk sergiitk deleted the psm-interop-common-prod-tests branch May 6, 2024 22:21
sergiitk pushed a commit to sergiitk/grpc-node that referenced this pull request May 6, 2024
sergiitk pushed a commit to sergiitk/grpc-node that referenced this pull request May 6, 2024
sergiitk pushed a commit to sergiitk/grpc-node that referenced this pull request May 6, 2024
sergiitk pushed a commit to sergiitk/grpc-node that referenced this pull request May 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

4 participants