-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add xDS k8s url-map test Kokoro job (#4614)
- Loading branch information
Showing
3 changed files
with
148 additions
and
1 deletion.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Config file for internal CI | ||
|
||
# Location of the continuous shell script in repository. | ||
build_file: "grpc-go/test/kokoro/xds_url_map.sh" | ||
timeout_mins: 60 | ||
|
||
action { | ||
define_artifacts { | ||
regex: "artifacts/**/*sponge_log.xml" | ||
regex: "artifacts/**/*sponge_log.log" | ||
strip_prefix: "artifacts" | ||
} | ||
} |
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,134 @@ | ||
#!/usr/bin/env bash | ||
# Copyright 2021 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-go" | ||
# GKE Cluster | ||
readonly GKE_CLUSTER_NAME="interop-test-psm-sec-v2-us-central1-a" | ||
readonly GKE_CLUSTER_ZONE="us-central1-a" | ||
## xDS test client Docker images | ||
readonly CLIENT_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/go-client" | ||
readonly FORCE_IMAGE_BUILD="${FORCE_IMAGE_BUILD:-0}" | ||
|
||
####################################### | ||
# Builds test app Docker images and pushes them to GCR | ||
# Globals: | ||
# CLIENT_IMAGE_NAME: Test client Docker image name | ||
# GIT_COMMIT: SHA-1 of git commit being built | ||
# Arguments: | ||
# None | ||
# Outputs: | ||
# Writes the output of `gcloud builds submit` to stdout, stderr | ||
####################################### | ||
build_test_app_docker_images() { | ||
echo "Building Go xDS interop test app Docker images" | ||
docker build -f "${SRC_DIR}/interop/xds/client/Dockerfile" -t "${CLIENT_IMAGE_NAME}:${GIT_COMMIT}" "${SRC_DIR}" | ||
gcloud -q auth configure-docker | ||
docker push "${CLIENT_IMAGE_NAME}:${GIT_COMMIT}" | ||
} | ||
|
||
####################################### | ||
# Builds test app and its docker images unless they already exist | ||
# Globals: | ||
# 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 | ||
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 "${client_tags}" ]]; then | ||
build_test_app_docker_images | ||
else | ||
echo "Skipping Go 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 | ||
# CLIENT_IMAGE_NAME: Test client Docker image name | ||
# GIT_COMMIT: SHA-1 of git commit being built | ||
# 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}" | ||
set -x | ||
python -m "tests.${test_name}" \ | ||
--flagfile="${TEST_DRIVER_FLAGFILE}" \ | ||
--kube_context="${KUBE_CONTEXT}" \ | ||
--client_image="${CLIENT_IMAGE_NAME}:${GIT_COMMIT}" \ | ||
--xml_output_file="${TEST_XML_OUTPUT_DIR}/${test_name}/sponge_log.xml" \ | ||
--flagfile="config/url-map.cfg" | ||
set +x | ||
} | ||
|
||
####################################### | ||
# 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")" | ||
# shellcheck source=test/kokoro/xds_k8s_install_test_driver.sh | ||
source "${script_dir}/xds_k8s_install_test_driver.sh" | ||
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}" | ||
run_test url_map | ||
} | ||
|
||
main "$@" |