mirror of https://github.com/k3s-io/k3s
update e2e test for resourceQuota support on extended resources
parent
fde4f6f9b0
commit
9ea565e352
|
@ -41,6 +41,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
var classGold string = "gold"
|
var classGold string = "gold"
|
||||||
|
var extendedResourceName string = "example.com/dongle"
|
||||||
|
|
||||||
var _ = SIGDescribe("ResourceQuota", func() {
|
var _ = SIGDescribe("ResourceQuota", func() {
|
||||||
f := framework.NewDefaultFramework("resourcequota")
|
f := framework.NewDefaultFramework("resourcequota")
|
||||||
|
@ -368,9 +369,12 @@ var _ = SIGDescribe("ResourceQuota", func() {
|
||||||
By("Creating a Pod that fits quota")
|
By("Creating a Pod that fits quota")
|
||||||
podName := "test-pod"
|
podName := "test-pod"
|
||||||
requests := v1.ResourceList{}
|
requests := v1.ResourceList{}
|
||||||
|
limits := v1.ResourceList{}
|
||||||
requests[v1.ResourceCPU] = resource.MustParse("500m")
|
requests[v1.ResourceCPU] = resource.MustParse("500m")
|
||||||
requests[v1.ResourceMemory] = resource.MustParse("252Mi")
|
requests[v1.ResourceMemory] = resource.MustParse("252Mi")
|
||||||
pod := newTestPodForQuota(f, podName, requests, v1.ResourceList{})
|
requests[v1.ResourceName(extendedResourceName)] = resource.MustParse("2")
|
||||||
|
limits[v1.ResourceName(extendedResourceName)] = resource.MustParse("2")
|
||||||
|
pod := newTestPodForQuota(f, podName, requests, limits)
|
||||||
pod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(pod)
|
pod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(pod)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
podToUpdate := pod
|
podToUpdate := pod
|
||||||
|
@ -380,6 +384,7 @@ var _ = SIGDescribe("ResourceQuota", func() {
|
||||||
usedResources[v1.ResourcePods] = resource.MustParse("1")
|
usedResources[v1.ResourcePods] = resource.MustParse("1")
|
||||||
usedResources[v1.ResourceCPU] = requests[v1.ResourceCPU]
|
usedResources[v1.ResourceCPU] = requests[v1.ResourceCPU]
|
||||||
usedResources[v1.ResourceMemory] = requests[v1.ResourceMemory]
|
usedResources[v1.ResourceMemory] = requests[v1.ResourceMemory]
|
||||||
|
usedResources[v1.ResourceName(v1.DefaultResourceRequestsPrefix+extendedResourceName)] = requests[v1.ResourceName(extendedResourceName)]
|
||||||
err = waitForResourceQuota(f.ClientSet, f.Namespace.Name, quotaName, usedResources)
|
err = waitForResourceQuota(f.ClientSet, f.Namespace.Name, quotaName, usedResources)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
@ -391,6 +396,17 @@ var _ = SIGDescribe("ResourceQuota", func() {
|
||||||
pod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(pod)
|
pod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(pod)
|
||||||
Expect(err).To(HaveOccurred())
|
Expect(err).To(HaveOccurred())
|
||||||
|
|
||||||
|
By("Not allowing a pod to be created that exceeds remaining quota(validation on extended resources)")
|
||||||
|
requests = v1.ResourceList{}
|
||||||
|
limits = v1.ResourceList{}
|
||||||
|
requests[v1.ResourceCPU] = resource.MustParse("500m")
|
||||||
|
requests[v1.ResourceMemory] = resource.MustParse("100Mi")
|
||||||
|
requests[v1.ResourceName(extendedResourceName)] = resource.MustParse("2")
|
||||||
|
limits[v1.ResourceName(extendedResourceName)] = resource.MustParse("2")
|
||||||
|
pod = newTestPodForQuota(f, "fail-pod-for-extended-resource", requests, limits)
|
||||||
|
pod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(pod)
|
||||||
|
Expect(err).To(HaveOccurred())
|
||||||
|
|
||||||
By("Ensuring a pod cannot update its resource requirements")
|
By("Ensuring a pod cannot update its resource requirements")
|
||||||
// a pod cannot dynamically update its resource requirements.
|
// a pod cannot dynamically update its resource requirements.
|
||||||
requests = v1.ResourceList{}
|
requests = v1.ResourceList{}
|
||||||
|
@ -413,6 +429,7 @@ var _ = SIGDescribe("ResourceQuota", func() {
|
||||||
usedResources[v1.ResourcePods] = resource.MustParse("0")
|
usedResources[v1.ResourcePods] = resource.MustParse("0")
|
||||||
usedResources[v1.ResourceCPU] = resource.MustParse("0")
|
usedResources[v1.ResourceCPU] = resource.MustParse("0")
|
||||||
usedResources[v1.ResourceMemory] = resource.MustParse("0")
|
usedResources[v1.ResourceMemory] = resource.MustParse("0")
|
||||||
|
usedResources[v1.ResourceName(v1.DefaultResourceRequestsPrefix+extendedResourceName)] = resource.MustParse("0")
|
||||||
err = waitForResourceQuota(f.ClientSet, f.Namespace.Name, quotaName, usedResources)
|
err = waitForResourceQuota(f.ClientSet, f.Namespace.Name, quotaName, usedResources)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
})
|
})
|
||||||
|
@ -833,6 +850,8 @@ func newTestResourceQuota(name string) *v1.ResourceQuota {
|
||||||
hard[core.V1ResourceByStorageClass(classGold, v1.ResourceRequestsStorage)] = resource.MustParse("10Gi")
|
hard[core.V1ResourceByStorageClass(classGold, v1.ResourceRequestsStorage)] = resource.MustParse("10Gi")
|
||||||
// test quota on discovered resource type
|
// test quota on discovered resource type
|
||||||
hard[v1.ResourceName("count/replicasets.extensions")] = resource.MustParse("5")
|
hard[v1.ResourceName("count/replicasets.extensions")] = resource.MustParse("5")
|
||||||
|
// test quota on extended resource
|
||||||
|
hard[v1.ResourceName(v1.DefaultResourceRequestsPrefix+extendedResourceName)] = resource.MustParse("3")
|
||||||
return &v1.ResourceQuota{
|
return &v1.ResourceQuota{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: name},
|
ObjectMeta: metav1.ObjectMeta{Name: name},
|
||||||
Spec: v1.ResourceQuotaSpec{Hard: hard},
|
Spec: v1.ResourceQuotaSpec{Hard: hard},
|
||||||
|
|
Loading…
Reference in New Issue