test: add validation test for duplicate DeviceConstraint.Requests

This commit is contained in:
yongruilin
2025-10-09 07:12:15 +00:00
parent 63f8c0a4fe
commit c81fc12900

View File

@@ -138,6 +138,12 @@ func testDeclarativeValidate(t *testing.T, apiVersion string) {
field.TooMany(field.NewPath("spec", "devices", "config").Index(0).Child("requests"), 33, 32).WithOrigin("maxItems"),
},
},
"invalid constraint requests, duplicate name": {
input: mkValidResourceClaim(tweakDuplicateConstraintRequest("req-0")),
expectedErrs: field.ErrorList{
field.Duplicate(field.NewPath("spec", "devices", "constraints").Index(0).Child("requests").Index(1), "req-0"),
},
},
"valid firstAvailable, max allowed": {
input: mkValidResourceClaim(tweakFirstAvailable(8)),
},
@@ -306,6 +312,15 @@ func tweakConfigRequests(count int) func(*resource.ResourceClaim) {
}
}
func tweakDuplicateConstraintRequest(name string) func(*resource.ResourceClaim) {
return func(rc *resource.ResourceClaim) {
if len(rc.Spec.Devices.Constraints) == 0 {
rc.Spec.Devices.Constraints = append(rc.Spec.Devices.Constraints, mkDeviceConstraint())
}
rc.Spec.Devices.Constraints[0].Requests = append(rc.Spec.Devices.Constraints[0].Requests, name)
}
}
func tweakFirstAvailable(items int) func(*resource.ResourceClaim) {
return func(rc *resource.ResourceClaim) {
rc.Spec.Devices.Requests[0].Exactly = nil