From 6d342bf78bdea0a755f3da83dd0da41f16a28e00 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Mon, 31 Aug 2026 17:50:03 -0400 Subject: [PATCH 1/2] fix(e2e): TEST_VIRT excludes kdm specs, split-job support TEST_VIRT=true now excludes kdm-labeled specs so the non-kdm CSI virt job and a new kdm-only job (TEST_VIRT_KDM=true) can run as separate parallel CI jobs, per option B of https://github.com/openshift/oadp-operator/issues/2413. TEST_VIRT_KDM=true takes precedence and still isolates kdm specs regardless of TEST_VIRT/TEST_VIRT_GA. Signed-off-by: Tiger Kaovilai --- Makefile | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 9c2cd365207..570e6b1e38a 100644 --- a/Makefile +++ b/Makefile @@ -1003,9 +1003,11 @@ TEST_VIRT ?= false # TEST_VIRT_KDM runs only the kubevirt-datamover-specific specs (ginkgo label # "kdm", a subset of "virt") -- for CI jobs that build/test against the # kubevirt-datamover-controller/-plugin repos specifically and don't need the -# full TEST_VIRT suite's runtime. TEST_VIRT=true already covers these specs -# too, since they carry both labels -- this only matters when TEST_VIRT_KDM -# is set WITHOUT TEST_VIRT. +# full TEST_VIRT suite's runtime. TEST_VIRT=true excludes kdm specs (see +# TEST_FILTER below) so the two suites can run as separate, parallel CI jobs +# without overlap -- see https://github.com/openshift/oadp-operator/issues/2413 +# option B. Set TEST_VIRT_KDM=true (with or without TEST_VIRT) to run kdm +# specs only. TEST_VIRT_KDM ?= false HCO_INDEX_TAG ?= 1.18.0 # hcp @@ -1027,12 +1029,15 @@ FAIL_FAST ?= true TEST_FILTER = (($(shell echo '! aws && ! gcp && ! azure && ! ibmcloud' | \ $(SED) -r "s/[&]* [!] $(CLUSTER_TYPE)|[!] $(CLUSTER_TYPE) [&]*//")) || $(CLUSTER_TYPE)) #TEST_FILTER := $(shell echo '! aws && ! gcp && ! azure' | $(SED) -r "s/[&]* [!] $(CLUSTER_TYPE)|[!] $(CLUSTER_TYPE) [&]*//") -ifeq ($(TEST_VIRT),true) - TEST_FILTER += && (virt) +# TEST_VIRT_KDM takes precedence: it isolates the kdm job regardless of +# TEST_VIRT/TEST_VIRT_GA. Otherwise TEST_VIRT excludes kdm specs (they run as +# their own job via TEST_VIRT_KDM=true) -- option B of issue #2413. +ifeq ($(TEST_VIRT_KDM),true) + TEST_FILTER += && (kdm) +else ifeq ($(TEST_VIRT),true) + TEST_FILTER += && (virt) && (! kdm) else ifeq ($(TEST_VIRT_GA),true) TEST_FILTER += && (virt) -else ifeq ($(TEST_VIRT_KDM),true) - TEST_FILTER += && (kdm) else TEST_FILTER += && (! virt) endif From f20738d25791e313cb04cd7ae06aa42209e16c46 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Mon, 31 Aug 2026 18:53:05 -0400 Subject: [PATCH 2/2] fix(e2e): distinguish unset vs explicit TEST_VIRT_KDM=false Use \$(origin) to tell "unset" from "explicitly false" so existing openshift/release jobs that don't set TEST_VIRT_KDM at all keep today's kdm coverage under TEST_VIRT=true (no regression), while a future split non-kdm job can opt out explicitly with TEST_VIRT_KDM=false. Signed-off-by: Tiger Kaovilai --- Makefile | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 570e6b1e38a..c7df2ff5dbd 100644 --- a/Makefile +++ b/Makefile @@ -1003,11 +1003,17 @@ TEST_VIRT ?= false # TEST_VIRT_KDM runs only the kubevirt-datamover-specific specs (ginkgo label # "kdm", a subset of "virt") -- for CI jobs that build/test against the # kubevirt-datamover-controller/-plugin repos specifically and don't need the -# full TEST_VIRT suite's runtime. TEST_VIRT=true excludes kdm specs (see -# TEST_FILTER below) so the two suites can run as separate, parallel CI jobs -# without overlap -- see https://github.com/openshift/oadp-operator/issues/2413 -# option B. Set TEST_VIRT_KDM=true (with or without TEST_VIRT) to run kdm -# specs only. +# full TEST_VIRT suite's runtime. Tri-state, distinguished via $(origin): +# unset -> TEST_VIRT=true includes kdm specs too (legacy behavior, +# what existing openshift/release jobs rely on today) +# explicit false -> TEST_VIRT=true excludes kdm specs, for a split non-kdm +# CI job +# explicit true -> kdm specs only, regardless of TEST_VIRT/TEST_VIRT_GA +# This lets a new split kdm-only job opt in (TEST_VIRT_KDM=true) and a new +# split non-kdm job opt out (TEST_VIRT_KDM=false) without changing what +# existing jobs that don't set this var at all get today -- see +# https://github.com/openshift/oadp-operator/issues/2413 option B. +TEST_VIRT_KDM_ORIGIN := $(origin TEST_VIRT_KDM) TEST_VIRT_KDM ?= false HCO_INDEX_TAG ?= 1.18.0 # hcp @@ -1029,13 +1035,17 @@ FAIL_FAST ?= true TEST_FILTER = (($(shell echo '! aws && ! gcp && ! azure && ! ibmcloud' | \ $(SED) -r "s/[&]* [!] $(CLUSTER_TYPE)|[!] $(CLUSTER_TYPE) [&]*//")) || $(CLUSTER_TYPE)) #TEST_FILTER := $(shell echo '! aws && ! gcp && ! azure' | $(SED) -r "s/[&]* [!] $(CLUSTER_TYPE)|[!] $(CLUSTER_TYPE) [&]*//") -# TEST_VIRT_KDM takes precedence: it isolates the kdm job regardless of -# TEST_VIRT/TEST_VIRT_GA. Otherwise TEST_VIRT excludes kdm specs (they run as -# their own job via TEST_VIRT_KDM=true) -- option B of issue #2413. +# TEST_VIRT_KDM=true takes precedence: it isolates the kdm job regardless of +# TEST_VIRT/TEST_VIRT_GA. Otherwise TEST_VIRT includes kdm specs unless +# TEST_VIRT_KDM was explicitly set to false (see TEST_VIRT_KDM_ORIGIN above). ifeq ($(TEST_VIRT_KDM),true) TEST_FILTER += && (kdm) else ifeq ($(TEST_VIRT),true) - TEST_FILTER += && (virt) && (! kdm) + ifeq ($(TEST_VIRT_KDM_ORIGIN),undefined) + TEST_FILTER += && (virt) + else + TEST_FILTER += && (virt) && (! kdm) + endif else ifeq ($(TEST_VIRT_GA),true) TEST_FILTER += && (virt) else