1616include $(CURDIR ) /versions.mk
1717include $(CURDIR ) /common.mk
1818
19-
2019# The to-be-tested Helm chart. Ignored when setting TEST_CHART_LOCAL.
2120TEST_CHART_REPO ?= "oci://ghcr.io/nvidia/k8s-dra-driver-gpu"
2221TEST_CHART_VERSION ?= "$(VERSION_GHCR_CHART ) "
@@ -53,8 +52,10 @@ TEST_CHART_REPO = "deployments/helm/nvidia-dra-driver-gpu"
5352TEST_CHART_VERSION = $(VERSION:v%=% )
5453endif
5554
56- BATS_IMAGE = batstests:$(GIT_COMMIT_SHORT )
55+ BATS_IMAGE ?= batstests:$(GIT_COMMIT_SHORT )
56+ BATS_ARGS ?= --print-output-on-failure --no-tempdir-cleanup --timing --abort
5757KUBECONFIG ?= $(HOME ) /.kube/config
58+ RUNDIR_PARENT ?= /tmp/k8s-dra-driver-gpu-tests-out-$(USER )
5859
5960# Add `docker run` arguments when not running
6061# in Github Actions / GitLab CI.
@@ -63,6 +64,42 @@ ifeq ($(CI),)
6364 DOCKER_RUN_FLAGS += -it
6465endif
6566
67+ DOCKER_ENVS = \
68+ --env KUBECONFIG=$(KUBECONFIG ) \
69+ --env TEST_CHART_REPO=$(TEST_CHART_REPO ) \
70+ --env TEST_CHART_VERSION=$(TEST_CHART_VERSION ) \
71+ --env TEST_CHART_LASTSTABLE_REPO=$(TEST_CHART_LASTSTABLE_REPO ) \
72+ --env TEST_CHART_LASTSTABLE_VERSION=$(TEST_CHART_LASTSTABLE_VERSION ) \
73+ --env TEST_CRD_UPGRADE_TARGET_GIT_REF=$(TEST_CRD_UPGRADE_TARGET_GIT_REF ) \
74+ --env TEST_NVIDIA_DRIVER_ROOT=$(TEST_NVIDIA_DRIVER_ROOT ) \
75+ --env TEST_EXPECTED_IMAGE_SPEC_SUBSTRING=$(TEST_EXPECTED_IMAGE_SPEC_SUBSTRING )
76+
77+ DOCKER_UID := $(shell id -u)
78+ DOCKER_GID := $(shell id -g)
79+ DOCKER_USER := $(DOCKER_UID ) :$(DOCKER_GID )
80+
81+ DOCKER_MOUNTS = \
82+ -v /tmp:/tmp \
83+ -v $(CURDIR ) :/cwd \
84+ -v $(dir $(abspath $(KUBECONFIG ) ) ) :$(dir $(abspath $(KUBECONFIG ) ) )
85+
86+ # Helper to run bats inside container
87+ # $(1) = whitespace-separated list of test files
88+ define RUN_BATS
89+ @export _RUNDIR_PARENT="$(RUNDIR_PARENT ) "; \
90+ mkdir -p "$${_RUNDIR_PARENT}"; \
91+ export _RUNDIR="$$(mktemp -p "$${_RUNDIR_PARENT}" -d -t bats-tests-$$(date +%s ) -XXXXX ) "; \
92+ echo "Run dir: $${_RUNDIR}"; \
93+ docker run --rm $(DOCKER_RUN_FLAGS ) $(DOCKER_MOUNTS ) $(DOCKER_ENVS ) \
94+ -u $(DOCKER_USER ) --entrypoint /bin/bash $(BATS_IMAGE ) \
95+ -c "set -ex; cd /cwd; \
96+ echo 'Running k8s cluster cleanup (invasive)...'; \
97+ bash tests/bats/cleanup-from-previous-run.sh 2>&1 | tee -a $${_RUNDIR}/cleanup.outerr; \
98+ set +x; echo '--- STARTING TEST SUITE ---'; set -x; \
99+ TMPDIR="$${_RUNDIR}" bats $(BATS_ARGS ) $(1 ) \
100+ "
101+ endef
102+
66103default : tests
67104
68105.PHONY : image
@@ -75,43 +112,35 @@ image:
75112# suite/file 'setup' in bats, but we'd lose output on success). During dev, you
76113# may want to add --show-output-of-passing-tests (and read bats docs for other
77114# cmdline args).
78- .PHONY : tests
115+ .PHONY : tests-gpu tests-cd
116+
117+ # Run GPU plugin specific tests
118+ tests-gpu : image
119+ $(call RUN_BATS, \
120+ tests/bats/test_basics.bats \
121+ tests/bats/test_gpu_basic.bats \
122+ tests/bats/test_gpu_stress.bats)
123+
124+ # Run Compute Domain specific tests
125+ tests-cd : image
126+ $(call RUN_BATS, \
127+ tests/bats/test_basics.bats \
128+ tests/bats/test_cd_imex_chan_inject.bats \
129+ tests/bats/test_cd_mnnvl_workload.bats \
130+ tests/bats/test_cd_misc.bats \
131+ tests/bats/test_cd_logging.bats \
132+ tests/bats/test_cd_failover.bats \
133+ tests/bats/test_cd_updowngrade.bats)
134+
135+ # Run complete tests
79136tests : image
80- export _RUNDIR_PARENT=/tmp/k8s-dra-driver-gpu-tests-out-$$ {USER} && \
81- mkdir -p " $$ {_RUNDIR_PARENT}" && \
82- export _RUNDIR=$$(mktemp -p $${_RUNDIR_PARENT} -d -t bats-tests-$$(date +%s ) -XXXXX ) && \
83- docker run \
84- --rm \
85- $(DOCKER_RUN_FLAGS ) \
86- -v /tmp:/tmp \
87- -v $(CURDIR ) :/cwd \
88- -v $(HOME ) /.kube/:$(HOME ) /.kube \
89- --env KUBECONFIG=$(KUBECONFIG ) \
90- --env TEST_CHART_REPO=$(TEST_CHART_REPO ) \
91- --env TEST_CHART_VERSION=$(TEST_CHART_VERSION ) \
92- --env TEST_CHART_LASTSTABLE_REPO=$(TEST_CHART_LASTSTABLE_REPO ) \
93- --env TEST_CHART_LASTSTABLE_VERSION=$(TEST_CHART_LASTSTABLE_VERSION ) \
94- --env TEST_CRD_UPGRADE_TARGET_GIT_REF=$(TEST_CRD_UPGRADE_TARGET_GIT_REF ) \
95- --env TEST_NVIDIA_DRIVER_ROOT=$(TEST_NVIDIA_DRIVER_ROOT ) \
96- --env TEST_EXPECTED_IMAGE_SPEC_SUBSTRING=$(TEST_EXPECTED_IMAGE_SPEC_SUBSTRING ) \
97- -u $(shell id -u ${USER}) :$(shell id -g ${USER}) \
98- --entrypoint " /bin/bash" \
99- $(BATS_IMAGE ) \
100- -c " set -ex; cd /cwd; \
101- echo ' Running k8s cluster cleanup (invasive)... ' ; \
102- bash tests/bats/cleanup-from-previous-run.sh 2>&1 | tee -a $$ {_RUNDIR}/cleanup.outerr; \
103- set +x; echo ' --- STARTING TEST SUITE ---' ; set -x; \
104- TMPDIR=$$ {_RUNDIR} bats \
105- --print-output-on-failure \
106- --no-tempdir-cleanup \
107- --timing \
108- --abort \
109- tests/bats/test_basics.bats \
110- tests/bats/test_gpu_basic.bats \
111- tests/bats/test_cd_imex_chan_inject.bats \
112- tests/bats/test_cd_mnnvl_workload.bats \
113- tests/bats/test_cd_misc.bats \
114- tests/bats/test_cd_logging.bats \
115- tests/bats/test_cd_failover.bats \
116- tests/bats/test_cd_updowngrade.bats \
117- "
137+ $(call RUN_BATS, \
138+ tests/bats/test_basics.bats \
139+ tests/bats/test_gpu_basic.bats \
140+ tests/bats/test_cd_imex_chan_inject.bats \
141+ tests/bats/test_cd_mnnvl_workload.bats \
142+ tests/bats/test_cd_misc.bats \
143+ tests/bats/test_cd_logging.bats \
144+ tests/bats/test_cd_failover.bats \
145+ tests/bats/test_cd_updowngrade.bats \
146+ tests/bats/test_gpu_stress.bats)
0 commit comments