Skip to content

Commit 79264a2

Browse files
author
OpenShift Bot
authored
Merge pull request #13177 from deads2k/debug-01-scopes
Merged by openshift-bot
2 parents 1a03d2f + 93874a5 commit 79264a2

File tree

1 file changed

+66
-5
lines changed

1 file changed

+66
-5
lines changed

pkg/quota/api/validation/validation_test.go

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ import (
44
"k8s.io/kubernetes/pkg/api"
55
"k8s.io/kubernetes/pkg/api/resource"
66
"k8s.io/kubernetes/pkg/api/unversioned"
7+
"k8s.io/kubernetes/pkg/api/validation"
78
"k8s.io/kubernetes/pkg/util/validation/field"
89
"testing"
910

1011
quotaapi "github.com/openshift/origin/pkg/quota/api"
1112
)
1213

13-
func TestValidationClusterQuota(t *testing.T) {
14-
spec := api.ResourceQuotaSpec{
14+
func spec(scopes ...api.ResourceQuotaScope) api.ResourceQuotaSpec {
15+
return api.ResourceQuotaSpec{
1516
Hard: api.ResourceList{
1617
api.ResourceCPU: resource.MustParse("100"),
1718
api.ResourceMemory: resource.MustParse("10000"),
@@ -26,8 +27,25 @@ func TestValidationClusterQuota(t *testing.T) {
2627
api.ResourceConfigMaps: resource.MustParse("10"),
2728
api.ResourceSecrets: resource.MustParse("10"),
2829
},
30+
Scopes: scopes,
2931
}
32+
}
3033

34+
func scopeableSpec(scopes ...api.ResourceQuotaScope) api.ResourceQuotaSpec {
35+
return api.ResourceQuotaSpec{
36+
Hard: api.ResourceList{
37+
api.ResourceCPU: resource.MustParse("100"),
38+
api.ResourceMemory: resource.MustParse("10000"),
39+
api.ResourceRequestsCPU: resource.MustParse("100"),
40+
api.ResourceRequestsMemory: resource.MustParse("10000"),
41+
api.ResourceLimitsCPU: resource.MustParse("100"),
42+
api.ResourceLimitsMemory: resource.MustParse("10000"),
43+
},
44+
Scopes: scopes,
45+
}
46+
}
47+
48+
func TestValidationClusterQuota(t *testing.T) {
3149
// storage is not yet supported as a quota tracked resource
3250
invalidQuotaResourceSpec := api.ResourceQuotaSpec{
3351
Hard: api.ResourceList{
@@ -41,7 +59,7 @@ func TestValidationClusterQuota(t *testing.T) {
4159
ObjectMeta: api.ObjectMeta{Name: "good"},
4260
Spec: quotaapi.ClusterResourceQuotaSpec{
4361
Selector: quotaapi.ClusterResourceQuotaSelector{LabelSelector: &unversioned.LabelSelector{MatchLabels: validLabels}},
44-
Quota: spec,
62+
Quota: spec(),
4563
},
4664
},
4765
)
@@ -59,7 +77,7 @@ func TestValidationClusterQuota(t *testing.T) {
5977
ObjectMeta: api.ObjectMeta{Namespace: "bad", Name: "good"},
6078
Spec: quotaapi.ClusterResourceQuotaSpec{
6179
Selector: quotaapi.ClusterResourceQuotaSelector{LabelSelector: &unversioned.LabelSelector{MatchLabels: validLabels}},
62-
Quota: spec,
80+
Quota: spec(),
6381
},
6482
},
6583
T: field.ErrorTypeForbidden,
@@ -69,12 +87,33 @@ func TestValidationClusterQuota(t *testing.T) {
6987
A: quotaapi.ClusterResourceQuota{
7088
ObjectMeta: api.ObjectMeta{Name: "good"},
7189
Spec: quotaapi.ClusterResourceQuotaSpec{
72-
Quota: spec,
90+
Quota: spec(),
91+
},
92+
},
93+
T: field.ErrorTypeRequired,
94+
F: "spec.selector",
95+
},
96+
"ok scope": {
97+
A: quotaapi.ClusterResourceQuota{
98+
ObjectMeta: api.ObjectMeta{Name: "good"},
99+
Spec: quotaapi.ClusterResourceQuotaSpec{
100+
Quota: scopeableSpec(api.ResourceQuotaScopeNotTerminating),
73101
},
74102
},
75103
T: field.ErrorTypeRequired,
76104
F: "spec.selector",
77105
},
106+
"bad scope": {
107+
A: quotaapi.ClusterResourceQuota{
108+
ObjectMeta: api.ObjectMeta{Name: "good"},
109+
Spec: quotaapi.ClusterResourceQuotaSpec{
110+
Selector: quotaapi.ClusterResourceQuotaSelector{LabelSelector: &unversioned.LabelSelector{MatchLabels: validLabels}},
111+
Quota: spec(api.ResourceQuotaScopeNotTerminating),
112+
},
113+
},
114+
T: field.ErrorTypeInvalid,
115+
F: "spec.quota.scopes",
116+
},
78117
"bad quota spec": {
79118
A: quotaapi.ClusterResourceQuota{
80119
ObjectMeta: api.ObjectMeta{Name: "good"},
@@ -103,3 +142,25 @@ func TestValidationClusterQuota(t *testing.T) {
103142
}
104143
}
105144
}
145+
146+
func TestValidationQuota(t *testing.T) {
147+
tests := map[string]struct {
148+
A api.ResourceQuota
149+
T field.ErrorType
150+
F string
151+
}{
152+
"scope": {
153+
A: api.ResourceQuota{
154+
ObjectMeta: api.ObjectMeta{Namespace: "ns", Name: "good"},
155+
Spec: scopeableSpec(api.ResourceQuotaScopeNotTerminating),
156+
},
157+
},
158+
}
159+
for k, v := range tests {
160+
errs := validation.ValidateResourceQuota(&v.A)
161+
if len(errs) != 0 {
162+
t.Errorf("%s: %v", k, errs)
163+
continue
164+
}
165+
}
166+
}

0 commit comments

Comments
 (0)