@@ -24,7 +24,29 @@ 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+
30+ // Install the NVIDIA Container Toolkit
31+ BeforeAll (func (ctx context.Context ) {
32+ r = NewRunner (
33+ WithHost (host ),
34+ WithPort (sshPort ),
35+ WithSshKey (sshKey ),
36+ WithSshUser (sshUser ),
37+ )
38+ if installCTK {
39+ installer , err := NewToolkitInstaller (
40+ WithRunner (r ),
41+ WithImage (image ),
42+ WithTemplate (dockerInstallTemplate ),
43+ )
44+ Expect (err ).ToNot (HaveOccurred ())
45+ err = installer .Install ()
46+ Expect (err ).ToNot (HaveOccurred ())
47+ }
48+ })
49+
2850 // GPUs are accessible in a container: Running nvidia-smi -L inside the
2951 // container shows the same output inside the container as outside the
3052 // container. This means that the following commands must all produce
@@ -33,33 +55,33 @@ var _ = Describe("docker", func() {
3355 var hostOutput string
3456
3557 BeforeAll (func (ctx context.Context ) {
36- _ , err := runScript ("docker pull ubuntu" )
58+ _ , _ , err := r . Run ("docker pull ubuntu" )
3759 Expect (err ).ToNot (HaveOccurred ())
3860
39- hostOutput , err = runScript ("nvidia-smi -L" )
61+ hostOutput , _ , err = r . Run ("nvidia-smi -L" )
4062 Expect (err ).ToNot (HaveOccurred ())
4163 })
4264
4365 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" )
66+ containerOutput , _ , err := r . Run ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all ubuntu nvidia-smi -L" )
4567 Expect (err ).ToNot (HaveOccurred ())
4668 Expect (containerOutput ).To (Equal (hostOutput ))
4769 })
4870
4971 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" )
72+ containerOutput , _ , err := r . Run ("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu nvidia-smi -L" )
5173 Expect (err ).ToNot (HaveOccurred ())
5274 Expect (containerOutput ).To (Equal (hostOutput ))
5375 })
5476
5577 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" )
78+ containerOutput , _ , err := r . Run ("docker run --rm -i --runtime=nvidia --gpus all ubuntu nvidia-smi -L" )
5779 Expect (err ).ToNot (HaveOccurred ())
5880 Expect (containerOutput ).To (Equal (hostOutput ))
5981 })
6082
6183 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" )
84+ containerOutput , _ , err := r . Run ("docker run --rm -i --gpus all ubuntu nvidia-smi -L" )
6385 Expect (err ).ToNot (HaveOccurred ())
6486 Expect (containerOutput ).To (Equal (hostOutput ))
6587 })
@@ -69,34 +91,34 @@ var _ = Describe("docker", func() {
6991 // The following should all produce the same result.
7092 When ("Running the cuda-vectorAdd sample" , Ordered , func () {
7193 BeforeAll (func (ctx context.Context ) {
72- _ , err := runScript ("docker pull nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
94+ _ , _ , err := r . Run ("docker pull nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
7395 Expect (err ).ToNot (HaveOccurred ())
7496 })
7597
7698 var referenceOutput string
7799
78100 It ("should support NVIDIA_VISIBLE_DEVICES" , func (ctx context.Context ) {
79101 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" )
102+ 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" )
81103 Expect (err ).ToNot (HaveOccurred ())
82104
83105 Expect (referenceOutput ).To (ContainSubstring ("Test PASSED" ))
84106 })
85107
86108 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" )
109+ 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" )
88110 Expect (err ).ToNot (HaveOccurred ())
89111 Expect (referenceOutput ).To (Equal (out2 ))
90112 })
91113
92114 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" )
115+ out3 , _ , err := r . Run ("docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
94116 Expect (err ).ToNot (HaveOccurred ())
95117 Expect (referenceOutput ).To (Equal (out3 ))
96118 })
97119
98120 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" )
121+ out4 , _ , err := r . Run ("docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0" )
100122 Expect (err ).ToNot (HaveOccurred ())
101123 Expect (referenceOutput ).To (Equal (out4 ))
102124 })
@@ -106,34 +128,34 @@ var _ = Describe("docker", func() {
106128 // The following should all produce the same result.
107129 When ("Running the cuda-deviceQuery sample" , Ordered , func () {
108130 BeforeAll (func (ctx context.Context ) {
109- _ , err := runScript ("docker pull nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
131+ _ , _ , err := r . Run ("docker pull nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
110132 Expect (err ).ToNot (HaveOccurred ())
111133 })
112134
113135 var referenceOutput string
114136
115137 It ("should support NVIDIA_VISIBLE_DEVICES" , func (ctx context.Context ) {
116138 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" )
139+ 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" )
118140 Expect (err ).ToNot (HaveOccurred ())
119141
120142 Expect (referenceOutput ).To (ContainSubstring ("Result = PASS" ))
121143 })
122144
123145 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" )
146+ 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" )
125147 Expect (err ).ToNot (HaveOccurred ())
126148 Expect (referenceOutput ).To (Equal (out2 ))
127149 })
128150
129151 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" )
152+ out3 , _ , err := r . Run ("docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
131153 Expect (err ).ToNot (HaveOccurred ())
132154 Expect (referenceOutput ).To (Equal (out3 ))
133155 })
134156
135157 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" )
158+ out4 , _ , err := r . Run ("docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0" )
137159 Expect (err ).ToNot (HaveOccurred ())
138160 Expect (referenceOutput ).To (Equal (out4 ))
139161 })
0 commit comments