Skip to content

Commit 09d4151

Browse files
authored
Merge pull request #147 from pohly/mock-testing
Mock testing
2 parents 6616a6b + 74cfbc9 commit 09d4151

File tree

1 file changed

+49
-11
lines changed

1 file changed

+49
-11
lines changed

Diff for: prow.sh

+49-11
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,17 @@ tests_need_alpha_cluster () {
296296
tests_enabled "parallel-alpha" "serial-alpha"
297297
}
298298

299+
# Enabling mock tests adds the "CSI mock volume" tests from https://github.com/kubernetes/kubernetes/blob/master/test/e2e/storage/csi_mock_volume.go
300+
# to the e2e.test invocations (serial, parallel, and the corresponding alpha variants).
301+
# When testing canary images, those get used instead of the images specified
302+
# in the e2e.test's normal YAML files.
303+
#
304+
# The default is to enable this for all jobs which use canary images
305+
# because we want to know whether our release candidates will pass all
306+
# existing tests (the storage testsuites and mock testing in
307+
# Kubernetes).
308+
configvar CSI_PROW_E2E_MOCK "$(if [ "${CSI_PROW_DRIVER_CANARY}" = "canary" ]; then echo true; else echo false; fi)" "enable CSI mock volume tests"
309+
299310
# Regex for non-alpha, feature-tagged tests that should be run.
300311
#
301312
configvar CSI_PROW_E2E_FOCUS_LATEST '\[Feature:VolumeSnapshotDataSource\]' "non-alpha, feature-tagged tests for latest Kubernetes version"
@@ -354,11 +365,7 @@ configvar CSI_SNAPSHOTTER_VERSION "$(default_csi_snapshotter_version)" "external
354365
# whether they can run with the current cluster provider, but until
355366
# they are, we filter them out by name. Like the other test selection
356367
# variables, this is again a space separated list of regular expressions.
357-
#
358-
# "different node" test skips can be removed once
359-
# https://github.com/kubernetes/kubernetes/pull/82678 has been backported
360-
# to all the K8s versions we test against
361-
configvar CSI_PROW_E2E_SKIP 'Disruptive|different\s+node' "tests that need to be skipped"
368+
configvar CSI_PROW_E2E_SKIP 'Disruptive' "tests that need to be skipped"
362369

