@@ -555,14 +555,6 @@ list_gates () (
555555# with https://kind.sigs.k8s.io/docs/user/configuration/#runtime-config
556556list_api_groups () (
557557 set -f; IFS=' ,'
558-
559- # If the volumegroupsnapshot gate is enabled, output required API groups
560- if ${CSI_PROW_ENABLE_GROUP_SNAPSHOT} ; then
561- echo ' "api/ga": "true"'
562- echo ' "storage.k8s.io/v1alpha1": "true"'
563- echo ' "storage.k8s.io/v1beta1": "true"'
564- fi
565-
566558 # Ignore: Double quote to prevent globbing and word splitting.
567559 # shellcheck disable=SC2086
568560 set -- $1
@@ -856,20 +848,20 @@ inject_vgs_feature_gate() {
856848 fi
857849}
858850
859- # Replace controller image based on the deployment mode
851+ # Replace the snapshot controller image based on the test mode
860852# Arguments:
861853# $1: yaml content
862- # $2: mode ("external-snapshotter ", "canary", or "default")
863- # $3: new_tag (for external-snapshotter mode)
854+ # $2: mode ("local-build ", "canary", or "default")
855+ # $3: new_tag (for local-build mode)
864856# $4: registry (for canary mode)
865- replace_controller_image () {
857+ replace_snapshot_controller_image () {
866858 local yaml=" $1 "
867859 local mode=" $2 "
868860 local new_tag=" ${3:- } "
869861 local registry=" ${4:- } "
870862
871863 case " $mode " in
872- external-snapshotter )
864+ local-build )
873865 # Replace with snapshot-controller:new_tag
874866 echo " $yaml " | sed -E \
875867 " s|^([[:space:]]*image: )(.*snapshot-controller):[^[:space:]]*|\1snapshot-controller:${new_tag} |"
@@ -936,7 +928,7 @@ install_snapshot_controller() {
936928 # Replace image in SNAPSHOT_CONTROLLER_YAML with snapshot-controller:csiprow and deploy
937929 # NOTE: This logic is similar to the logic here:
938930 # https://github.com/kubernetes-csi/csi-driver-host-path/blob/v1.4.0/deploy/util/deploy-hostpath.sh#L155
939- modified=" $( replace_controller_image " $yaml " " external-snapshotter " " $NEW_TAG " | inject_vgs_feature_gate) "
931+ modified=" $( replace_snapshot_controller_image " $yaml " " local-build " " $NEW_TAG " | inject_vgs_feature_gate) "
940932 diff <( echo " $yaml " ) <( echo " $modified " )
941933 if ! echo " $modified " | kubectl apply -f -; then
942934 echo " modified version of ${SNAPSHOT_CONTROLLER_YAML} :"
@@ -945,7 +937,7 @@ install_snapshot_controller() {
945937 fi
946938 elif [ " ${CSI_PROW_DRIVER_CANARY} " = " canary" ]; then
947939 echo " Deploying snapshot-controller from ${SNAPSHOT_CONTROLLER_YAML} with canary images."
948- modified=" $( replace_controller_image " $yaml " " canary" " " " ${CSI_PROW_DRIVER_CANARY_REGISTRY} " | inject_vgs_feature_gate) "
940+ modified=" $( replace_snapshot_controller_image " $yaml " " canary" " " " ${CSI_PROW_DRIVER_CANARY_REGISTRY} " | inject_vgs_feature_gate) "
949941 diff <( echo " $yaml " ) <( echo " $modified " )
950942 if ! echo " $modified " | kubectl apply -f -; then
951943 echo " modified version of ${SNAPSHOT_CONTROLLER_YAML} :"
@@ -955,7 +947,7 @@ install_snapshot_controller() {
955947 else
956948 echo " kubectl apply -f $SNAPSHOT_CONTROLLER_YAML "
957949 # Replace snapshot-controller container tag to make it consistent with CSI_SNAPSHOTTER_VERSION
958- modified=" $( replace_controller_image " $yaml " " default" | inject_vgs_feature_gate) "
950+ modified=" $( replace_snapshot_controller_image " $yaml " " default" | inject_vgs_feature_gate) "
959951 diff <( echo " $yaml " ) <( echo " $modified " )
960952 if ! echo " $modified " | kubectl apply -f -; then
961953 echo " modified version of ${SNAPSHOT_CONTROLLER_YAML} :"
@@ -1060,23 +1052,24 @@ install_e2e () {
10601052 if sidecar_tests_enabled; then
10611053 run_with_go " ${CSI_PROW_GO_VERSION_BUILD} " go test -c -o " ${CSI_PROW_WORK} /e2e-local.test" " ${CSI_PROW_SIDECAR_E2E_IMPORT_PATH} "
10621054 fi
1063-
1055+
1056+ local e2e_src_dir
10641057 # In kubernetes presubmit do not need clone the src
10651058 if [[ $( basename " ${REPO_DIR} " ) == " kubernetes" ]]; then
10661059 echo " Using existing repo at ${REPO_DIR} "
1067- E2E_SRC_DIR =" ${REPO_DIR} "
1060+ e2e_src_dir =" ${REPO_DIR} "
10681061 else
10691062 git_checkout " ${CSI_PROW_E2E_REPO} " " ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} " " ${CSI_PROW_E2E_VERSION} " --depth=1
1070- E2E_SRC_DIR =" ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} "
1063+ e2e_src_dir =" ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} "
10711064 fi
10721065
10731066 if [ " ${CSI_PROW_E2E_IMPORT_PATH} " = " k8s.io/kubernetes" ]; then
10741067 patch_kubernetes " ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} " " ${CSI_PROW_WORK} " &&
1075- go_version=" ${CSI_PROW_GO_VERSION_E2E:- $(go_version_for_kubernetes " ${E2E_SRC_DIR } " " ${CSI_PROW_E2E_VERSION} " )} " &&
1076- run_with_go " $go_version " make WHAT=test/e2e/e2e.test " -C${E2E_SRC_DIR } " &&
1077- ln -s " ${E2E_SRC_DIR } /_output/bin/e2e.test" " ${CSI_PROW_WORK} " &&
1078- run_with_go " $go_version " make WHAT=vendor/github.com/onsi/ginkgo/ginkgo " -C${E2E_SRC_DIR } " &&
1079- ln -s " ${E2E_SRC_DIR } /_output/bin/ginkgo" " ${CSI_PROW_BIN} "
1068+ go_version=" ${CSI_PROW_GO_VERSION_E2E:- $(go_version_for_kubernetes " ${e2e_src_dir } " " ${CSI_PROW_E2E_VERSION} " )} " &&
1069+ run_with_go " $go_version " make WHAT=test/e2e/e2e.test " -C${e2e_src_dir } " &&
1070+ ln -s " ${e2e_src_dir } /_output/bin/e2e.test" " ${CSI_PROW_WORK} " &&
1071+ run_with_go " $go_version " make WHAT=vendor/github.com/onsi/ginkgo/ginkgo " -C${e2e_src_dir } " &&
1072+ ln -s " ${e2e_src_dir } /_output/bin/ginkgo" " ${CSI_PROW_BIN} "
10801073 else
10811074 run_with_go " ${CSI_PROW_GO_VERSION_E2E} " go test -c -o " ${CSI_PROW_WORK} /e2e.test" " ${CSI_PROW_E2E_IMPORT_PATH} /test/e2e"
10821075 fi
@@ -1103,7 +1096,16 @@ run_with_loggers () (
11031096
11041097# Invokes the filter-junit.go tool.
11051098run_filter_junit () {
1106- run_with_go " ${CSI_PROW_GO_VERSION_BUILD} " go run " ${RELEASE_TOOLS_ROOT} /filter-junit.go" " $@ "
1099+ local go_version ksrc version
1100+ go_version=" ${CSI_PROW_GO_VERSION_BUILD} "
1101+ # Detect if running inside k/k repo
1102+ if [[ $( basename " ${REPO_DIR} " ) == " kubernetes" ]]; then
1103+ echo " Using Kubernetes source from CI checkout ..."
1104+ ksrc=" ${REPO_DIR} "
1105+ version=" $( git -C " $ksrc " rev-parse HEAD) "
1106+ go_version=" $( go_version_for_kubernetes " $ksrc " " $version " ) " || die " cannot proceed without knowing Go version for run_filter_junit"
1107+ fi
1108+ run_with_go " ${go_version} " go run " ${RELEASE_TOOLS_ROOT} /filter-junit.go" " $@ "
11071109}
11081110
11091111# Runs the E2E test suite in a sub-shell.
@@ -1119,33 +1121,68 @@ run_e2e () (
11191121 # the full Kubernetes E2E testsuite while only running a few tests.
11201122 # shellcheck disable=SC2329
11211123 move_junit () {
1122- # shellcheck disable=SC2317
1123- FILTER=' External.Storage|CSI.mock.volume'
1124- # shellcheck disable=SC2317
1125- if [ " ${CSI_PROW_ENABLE_GROUP_SNAPSHOT} " = " true" ]; then
1126- FILTER=" ${FILTER} |\[Feature:volumegroupsnapshot\]"
1127- fi
1128-
11291124 # shellcheck disable=SC2317
11301125 if ls " ${ARTIFACTS} " /junit_[0-9]* .xml 2> /dev/null > /dev/null; then
11311126 mkdir -p " ${ARTIFACTS} /junit/${name} " &&
1132- mkdir -p " ${ARTIFACTS} /junit/steps" &&
1133- run_filter_junit -t=" ${FILTER} " -o " ${ARTIFACTS} /junit/steps/junit_${name} .xml" " ${ARTIFACTS} " /junit_[0-9]* .xml &&
1127+ mkdir -p " ${ARTIFACTS} /junit/steps"
1128+
1129+ # Skip filter-junit for in-tree (VGS) runs, because k/k already produces clean JUnit
1130+ if [[ " ${name} " == " vgs" ]]; then
1131+ echo " Skipping filter-junit for ${name} (in-tree tests already generate clean JUnit)"
1132+ mv " ${ARTIFACTS} " /junit_[0-9]* .xml " ${ARTIFACTS} /junit/${name} /"
1133+ else
1134+ # Run filtering for CSI tests to remove duplicates/skipped cases
1135+ run_filter_junit -t=" External.Storage|CSI.mock.volume" \
1136+ -o " ${ARTIFACTS} /junit/steps/junit_${name} .xml" \
1137+ " ${ARTIFACTS} " /junit_[0-9]* .xml &&
11341138 mv " ${ARTIFACTS} " /junit_[0-9]* .xml " ${ARTIFACTS} /junit/${name} /"
1139+ fi
11351140 fi
11361141 }
11371142 trap move_junit EXIT
11381143
1139- if [ " ${name} " == " local" ]; then
1140- cd " ${GOPATH} /src/${CSI_PROW_SIDECAR_E2E_PATH} " &&
1141- 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 --timeout=" ${CSI_PROW_GINKGO_TIMEOUT} " -v " $@ " " ${CSI_PROW_WORK} /e2e-local.test" -- -report-dir " ${ARTIFACTS} " -report-prefix local
1142- elif [ " ${CSI_PROW_ENABLE_GROUP_SNAPSHOT} " = " true" ] && [ " ${name} " == " parallel-features" ]; then
1143- cd " ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} " &&
1144- 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 --timeout=" ${CSI_PROW_GINKGO_TIMEOUT} " -v " $@ " " ${CSI_PROW_WORK} /e2e.test" -- -report-dir " ${ARTIFACTS} " -report-prefix vgs
1144+
1145+ # Only set up move_junit for non-VGS tests
1146+ if [ " $name " != " vgs" ]; then
1147+ trap move_junit EXIT
1148+ fi
1149+
1150+ # Determine ginkgo target and options
1151+ local ginkgo_target=" "
1152+ local extra_args=" "
1153+ local e2e_src_dir=" "
1154+ local args=()
1155+
1156+ if [[ $( basename " ${REPO_DIR} " ) == " kubernetes" ]]; then
1157+ e2e_src_dir=" ${REPO_DIR} "
11451158 else
1146- cd " ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} " &&
1147- 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 --timeout=" ${CSI_PROW_GINKGO_TIMEOUT} " -v " $@ " " ${CSI_PROW_WORK} /e2e.test" -- -report-dir " ${ARTIFACTS} " -storage.testdriver=" ${CSI_PROW_WORK} /test-driver.yaml"
1159+ e2e_src_dir=" ${GOPATH} /src/${CSI_PROW_E2E_IMPORT_PATH} "
11481160 fi
1161+
1162+ case " $name " in
1163+ local)
1164+ ginkgo_target=" ${CSI_PROW_WORK} /e2e-local.test"
1165+ extra_args=" -report-prefix=local"
1166+ cd " ${GOPATH} /src/${CSI_PROW_SIDECAR_E2E_PATH} " || die " cd ${GOPATH} /src/${CSI_PROW_SIDECAR_E2E_PATH} failed"
1167+ ;;
1168+ vgs)
1169+ # VGS tests are in in-tree/core tests; do NOT pass -storage.testdriver
1170+ ginkgo_target=" ${CSI_PROW_WORK} /e2e.test"
1171+ cd " ${e2e_src_dir} " || die " cd ${e2e_src_dir} failed"
1172+ ;;
1173+ * )
1174+ # Default: CSI external driver tests
1175+ ginkgo_target=" ${CSI_PROW_WORK} /e2e.test"
1176+ extra_args=" -storage.testdriver=${CSI_PROW_WORK} /test-driver.yaml"
1177+ cd " ${e2e_src_dir} " || die " cd ${e2e_src_dir} failed"
1178+ ;;
1179+ esac
1180+
1181+ [ -n " $extra_args " ] && args+=(" $extra_args " )
1182+ run_with_loggers env \
1183+ KUBECONFIG=" $KUBECONFIG " \
1184+ KUBE_TEST_REPO_LIST=" $( if [ -e " ${CSI_PROW_WORK} /e2e-repo-list" ]; then echo " ${CSI_PROW_WORK} /e2e-repo-list" ; fi) " \
1185+ ginkgo --timeout=" ${CSI_PROW_GINKGO_TIMEOUT} " -v " $@ " " $ginkgo_target " -- -report-dir " ${ARTIFACTS} " " ${args[@]} "
11491186)
11501187
11511188# Run csi-sanity against installed CSI driver.
@@ -1444,18 +1481,11 @@ main () {
14441481 ret=1
14451482 fi
14461483
1447- # Only add feature regex if groupsnapshot is not enabled
1448- if [ " ${CSI_PROW_ENABLE_GROUP_SNAPSHOT} " = " true" ]; then
1449- combined_focus=" ${CSI_PROW_E2E_FOCUS} "
1450- else
1451- combined_focus=" $focus .*($( regex_join " ${CSI_PROW_E2E_FOCUS} " ) )"
1452- fi
1453-
14541484 # Run tests that are feature tagged, but non-alpha
14551485 # Ignore: Double quote to prevent globbing and word splitting.
14561486 # shellcheck disable=SC2086
14571487 if ! run_e2e parallel-features ${CSI_PROW_GINKGO_PARALLEL} \
1458- -focus=" $combined_focus " \
1488+ -focus=" $focus .*( $( regex_join " ${CSI_PROW_E2E_FOCUS} " ) ) " \
14591489 -skip=" $( regex_join " ${CSI_PROW_E2E_SERIAL} " ) " ; then
14601490 warn " E2E parallel features failed"
14611491 ret=1
@@ -1479,6 +1509,18 @@ main () {
14791509 ret=1
14801510 fi
14811511 fi
1512+
1513+ # Run VGS in-tree tests only if enabled
1514+ if [ " ${CSI_PROW_ENABLE_GROUP_SNAPSHOT} " = " true" ]; then
1515+ vgs_focus=" \[Feature:volumegroupsnapshot\]"
1516+ if ! run_e2e vgs \
1517+ -focus=" ${vgs_focus} " \
1518+ -skip=" $( regex_join " ${CSI_PROW_E2E_SERIAL} " " ${CSI_PROW_E2E_SKIP} " ) " ; then
1519+ warn " E2E VGS tests failed"
1520+ ret=1
1521+ fi
1522+ fi
1523+
14821524 fi
14831525 delete_cluster_inside_prow_job non-alpha
14841526 fi
0 commit comments