forked from grpc/grpc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PSM Interop] Use the Kokoro shared install lib from the new repo (gr…
…pc#35327) Source: https://github.com/grpc/grpc/blob/4f7ead2c7b7b82ad80799bbfa482184991dcd346/tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh New repo: https://github.com/grpc/psm-interop New path: `.kokoro/psm_interop_kokoro_lib.sh` Ref grpc/psm-interop#16 Closes grpc#35327 COPYBARA_INTEGRATE_REVIEW=grpc#35327 from sergiitk:psm-interop-shared-build 0f45663 PiperOrigin-RevId: 591388176
- Loading branch information
1 parent
3dce68b
commit e4930de
Showing
10 changed files
with
291 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
#!/usr/bin/env bash | ||
# Copyright 2022 gRPC authors. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
set -eo pipefail | ||
|
||
# Constants | ||
readonly GITHUB_REPOSITORY_NAME="grpc" | ||
readonly TEST_DRIVER_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/${TEST_DRIVER_REPO_OWNER:-grpc}/psm-interop/${TEST_DRIVER_BRANCH:-main}/.kokoro/psm_interop_kokoro_lib.sh" | ||
readonly LANGS="cpp go java" | ||
readonly MAIN_BRANCH="${MAIN_BRANCH:-master}" | ||
|
||
####################################### | ||
# Main function: provision software necessary to execute tests, and run them | ||
# Globals: | ||
# KOKORO_ARTIFACTS_DIR | ||
# GITHUB_REPOSITORY_NAME | ||
# SRC_DIR: Populated with absolute path to the source repo | ||
# TEST_DRIVER_REPO_DIR: Populated with the path to the repo containing | ||
# the test driver | ||
# TEST_DRIVER_FULL_DIR: Populated with the path to the test driver source code | ||
# TEST_DRIVER_FLAGFILE: Populated with relative path to test driver flagfile | ||
# TEST_XML_OUTPUT_DIR: Populated with the path to test xUnit XML report | ||
# GIT_ORIGIN_URL: Populated with the origin URL of git repo used for the build | ||
# GIT_COMMIT: Populated with the SHA-1 of git commit being built | ||
# GIT_COMMIT_SHORT: Populated with the short SHA-1 of git commit being built | ||
# KUBE_CONTEXT: Populated with name of kubectl context with GKE cluster access | ||
# Arguments: | ||
# None | ||
# Outputs: | ||
# Writes the output of test execution to stdout, stderr | ||
####################################### | ||
main() { | ||
local script_dir | ||
script_dir="${PWD}/$(dirname "$0")" | ||
|
||
# Source the test driver from the master branch. | ||
echo "Sourcing test driver install script from: ${TEST_DRIVER_INSTALL_SCRIPT_URL}" | ||
source /dev/stdin <<< "$(curl -s "${TEST_DRIVER_INSTALL_SCRIPT_URL}")" | ||
|
||
|
||
activate_gke_cluster GKE_CLUSTER_PSM_SECURITY | ||
|
||
set -x | ||
if [[ -n "${KOKORO_ARTIFACTS_DIR}" ]]; then | ||
kokoro_setup_test_driver "${GITHUB_REPOSITORY_NAME}" | ||
if [ "${TESTING_VERSION}" != "master" ]; then | ||
echo "Skipping cross branch testing for non-master branch ${TESTING_VERSION}" | ||
exit 0 | ||
fi | ||
cd "${TEST_DRIVER_FULL_DIR}" | ||
else | ||
local_setup_test_driver "${script_dir}" | ||
cd "${SRC_DIR}/${TEST_DRIVER_PATH}" | ||
fi | ||
|
||
source "${script_dir}/grpc_xds_k8s_run_xtest.sh" | ||
|
||
local failed_tests=0 | ||
local successful_string | ||
local failed_string | ||
LATEST_BRANCH=$(find_latest_branch "${LATEST_BRANCH}") | ||
OLDEST_BRANCH=$(find_oldest_branch "${OLDEST_BRANCH}" "${LATEST_BRANCH}") | ||
# Run cross branch tests per language: master x latest and master x oldest | ||
for LANG in ${LANGS} | ||
do | ||
if run_test "${LANG}" "${MAIN_BRANCH}" "${LANG}" "${LATEST_BRANCH}" "${MAIN_BRANCH}" "latest"; then | ||
successful_string="${successful_string} ${MAIN_BRANCH}-${LATEST_BRANCH}/${LANG}" | ||
else | ||
failed_tests=$((failed_tests + 1)) | ||
failed_string="${failed_string} ${MAIN_BRANCH}-${LATEST_BRANCH}/${LANG}" | ||
fi | ||
if run_test "${LANG}" "${LATEST_BRANCH}" "${LANG}" "${MAIN_BRANCH}" "latest" "${MAIN_BRANCH}"; then | ||
successful_string="${successful_string} ${LATEST_BRANCH}-${MAIN_BRANCH}/${LANG}" | ||
else | ||
failed_tests=$((failed_tests + 1)) | ||
failed_string="${failed_string} ${LATEST_BRANCH}-${MAIN_BRANCH}/${LANG}" | ||
fi | ||
if run_test "${LANG}" "${MAIN_BRANCH}" "${LANG}" "${OLDEST_BRANCH}" "${MAIN_BRANCH}" "oldest"; then | ||
successful_string="${successful_string} ${MAIN_BRANCH}-${OLDEST_BRANCH}/${LANG}" | ||
else | ||
failed_tests=$((failed_tests + 1)) | ||
failed_string="${failed_string} ${MAIN_BRANCH}-${OLDEST_BRANCH}/${LANG}" | ||
fi | ||
if run_test "${LANG}" "${OLDEST_BRANCH}" "${LANG}" "${MAIN_BRANCH}" "oldest" "${MAIN_BRANCH}"; then | ||
successful_string="${successful_string} ${OLDEST_BRANCH}-${MAIN_BRANCH}/${LANG}" | ||
else | ||
failed_tests=$((failed_tests + 1)) | ||
failed_string="${failed_string} ${OLDEST_BRANCH}-${MAIN_BRANCH}/${LANG}" | ||
fi | ||
done | ||
set +x | ||
echo "Failed test suites list: ${failed_string}" | ||
echo "Successful test suites list: ${successful_string}" | ||
if (( failed_tests > 0 )); then | ||
exit 1 | ||
fi | ||
} | ||
|
||
main "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
#!/usr/bin/env bash | ||
# Copyright 2023 gRPC authors. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
set -eo pipefail | ||
|
||
# Constants | ||
readonly GITHUB_REPOSITORY_NAME="grpc" | ||
readonly TEST_DRIVER_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/${TEST_DRIVER_REPO_OWNER:-grpc}/psm-interop/${TEST_DRIVER_BRANCH:-main}/.kokoro/psm_interop_kokoro_lib.sh" | ||
## xDS test server/client Docker images | ||
readonly SERVER_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/cpp-server" | ||
readonly CLIENT_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/cpp-client" | ||
readonly FORCE_IMAGE_BUILD="${FORCE_IMAGE_BUILD:-0}" | ||
readonly BUILD_APP_PATH="interop-testing/build/install/grpc-interop-testing" | ||
|
||
####################################### | ||
# Builds test app Docker images and pushes them to GCR | ||
# Globals: | ||
# BUILD_APP_PATH | ||
# SERVER_IMAGE_NAME: Test server Docker image name | ||
# CLIENT_IMAGE_NAME: Test client Docker image name | ||
# GIT_COMMIT: SHA-1 of git commit being built | ||
# TESTING_VERSION: version branch under test, f.e. v1.42.x, master | ||
# Arguments: | ||
# None | ||
# Outputs: | ||
# Writes the output of `gcloud builds submit` to stdout, stderr | ||
####################################### | ||
build_test_app_docker_images() { | ||
echo "Building C++ xDS interop test app Docker images" | ||
docker build -f "${SRC_DIR}/tools/dockerfile/interoptest/grpc_interop_cxx_xds/Dockerfile.xds_client" -t "${CLIENT_IMAGE_NAME}:${GIT_COMMIT}" "${SRC_DIR}" | ||
docker build -f "${SRC_DIR}/tools/dockerfile/interoptest/grpc_interop_cxx_xds/Dockerfile.xds_server" -t "${SERVER_IMAGE_NAME}:${GIT_COMMIT}" "${SRC_DIR}" | ||
gcloud -q auth configure-docker | ||
docker push "${CLIENT_IMAGE_NAME}:${GIT_COMMIT}" | ||
docker push "${SERVER_IMAGE_NAME}:${GIT_COMMIT}" | ||
if is_version_branch "${TESTING_VERSION}"; then | ||
tag_and_push_docker_image "${CLIENT_IMAGE_NAME}" "${GIT_COMMIT}" "${TESTING_VERSION}" | ||
tag_and_push_docker_image "${SERVER_IMAGE_NAME}" "${GIT_COMMIT}" "${TESTING_VERSION}" | ||
fi | ||
} | ||
|
||
####################################### | ||
# Builds test app and its docker images unless they already exist | ||
# Globals: | ||
# SERVER_IMAGE_NAME: Test server Docker image name | ||
# CLIENT_IMAGE_NAME: Test client Docker image name | ||
# GIT_COMMIT: SHA-1 of git commit being built | ||
# FORCE_IMAGE_BUILD | ||
# Arguments: | ||
# None | ||
# Outputs: | ||
# Writes the output to stdout, stderr | ||
####################################### | ||
build_docker_images_if_needed() { | ||
# Check if images already exist | ||
server_tags="$(gcloud_gcr_list_image_tags "${SERVER_IMAGE_NAME}" "${GIT_COMMIT}")" | ||
printf "Server image: %s:%s\n" "${SERVER_IMAGE_NAME}" "${GIT_COMMIT}" | ||
echo "${server_tags:-Server image not found}" | ||
|
||
client_tags="$(gcloud_gcr_list_image_tags "${CLIENT_IMAGE_NAME}" "${GIT_COMMIT}")" | ||
printf "Client image: %s:%s\n" "${CLIENT_IMAGE_NAME}" "${GIT_COMMIT}" | ||
echo "${client_tags:-Client image not found}" | ||
|
||
# Build if any of the images are missing, or FORCE_IMAGE_BUILD=1 | ||
if [[ "${FORCE_IMAGE_BUILD}" == "1" || -z "${server_tags}" || -z "${client_tags}" ]]; then | ||
build_test_app_docker_images | ||
else | ||
echo "Skipping C++ test app build" | ||
fi | ||
} | ||
|
||
####################################### | ||
# Executes the test case | ||
# Globals: | ||
# TEST_DRIVER_FLAGFILE: Relative path to test driver flagfile | ||
# KUBE_CONTEXT: The name of kubectl context with GKE cluster access | ||
# TEST_XML_OUTPUT_DIR: Output directory for the test xUnit XML report | ||
# SERVER_IMAGE_NAME: Test server Docker image name | ||
# CLIENT_IMAGE_NAME: Test client Docker image name | ||
# GIT_COMMIT: SHA-1 of git commit being built | ||
# TESTING_VERSION: version branch under test: used by the framework to determine the supported PSM | ||
# features. | ||
# Arguments: | ||
# Test case name | ||
# Outputs: | ||
# Writes the output of test execution to stdout, stderr | ||
# Test xUnit report to ${TEST_XML_OUTPUT_DIR}/${test_name}/sponge_log.xml | ||
####################################### | ||
run_test() { | ||
# Test driver usage: | ||
# https://github.com/grpc/grpc/tree/master/tools/run_tests/xds_k8s_test_driver#basic-usage | ||
local test_name="${1:?Usage: run_test test_name}" | ||
local out_dir="${TEST_XML_OUTPUT_DIR}/${test_name}" | ||
mkdir -pv "${out_dir}" | ||
set -x | ||
python3 -m "tests.${test_name}" \ | ||
--flagfile="${TEST_DRIVER_FLAGFILE}" \ | ||
--flagfile="config/common-csm.cfg" \ | ||
--kube_context="${KUBE_CONTEXT}" \ | ||
--server_image="${SERVER_IMAGE_NAME}:${GIT_COMMIT}" \ | ||
--client_image="${CLIENT_IMAGE_NAME}:${GIT_COMMIT}" \ | ||
--testing_version="${TESTING_VERSION}" \ | ||
--force_cleanup \ | ||
--collect_app_logs \ | ||
--log_dir="${out_dir}" \ | ||
--xml_output_file="${out_dir}/sponge_log.xml" \ | ||
|& tee "${out_dir}/sponge_log.log" | ||
} | ||
|
||
####################################### | ||
# Main function: provision software necessary to execute tests, and run them | ||
# Globals: | ||
# KOKORO_ARTIFACTS_DIR | ||
# GITHUB_REPOSITORY_NAME | ||
# SRC_DIR: Populated with absolute path to the source repo | ||
# TEST_DRIVER_REPO_DIR: Populated with the path to the repo containing | ||
# the test driver | ||
# TEST_DRIVER_FULL_DIR: Populated with the path to the test driver source code | ||
# TEST_DRIVER_FLAGFILE: Populated with relative path to test driver flagfile | ||
# TEST_XML_OUTPUT_DIR: Populated with the path to test xUnit XML report | ||
# GIT_ORIGIN_URL: Populated with the origin URL of git repo used for the build | ||
# GIT_COMMIT: Populated with the SHA-1 of git commit being built | ||
# GIT_COMMIT_SHORT: Populated with the short SHA-1 of git commit being built | ||
# KUBE_CONTEXT: Populated with name of kubectl context with GKE cluster access | ||
# Arguments: | ||
# None | ||
# Outputs: | ||
# Writes the output of test execution to stdout, stderr | ||
####################################### | ||
main() { | ||
local script_dir | ||
script_dir="$(dirname "$0")" | ||
|
||
# Source the test driver from the master branch. | ||
echo "Sourcing test driver install script from: ${TEST_DRIVER_INSTALL_SCRIPT_URL}" | ||
source /dev/stdin <<< "$(curl -s "${TEST_DRIVER_INSTALL_SCRIPT_URL}")" | ||
|
||
activate_gke_cluster GKE_CLUSTER_PSM_CSM | ||
|
||
set -x | ||
if [[ -n "${KOKORO_ARTIFACTS_DIR}" ]]; then | ||
kokoro_setup_test_driver "${GITHUB_REPOSITORY_NAME}" | ||
else | ||
local_setup_test_driver "${script_dir}" | ||
fi | ||
build_docker_images_if_needed | ||
# Run tests | ||
cd "${TEST_DRIVER_FULL_DIR}" | ||
local failed_tests=0 | ||
test_suites=( | ||
"gamma.gamma_baseline_test" | ||
"gamma.affinity_test" | ||
"app_net_ssa_test" | ||
) | ||
for test in "${test_suites[@]}"; do | ||
run_test $test || (( ++failed_tests )) | ||
done | ||
echo "Failed test suites: ${failed_tests}" | ||
} | ||
|
||
main "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters