@@ -24,7 +24,27 @@ import (
2424)
2525
2626// Integration tests for Docker runtime
27- var _ = Describe ("docker" , func () {
27+ var _ = Describe ("docker" , Ordered , func () {
28+ var r Runner
29+ // Install the NVIDIA Container Toolkit
30+ BeforeAll (func (ctx context.Context ) {
31+ r = NewRunner (
32+ WithIp (hostURL ),
33+ WithSshKey (sshKey ),
34+ WithSshUser (sshUser ),
35+ )
36+ if installCTK {
37+ installer , err := NewToolkitInstaller (
38+ WithRunner (r ),
39+ WithImage (imageRepo + ":" + imageTag ),
40+ WithTemplate (dockerInstallTemplate ),
41+ )
42+ Expect (err ).ToNot (HaveOccurred ())
43+ err = installer .Install ()
44+ Expect (err ).ToNot (HaveOccurred ())
45+ }
46+ })
47+
2848 // GPUs are accessible in a container: Running nvidia-smi -L inside the
2949 // container shows the same output inside the container as outside the
3050 // container. This means that the following commands must all produce
@@ -33,33 +53,33 @@ var _ = Describe("docker", func() {
3353 var hostOutput string
3454
3555 BeforeAll (func (ctx context.Context ) {
36- _ , err := runScript ("docker pull ubuntu" )
56+ _ , _ , err := r . Run ("docker pull ubuntu" )
3757 Expect (err ).ToNot (HaveOccurred ())
3858
39- hostOutput , err = runScript ("nvidia-smi -L" )
59+ hostOutput , _ , err = r . Run ("nvidia-smi -L" )
4060 Expect (err ).ToNot (HaveOccurred ())
4161 })
4262
4363 It ("should support NVIDIA_VISIBLE_DEVICES" , func (ctx context.Context ) {
44- containerOutput , err := runScript ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all ubuntu nvidia-smi -L" )
64+ containerOutput , _ , err := r . Run ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all ubuntu nvidia-smi -L" )
4565 Expect (err ).ToNot (HaveOccurred ())
4666 Expect (containerOutput ).To (Equal (hostOutput ))
4767 })
4868
4969 It ("should support automatic CDI spec generation" , func (ctx context.Context ) {
50- containerOutput , err := runScript ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu nvidia-smi -L" )
70+ containerOutput , _ , err := r . Run ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu nvidia-smi -L" )
5171 Expect (err ).ToNot (HaveOccurred ())
5272 Expect (containerOutput ).To (Equal (hostOutput ))
5373 })
5474
5575 It ("should support the --gpus flag using the nvidia-container-runtime" , func (ctx context.Context ) {
56- containerOutput , err := runScript ("docker run --rm -i --runtime=nvidia --gpus all ubuntu nvidia-smi -L" )
76+ containerOutput , _ , err := r . Run ("docker run --rm -i --runtime=nvidia --gpus all ubuntu nvidia-smi -L" )
5777 Expect (err ).ToNot (HaveOccurred ())
5878 Expect (containerOutput ).To (Equal (hostOutput ))
5979 })
6080
6181 It ("should support the --gpus flag using the nvidia-container-runtime-hook" , func (ctx context.Context ) {
62- containerOutput , err := runScript ("docker run --rm -i --gpus all ubuntu nvidia-smi -L" )
82+ containerOutput , _ , err := r . Run ("docker run --rm -i --gpus all ubuntu nvidia-smi -L" )
6383 Expect (err ).ToNot (HaveOccurred ())
6484 Expect (containerOutput ).To (Equal (hostOutput ))
6585 })
@@ -69,34 +89,34 @@ var _ = Describe("docker", func() {
6989 // The following should all produce the same result.
7090 When ("Running the cuda-vectorAdd sample" , Ordered , func () {
7191 BeforeAll (func (ctx context.Context ) {
72- _ , err := runScript ("docker pull nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
92+ _ , _ , err := r . Run ("docker pull nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
7393 Expect (err ).ToNot (HaveOccurred ())
7494 })
7595
7696 var referenceOutput string
7797
7898 It ("should support NVIDIA_VISIBLE_DEVICES" , func (ctx context.Context ) {
7999 var err error
80- referenceOutput , err = runScript ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
100+ referenceOutput , _ , err = r . Run ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
81101 Expect (err ).ToNot (HaveOccurred ())
82102
83103 Expect (referenceOutput ).To (ContainSubstring ("Test PASSED" ))
84104 })
85105
86106 It ("should support automatic CDI spec generation" , func (ctx context.Context ) {
87- out2 , err := runScript ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
107+ out2 , _ , err := r . Run ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
88108 Expect (err ).ToNot (HaveOccurred ())
89109 Expect (referenceOutput ).To (Equal (out2 ))
90110 })
91111
92112 It ("should support the --gpus flag using the nvidia-container-runtime" , func (ctx context.Context ) {
93- out3 , err := runScript ("docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
113+ out3 , _ , err := r . Run ("docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
94114 Expect (err ).ToNot (HaveOccurred ())
95115 Expect (referenceOutput ).To (Equal (out3 ))
96116 })
97117
98118 It ("should support the --gpus flag using the nvidia-container-runtime-hook" , func (ctx context.Context ) {
99- out4 , err := runScript ("docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
119+ out4 , _ , err := r . Run ("docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
100120 Expect (err ).ToNot (HaveOccurred ())
101121 Expect (referenceOutput ).To (Equal (out4 ))
102122 })
@@ -106,34 +126,34 @@ var _ = Describe("docker", func() {
106126 // The following should all produce the same result.
107127 When ("Running the cuda-deviceQuery sample" , Ordered , func () {
108128 BeforeAll (func (ctx context.Context ) {
109- _ , err := runScript ("docker pull nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
129+ _ , _ , err := r . Run ("docker pull nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
110130 Expect (err ).ToNot (HaveOccurred ())
111131 })
112132
113133 var referenceOutput string
114134
115135 It ("should support NVIDIA_VISIBLE_DEVICES" , func (ctx context.Context ) {
116136 var err error
117- referenceOutput , err = runScript ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
137+ referenceOutput , _ , err = r . Run ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
118138 Expect (err ).ToNot (HaveOccurred ())
119139
120140 Expect (referenceOutput ).To (ContainSubstring ("Result = PASS" ))
121141 })
122142
123143 It ("should support automatic CDI spec generation" , func (ctx context.Context ) {
124- out2 , err := runScript ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
144+ out2 , _ , err := r . Run ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
125145 Expect (err ).ToNot (HaveOccurred ())
126146 Expect (referenceOutput ).To (Equal (out2 ))
127147 })
128148
129149 It ("should support the --gpus flag using the nvidia-container-runtime" , func (ctx context.Context ) {
130- out3 , err := runScript ("docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
150+ out3 , _ , err := r . Run ("docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
131151 Expect (err ).ToNot (HaveOccurred ())
132152 Expect (referenceOutput ).To (Equal (out3 ))
133153 })
134154
135155 It ("should support the --gpus flag using the nvidia-container-runtime-hook" , func (ctx context.Context ) {
136- out4 , err := runScript ("docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
156+ out4 , _ , err := r . Run ("docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
137157 Expect (err ).ToNot (HaveOccurred ())
138158 Expect (referenceOutput ).To (Equal (out4 ))
139159 })
0 commit comments