diff --git a/pkg/registry/scheduling/podgroup/declarative_validation_test.go b/pkg/registry/scheduling/podgroup/declarative_validation_test.go index 2f08190f312..25801429fd2 100644 --- a/pkg/registry/scheduling/podgroup/declarative_validation_test.go +++ b/pkg/registry/scheduling/podgroup/declarative_validation_test.go @@ -331,6 +331,12 @@ func testDeclarativeValidate(t *testing.T, apiVersion string) { field.TooMany(field.NewPath("spec", "resourceClaims"), scheduling.MaxPodGroupResourceClaims+1, scheduling.MaxPodGroupResourceClaims).WithOrigin("maxItems"), }, }, + "empty claim name": { + input: mkValidPodGroup(addResourceClaims(scheduling.PodGroupResourceClaim{Name: "", ResourceClaimName: new("resource-claim")})), + expectedErrs: field.ErrorList{ + field.Required(field.NewPath("spec", "resourceClaims").Index(0).Child("name"), ""), + }, + }, } for k, tc := range testCases { t.Run(k, func(t *testing.T) { @@ -685,6 +691,18 @@ func testDeclarativeValidateStatusUpdate(t *testing.T, apiVersion string) { field.Duplicate(field.NewPath("status", "resourceClaimStatuses").Index(2), nil), }, }, + "too many resource claim statuses": { + oldObj: mkValidPodGroup(setResourceVersion("1"), + addManyResourceClaims(scheduling.MaxPodGroupResourceClaims+1), + ), + updateObj: mkValidPodGroup(setResourceVersion("1"), + addManyResourceClaims(scheduling.MaxPodGroupResourceClaims+1), + addManyResourceClaimStatuses(scheduling.MaxPodGroupResourceClaims+1), + ), + expectedErrs: field.ErrorList{ + field.TooMany(field.NewPath("status", "resourceClaimStatuses"), scheduling.MaxPodGroupResourceClaims+1, scheduling.MaxPodGroupResourceClaims).WithOrigin("maxItems"), + }, + }, } for k, tc := range testCases { t.Run(k, func(t *testing.T) { @@ -788,6 +806,28 @@ func addResourceClaimStatuses(statuses ...scheduling.PodGroupResourceClaimStatus } } +func addManyResourceClaims(n int) func(obj *scheduling.PodGroup) { + claims := make([]scheduling.PodGroupResourceClaim, n) + for i := range n { + claims[i] = scheduling.PodGroupResourceClaim{ + Name: "c" + strconv.Itoa(i), + ResourceClaimName: new("r" + strconv.Itoa(i)), + } + } + return addResourceClaims(claims...) +} + +func addManyResourceClaimStatuses(n int) func(obj *scheduling.PodGroup) { + statuses := make([]scheduling.PodGroupResourceClaimStatus, n) + for i := range n { + statuses[i] = scheduling.PodGroupResourceClaimStatus{ + Name: "c" + strconv.Itoa(i), + ResourceClaimName: new("r" + strconv.Itoa(i)), + } + } + return addResourceClaimStatuses(statuses...) +} + func addCondition(conditionType string) func(obj *scheduling.PodGroup) { return func(obj *scheduling.PodGroup) { obj.Status.Conditions = append(obj.Status.Conditions, metav1.Condition{ diff --git a/pkg/registry/scheduling/workload/declarative_validation_test.go b/pkg/registry/scheduling/workload/declarative_validation_test.go index 7a3b98186ee..4c6f02466d1 100644 --- a/pkg/registry/scheduling/workload/declarative_validation_test.go +++ b/pkg/registry/scheduling/workload/declarative_validation_test.go @@ -349,6 +349,16 @@ func testDeclarativeValidate(t *testing.T, apiVersion string) { field.TooMany(field.NewPath("spec", "podGroupTemplates").Index(0).Child("resourceClaims"), scheduling.MaxPodGroupResourceClaims+1, scheduling.MaxPodGroupResourceClaims).WithOrigin("maxItems"), }, }, + "empty claim name": { + input: mkValidWorkload(addResourceClaims(scheduling.PodGroupResourceClaim{Name: "", ResourceClaimName: new("resource-claim")})), + expectedErrs: field.ErrorList{ + field.Required(field.NewPath("spec", "podGroupTemplates").Index(0).Child("resourceClaims").Index(0).Child("name"), ""), + }, + }, + "schedulingConstraints set with TAS disabled": { + input: mkValidWorkload(setSchedulingConstraints(0)), + expectedErrs: field.ErrorList{field.Forbidden(field.NewPath("spec", "podGroupTemplates").Index(0).Child("schedulingConstraints"), "")}, + }, } for k, tc := range testCases { t.Run(k, func(t *testing.T) {