363370
# This creates directories that are required for testing.
364371
ensure_paths () {
@@ -877,6 +884,29 @@ start_loggers () {
877884
done
878885
}
879886
887+
# Patches the image versions of test/e2e/testing-manifests/storage-csi/mock in the k/k
888+
# source code, if needed.
889+
patch_kubernetes () {
890+
local source="$1" target="$2"
891+
892+
if [ "${CSI_PROW_DRIVER_CANARY}" = "canary" ]; then
893+
# We cannot replace k8s.gcr.io/sig-storage with gcr.io/k8s-staging-sig-storage because
894+
# e2e.test does not support it (see test/utils/image/manifest.go). Instead we
895+
# invoke the e2e.test binary with KUBE_TEST_REPO_LIST set to a file that
896+
# overrides that registry.
897+
find "$source/test/e2e/testing-manifests/storage-csi/mock" -name '*.yaml' -print0 | xargs -0 sed -i -e 's;k8s.gcr.io/sig-storage/\(.*\):v.*;k8s.gcr.io/sig-storage/\1:canary;'
898+
cat >"$target/e2e-repo-list" <<EOF
899+
sigStorageRegistry: gcr.io/k8s-staging-sig-storage
900+
EOF
901+
cat >&2 <<EOF
902+
903+
Using a modified version of k/k/test/e2e:
904+
$(cd "$source" && git diff 2>&1)
905+
906+
EOF
907+
fi
908+
}
909+
880910
# Makes the E2E test suite binary available as "${CSI_PROW_WORK}/e2e.test".
881911
install_e2e () {
882912
if [ -e "${CSI_PROW_WORK}/e2e.test" ]; then
@@ -885,6 +915,7 @@ install_e2e () {
885915
886916
git_checkout "${CSI_PROW_E2E_REPO}" "${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}" "${CSI_PROW_E2E_VERSION}" --depth=1 &&
887917
if [ "${CSI_PROW_E2E_IMPORT_PATH}" = "k8s.io/kubernetes" ]; then
918+
patch_kubernetes "${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}" "${CSI_PROW_WORK}" &&
888919
go_version="${CSI_PROW_GO_VERSION_E2E:-$(go_version_for_kubernetes "${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}" "${CSI_PROW_E2E_VERSION}")}" &&
889920
run_with_go "$go_version" make WHAT=test/e2e/e2e.test "-C${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}" &&
890921
ln -s "${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}/_output/bin/e2e.test" "${CSI_PROW_WORK}"
@@ -936,7 +967,7 @@ run_e2e () (
936967
trap move_junit EXIT
937968
938969
cd "${GOPATH}/src/${CSI_PROW_E2E_IMPORT_PATH}" &&
939-
run_with_loggers ginkgo -v "$@" "${CSI_PROW_WORK}/e2e.test" -- -report-dir "${ARTIFACTS}" -storage.testdriver="${CSI_PROW_WORK}/test-driver.yaml"
970+
run_with_loggers env KUBECONFIG="$KUBECONFIG" KUBE_TEST_REPO_LIST="$(if [ -e "${CSI_PROW_WORK}/e2e-repo-list" ]; then echo "${CSI_PROW_WORK}/e2e-repo-list"; fi)" ginkgo -v "$@" "${CSI_PROW_WORK}/e2e.test" -- -report-dir "${ARTIFACTS}" -storage.testdriver="${CSI_PROW_WORK}/test-driver.yaml"
940971
)
941972
942973
# Run csi-sanity against installed CSI driver.
@@ -1167,13 +1198,20 @@ main () {
11671198
done
11681199
fi
11691200
1201+
# Run the external driver tests and optionally also mock tests.
1202+
local focus="External.Storage"
1203+
if "$CSI_PROW_E2E_MOCK"; then
1204+
focus="($focus|CSI.mock.volume)"
1205+
fi
1206+
11701207
if tests_need_non_alpha_cluster; then
11711208
start_cluster || die "starting the non-alpha cluster failed"
11721209
11731210
# Install necessary snapshot CRDs and snapshot controller
11741211
install_snapshot_crds
11751212
install_snapshot_controller
11761213
1214+
11771215
# Installing the driver might be disabled.
11781216
if ${CSI_PROW_DRIVER_INSTALL} "$images"; then
11791217
collect_cluster_info
@@ -1188,7 +1226,7 @@ main () {
11881226
# Ignore: Double quote to prevent globbing and word splitting.
11891227
# shellcheck disable=SC2086
11901228
if ! run_e2e parallel ${CSI_PROW_GINKO_PARALLEL} \
1191-
-focus="External.Storage" \
1229+
-focus="$focus" \
11921230
-skip="$(regex_join "${CSI_PROW_E2E_SERIAL}" "${CSI_PROW_E2E_ALPHA}" "${CSI_PROW_E2E_SKIP}")"; then
11931231
warn "E2E parallel failed"
11941232
ret=1
@@ -1198,7 +1236,7 @@ main () {
11981236
# Ignore: Double quote to prevent globbing and word splitting.
11991237
# shellcheck disable=SC2086
12001238
if ! run_e2e parallel-features ${CSI_PROW_GINKO_PARALLEL} \
1201-
-focus="External.Storage.*($(regex_join "${CSI_PROW_E2E_FOCUS}"))" \
1239+
-focus="$focus.*($(regex_join "${CSI_PROW_E2E_FOCUS}"))" \
12021240
-skip="$(regex_join "${CSI_PROW_E2E_SERIAL}")"; then
12031241
warn "E2E parallel features failed"
12041242
ret=1
@@ -1207,7 +1245,7 @@ main () {
12071245
12081246
if tests_enabled "serial"; then
12091247
if ! run_e2e serial \
1210-
-focus="External.Storage.*($(regex_join "${CSI_PROW_E2E_SERIAL}"))" \
1248+
-focus="$focus.*($(regex_join "${CSI_PROW_E2E_SERIAL}"))" \
12111249
-skip="$(regex_join "${CSI_PROW_E2E_ALPHA}" "${CSI_PROW_E2E_SKIP}")"; then
12121250
warn "E2E serial failed"
12131251
ret=1
@@ -1233,7 +1271,7 @@ main () {
12331271
# Ignore: Double quote to prevent globbing and word splitting.
12341272
# shellcheck disable=SC2086
12351273
if ! run_e2e parallel-alpha ${CSI_PROW_GINKO_PARALLEL} \
1236-
-focus="External.Storage.*($(regex_join "${CSI_PROW_E2E_ALPHA}"))" \
1274+
-focus="$focus.*($(regex_join "${CSI_PROW_E2E_ALPHA}"))" \
12371275
-skip="$(regex_join "${CSI_PROW_E2E_SERIAL}" "${CSI_PROW_E2E_SKIP}")"; then
12381276
warn "E2E parallel alpha failed"
12391277
ret=1
@@ -1242,7 +1280,7 @@ main () {
12421280
12431281
if tests_enabled "serial-alpha"; then
12441282
if ! run_e2e serial-alpha \
1245-
-focus="External.Storage.*(($(regex_join "${CSI_PROW_E2E_SERIAL}")).*($(regex_join "${CSI_PROW_E2E_ALPHA}"))|($(regex_join "${CSI_PROW_E2E_ALPHA}")).*($(regex_join "${CSI_PROW_E2E_SERIAL}")))" \
1283+
-focus="$focus.*(($(regex_join "${CSI_PROW_E2E_SERIAL}")).*($(regex_join "${CSI_PROW_E2E_ALPHA}"))|($(regex_join "${CSI_PROW_E2E_ALPHA}")).*($(regex_join "${CSI_PROW_E2E_SERIAL}")))" \
12461284
-skip="$(regex_join "${CSI_PROW_E2E_SKIP}")"; then
12471285
warn "E2E serial alpha failed"
12481286
ret=1

0 commit comments

Comments
 (0)