@@ -24,7 +24,29 @@ import (
24
24
)
25
25
26
26
// 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
+
28
50
// GPUs are accessible in a container: Running nvidia-smi -L inside the
29
51
// container shows the same output inside the container as outside the
30
52
// container. This means that the following commands must all produce
@@ -33,33 +55,33 @@ var _ = Describe("docker", func() {
33
55
var hostOutput string
34
56
35
57
BeforeAll (func (ctx context.Context ) {
36
- _ , err := runScript ("docker pull ubuntu" )
58
+ _ , _ , err := r . Run ("docker pull ubuntu" )
37
59
Expect (err ).ToNot (HaveOccurred ())
38
60
39
- hostOutput , err = runScript ("nvidia-smi -L" )
61
+ hostOutput , _ , err = r . Run ("nvidia-smi -L" )
40
62
Expect (err ).ToNot (HaveOccurred ())
41
63
})
42
64
43
65
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" )
45
67
Expect (err ).ToNot (HaveOccurred ())
46
68
Expect (containerOutput ).To (Equal (hostOutput ))
47
69
})
48
70
49
71
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" )
51
73
Expect (err ).ToNot (HaveOccurred ())
52
74
Expect (containerOutput ).To (Equal (hostOutput ))
53
75
})
54
76
55
77
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" )
57
79
Expect (err ).ToNot (HaveOccurred ())
58
80
Expect (containerOutput ).To (Equal (hostOutput ))
59
81
})
60
82
61
83
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" )
63
85
Expect (err ).ToNot (HaveOccurred ())
64
86
Expect (containerOutput ).To (Equal (hostOutput ))
65
87
})
@@ -69,34 +91,34 @@ var _ = Describe("docker", func() {
69
91
// The following should all produce the same result.
70
92
When ("Running the cuda-vectorAdd sample" , Ordered , func () {
71
93
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" )
73
95
Expect (err ).ToNot (HaveOccurred ())
74
96
})
75
97
76
98
var referenceOutput string
77
99
78
100
It ("should support NVIDIA_VISIBLE_DEVICES" , func (ctx context.Context ) {
79
101
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" )
81
103
Expect (err ).ToNot (HaveOccurred ())
82
104
83
105
Expect (referenceOutput ).To (ContainSubstring ("Test PASSED" ))
84
106
})
85
107
86
108
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" )
88
110
Expect (err ).ToNot (HaveOccurred ())
89
111
Expect (referenceOutput ).To (Equal (out2 ))
90
112
})
91
113
92
114
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" )
94
116
Expect (err ).ToNot (HaveOccurred ())
95
117
Expect (referenceOutput ).To (Equal (out3 ))
96
118
})
97
119
98
120
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" )
100
122
Expect (err ).ToNot (HaveOccurred ())
101
123
Expect (referenceOutput ).To (Equal (out4 ))
102
124
})
@@ -106,34 +128,34 @@ var _ = Describe("docker", func() {
106
128
// The following should all produce the same result.
107
129
When ("Running the cuda-deviceQuery sample" , Ordered , func () {
108
130
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" )
110
132
Expect (err ).ToNot (HaveOccurred ())
111
133
})
112
134
113
135
var referenceOutput string
114
136
115
137
It ("should support NVIDIA_VISIBLE_DEVICES" , func (ctx context.Context ) {
116
138
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" )
118
140
Expect (err ).ToNot (HaveOccurred ())
119
141
120
142
Expect (referenceOutput ).To (ContainSubstring ("Result = PASS" ))
121
143
})
122
144
123
145
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" )
125
147
Expect (err ).ToNot (HaveOccurred ())
126
148
Expect (referenceOutput ).To (Equal (out2 ))
127
149
})
128
150
129
151
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" )
131
153
Expect (err ).ToNot (HaveOccurred ())
132
154
Expect (referenceOutput ).To (Equal (out3 ))
133
155
})
134
156
135
157
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" )
137
159
Expect (err ).ToNot (HaveOccurred ())
138
160
Expect (referenceOutput ).To (Equal (out4 ))
139
161
})
0 commit comments