@@ -296,6 +296,17 @@ tests_need_alpha_cluster () {
296
296
tests_enabled " parallel-alpha" " serial-alpha"
297
297
}
298
298
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
+
299
310
# Regex for non-alpha, feature-tagged tests that should be run.
300
311
#
301
312
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
354
365
# whether they can run with the current cluster provider, but until
355
366
# they are, we filter them out by name. Like the other test selection
356
367
# 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"
362
369
363
370
# This creates directories that are required for testing.
364
371
ensure_paths () {
@@ -877,6 +884,29 @@ start_loggers () {
877
884
done
878
885
}
879
886
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
+
880
910
# Makes the E2E test suite binary available as "${CSI_PROW_WORK}/e2e.test".
881
911
install_e2e () {
882
912
if [ -e " ${CSI_PROW_WORK} /e2e.test" ]; then
@@ -885,6 +915,7 @@ install_e2e () {
885
915
886
916
git_checkout " ${CSI_PROW_E2E_REPO} " " ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} " " ${CSI_PROW_E2E_VERSION} " --depth=1 &&
887
917
if [ " ${CSI_PROW_E2E_IMPORT_PATH} " = " k8s.io/kubernetes" ]; then
918
+ patch_kubernetes " ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} " " ${CSI_PROW_WORK} " &&
888
919
go_version=" ${CSI_PROW_GO_VERSION_E2E:- $(go_version_for_kubernetes " ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} " " ${CSI_PROW_E2E_VERSION} " )} " &&
889
920
run_with_go " $go_version " make WHAT=test/e2e/e2e.test " -C${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} " &&
890
921
ln -s " ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} /_output/bin/e2e.test" " ${CSI_PROW_WORK} "
@@ -936,7 +967,7 @@ run_e2e () (
936
967
trap move_junit EXIT
937
968
938
969
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"
940
971
)
941
972
942
973
# Run csi-sanity against installed CSI driver.
@@ -1167,13 +1198,20 @@ main () {
1167
1198
done
1168
1199
fi
1169
1200
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
+
1170
1207
if tests_need_non_alpha_cluster; then
1171
1208
start_cluster || die " starting the non-alpha cluster failed"
1172
1209
1173
1210
# Install necessary snapshot CRDs and snapshot controller
1174
1211
install_snapshot_crds
1175
1212
install_snapshot_controller
1176
1213
1214
+
1177
1215
# Installing the driver might be disabled.
1178
1216
if ${CSI_PROW_DRIVER_INSTALL} " $images " ; then
1179
1217
collect_cluster_info
@@ -1188,7 +1226,7 @@ main () {
1188
1226
# Ignore: Double quote to prevent globbing and word splitting.
1189
1227
# shellcheck disable=SC2086
1190
1228
if ! run_e2e parallel ${CSI_PROW_GINKO_PARALLEL} \
1191
- -focus=" External.Storage " \
1229
+ -focus=" $focus " \
1192
1230
-skip=" $( regex_join " ${CSI_PROW_E2E_SERIAL} " " ${CSI_PROW_E2E_ALPHA} " " ${CSI_PROW_E2E_SKIP} " ) " ; then
1193
1231
warn " E2E parallel failed"
1194
1232
ret=1
@@ -1198,7 +1236,7 @@ main () {
1198
1236
# Ignore: Double quote to prevent globbing and word splitting.
1199
1237
# shellcheck disable=SC2086
1200
1238
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} " ) )" \
1202
1240
-skip=" $( regex_join " ${CSI_PROW_E2E_SERIAL} " ) " ; then
1203
1241
warn " E2E parallel features failed"
1204
1242
ret=1
@@ -1207,7 +1245,7 @@ main () {
1207
1245
1208
1246
if tests_enabled " serial" ; then
1209
1247
if ! run_e2e serial \
1210
- -focus=" External.Storage .*($( regex_join " ${CSI_PROW_E2E_SERIAL} " ) )" \
1248
+ -focus=" $focus .*($( regex_join " ${CSI_PROW_E2E_SERIAL} " ) )" \
1211
1249
-skip=" $( regex_join " ${CSI_PROW_E2E_ALPHA} " " ${CSI_PROW_E2E_SKIP} " ) " ; then
1212
1250
warn " E2E serial failed"
1213
1251
ret=1
@@ -1233,7 +1271,7 @@ main () {
1233
1271
# Ignore: Double quote to prevent globbing and word splitting.
1234
1272
# shellcheck disable=SC2086
1235
1273
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} " ) )" \
1237
1275
-skip=" $( regex_join " ${CSI_PROW_E2E_SERIAL} " " ${CSI_PROW_E2E_SKIP} " ) " ; then
1238
1276
warn " E2E parallel alpha failed"
1239
1277
ret=1
@@ -1242,7 +1280,7 @@ main () {
1242
1280
1243
1281
if tests_enabled " serial-alpha" ; then
1244
1282
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} " ) ))" \
1246
1284
-skip=" $( regex_join " ${CSI_PROW_E2E_SKIP} " ) " ; then
1247
1285
warn " E2E serial alpha failed"
1248
1286
ret=1
0 commit comments