@@ -39,7 +39,25 @@ func testResourceClaim(name string, namespace string, spec api.ResourceClaimSpec
39
39
40
40
func TestResourceClaimEvaluatorUsage (t * testing.T ) {
41
41
classGpu := "gpu"
42
+ classTpu := "tpu"
42
43
validClaim := testResourceClaim ("foo" , "ns" , api.ResourceClaimSpec {Devices : api.DeviceClaim {Requests : []api.DeviceRequest {{Name : "req-0" , DeviceClassName : classGpu , AllocationMode : api .DeviceAllocationModeExactCount , Count : 1 }}}})
44
+ validClaimWithPrioritizedList := testResourceClaim ("foo" , "ns" , api.ResourceClaimSpec {
45
+ Devices : api.DeviceClaim {
46
+ Requests : []api.DeviceRequest {
47
+ {
48
+ Name : "req-0" ,
49
+ FirstAvailable : []api.DeviceSubRequest {
50
+ {
51
+ Name : "subreq-0" ,
52
+ DeviceClassName : classGpu ,
53
+ AllocationMode : api .DeviceAllocationModeExactCount ,
54
+ Count : 1 ,
55
+ },
56
+ },
57
+ },
58
+ },
59
+ },
60
+ })
43
61
44
62
evaluator := NewResourceClaimEvaluator (nil )
45
63
testCases := map [string ]struct {
@@ -112,6 +130,61 @@ func TestResourceClaimEvaluatorUsage(t *testing.T) {
112
130
"gpu.deviceclass.resource.k8s.io/devices" : resource .MustParse ("1" ),
113
131
},
114
132
},
133
+ "prioritized-list" : {
134
+ claim : validClaimWithPrioritizedList ,
135
+ usage : corev1.ResourceList {
136
+ "count/resourceclaims.resource.k8s.io" : resource .MustParse ("1" ),
137
+ "gpu.deviceclass.resource.k8s.io/devices" : resource .MustParse ("1" ),
138
+ },
139
+ },
140
+ "prioritized-list-multiple-subrequests" : {
141
+ claim : func () * api.ResourceClaim {
142
+ claim := validClaimWithPrioritizedList .DeepCopy ()
143
+ claim .Spec .Devices .Requests [0 ].FirstAvailable [0 ].Count = 2
144
+ claim .Spec .Devices .Requests [0 ].FirstAvailable = append (claim .Spec .Devices .Requests [0 ].FirstAvailable , api.DeviceSubRequest {
145
+ Name : "subreq-1" ,
146
+ DeviceClassName : classGpu ,
147
+ AllocationMode : api .DeviceAllocationModeExactCount ,
148
+ Count : 1 ,
149
+ })
150
+ return claim
151
+ }(),
152
+ usage : corev1.ResourceList {
153
+ "count/resourceclaims.resource.k8s.io" : resource .MustParse ("1" ),
154
+ "gpu.deviceclass.resource.k8s.io/devices" : resource .MustParse ("2" ),
155
+ },
156
+ },
157
+ "prioritized-list-multiple-subrequests-allocation-mode-all" : {
158
+ claim : func () * api.ResourceClaim {
159
+ claim := validClaimWithPrioritizedList .DeepCopy ()
160
+ claim .Spec .Devices .Requests [0 ].FirstAvailable = append (claim .Spec .Devices .Requests [0 ].FirstAvailable , api.DeviceSubRequest {
161
+ Name : "subreq-1" ,
162
+ DeviceClassName : classGpu ,
163
+ AllocationMode : api .DeviceAllocationModeAll ,
164
+ })
165
+ return claim
166
+ }(),
167
+ usage : corev1.ResourceList {
168
+ "count/resourceclaims.resource.k8s.io" : resource .MustParse ("1" ),
169
+ "gpu.deviceclass.resource.k8s.io/devices" : resource .MustParse ("32" ),
170
+ },
171
+ },
172
+ "prioritized-list-multiple-subrequests-different-device-classes" : {
173
+ claim : func () * api.ResourceClaim {
174
+ claim := validClaimWithPrioritizedList .DeepCopy ()
175
+ claim .Spec .Devices .Requests [0 ].FirstAvailable = append (claim .Spec .Devices .Requests [0 ].FirstAvailable , api.DeviceSubRequest {
176
+ Name : "subreq-1" ,
177
+ DeviceClassName : classTpu ,
178
+ AllocationMode : api .DeviceAllocationModeAll ,
179
+ })
180
+ return claim
181
+ }(),
182
+ usage : corev1.ResourceList {
183
+ "count/resourceclaims.resource.k8s.io" : resource .MustParse ("1" ),
184
+ "gpu.deviceclass.resource.k8s.io/devices" : resource .MustParse ("1" ),
185
+ "tpu.deviceclass.resource.k8s.io/devices" : resource .MustParse ("32" ),
186
+ },
187
+ },
115
188
}
116
189
for testName , testCase := range testCases {
117
190
t .Run (testName , func (t * testing.T ) {
0 commit comments