@@ -18,6 +18,7 @@ package e2e
18
18
19
19
import (
20
20
"context"
21
+ "fmt"
21
22
"path/filepath"
22
23
"strings"
23
24
@@ -297,4 +298,57 @@ var _ = Describe("docker", Ordered, ContinueOnFailure, func() {
297
298
Expect (err ).ToNot (HaveOccurred ())
298
299
})
299
300
})
301
+
302
+ When ("Running a container where the firmware folder resolves outside the container root" , Ordered , func () {
303
+ var outputDir string
304
+ BeforeAll (func (ctx context.Context ) {
305
+ output , _ , err := runner .Run ("mktemp -d -p $(pwd)" )
306
+ Expect (err ).ToNot (HaveOccurred ())
307
+ outputDir = strings .TrimSpace (output )
308
+
309
+ _ , _ , err = runner .Run ("docker pull ubuntu" )
310
+ Expect (err ).ToNot (HaveOccurred ())
311
+
312
+ _ , _ , err = runner .Run (`docker build -t firmware-test \
313
+ --build-arg RM_VERSION="$(basename $(ls -d /lib/firmware/nvidia/*.*))" \
314
+ --build-arg CURRENT_DIR="` + outputDir + `" \
315
+ - <<EOF
316
+ FROM ubuntu
317
+ RUN mkdir -p /lib/firmware/nvidia/
318
+ ARG RM_VERSION
319
+ ARG CURRENT_DIR
320
+ RUN ln -s /../../../../../../../../\$CURRENT_DIR /lib/firmware/nvidia/\$RM_VERSION
321
+ EOF` )
322
+ Expect (err ).ToNot (HaveOccurred ())
323
+ })
324
+
325
+ AfterEach (func (ctx context.Context ) {
326
+ output , _ , err := runner .Run ("ls -A " + outputDir )
327
+ Expect (err ).ToNot (HaveOccurred ())
328
+ Expect (output ).To (BeEmpty ())
329
+ })
330
+
331
+ AfterAll (func (ctx context.Context ) {
332
+ if outputDir != "" {
333
+ runner .Run (fmt .Sprintf ("rm -rf %s" , outputDir ))
334
+ }
335
+ })
336
+
337
+ It ("should not fail when using CDI" , func (ctx context.Context ) {
338
+ output , _ , err := runner .Run ("docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all firmware-test" )
339
+ Expect (err ).ToNot (HaveOccurred ())
340
+ Expect (output ).To (BeEmpty ())
341
+ })
342
+
343
+ It ("should not fail when using the nvidia-container-runtime" , func (ctx context.Context ) {
344
+ _ , _ , err := runner .Run ("docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all firmware-test" )
345
+ Expect (err ).ToNot (HaveOccurred ())
346
+ })
347
+
348
+ It ("should fail when using the nvidia-container-runtime-hook" , Label ("legacy" ), func (ctx context.Context ) {
349
+ _ , stderr , err := runner .Run ("docker run --rm --runtime=runc --gpus=all firmware-test" )
350
+ Expect (err ).To (HaveOccurred ())
351
+ Expect (stderr ).To (ContainSubstring ("nvidia-container-cli.real: mount error: path error:" ))
352
+ })
353
+ })
300
354
})
0 commit comments