@@ -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#
301312configvar 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.
364371ensure_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".
881911install_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