@@ -2123,7 +2123,7 @@ services:
2123
2123
}
2124
2124
2125
2125
func TestServiceDeviceRequestCountStringType (t * testing.T ) {
2126
- _ , err := loadYAML (`
2126
+ project , err := loadYAML (`
2127
2127
name: service-device-request-count
2128
2128
services:
2129
2129
hello-world:
@@ -2137,6 +2137,7 @@ services:
2137
2137
count: all
2138
2138
` )
2139
2139
assert .NilError (t , err )
2140
+ assert .Equal (t , project .Services ["hello-world" ].Deploy .Resources .Reservations .Devices [0 ].Count , types .DeviceCount (- 1 ), err )
2140
2141
}
2141
2142
2142
2143
func TestServiceDeviceRequestCountIntegerAsStringType (t * testing.T ) {
@@ -2155,6 +2156,22 @@ services:
2155
2156
` )
2156
2157
assert .NilError (t , err )
2157
2158
}
2159
+ func TestServiceDeviceRequestWithoutCountAndDeviceIdsType (t * testing.T ) {
2160
+ project , err := loadYAML (`
2161
+ name: service-device-request-count-type
2162
+ services:
2163
+ hello-world:
2164
+ image: redis:alpine
2165
+ deploy:
2166
+ resources:
2167
+ reservations:
2168
+ devices:
2169
+ - driver: nvidia
2170
+ capabilities: [gpu]
2171
+ ` )
2172
+ assert .NilError (t , err )
2173
+ assert .Equal (t , project .Services ["hello-world" ].Deploy .Resources .Reservations .Devices [0 ].Count , types .DeviceCount (- 1 ), err )
2174
+ }
2158
2175
2159
2176
func TestServiceDeviceRequestCountInvalidStringType (t * testing.T ) {
2160
2177
_ , err := loadYAML (`
@@ -2173,6 +2190,40 @@ services:
2173
2190
assert .ErrorContains (t , err , `invalid value "some_string", the only value allowed is 'all' or a number` )
2174
2191
}
2175
2192
2193
+ func TestServiceDeviceRequestCountAndDeviceIdsExclusive (t * testing.T ) {
2194
+ _ , err := loadYAML (`
2195
+ name: service-device-request-count-type
2196
+ services:
2197
+ hello-world:
2198
+ image: redis:alpine
2199
+ deploy:
2200
+ resources:
2201
+ reservations:
2202
+ devices:
2203
+ - driver: nvidia
2204
+ capabilities: [gpu]
2205
+ count: 2
2206
+ device_ids: ["my-device-id"]
2207
+ ` )
2208
+ assert .ErrorContains (t , err , `invalid "count" and "device_ids" are attributes are exclusive` )
2209
+ }
2210
+
2211
+ func TestServiceDeviceRequestCapabilitiesMandatory (t * testing.T ) {
2212
+ _ , err := loadYAML (`
2213
+ name: service-device-request-count-type
2214
+ services:
2215
+ hello-world:
2216
+ image: redis:alpine
2217
+ deploy:
2218
+ resources:
2219
+ reservations:
2220
+ devices:
2221
+ - driver: nvidia
2222
+ count: 2
2223
+ ` )
2224
+ assert .ErrorContains (t , err , `"capabilities" attribute is mandatory for device request definition` )
2225
+ }
2226
+
2176
2227
func TestServicePullPolicy (t * testing.T ) {
2177
2228
actual , err := loadYAML (`
2178
2229
name: service-pull-policy
0 commit comments