volcano/test/e2e/schedulingaction/guarantee.go

102 lines
2.6 KiB
Go

package schedulingaction
import (
"github.com/onsi/ginkgo/v2"
"github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
e2eutil "volcano.sh/volcano/test/e2e/util"
)
var _ = ginkgo.Describe("Guarantee reserved resource E2E Test", func() {
ginkgo.It("one queue reserve all cluster resource", func() {
slot := corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("2000m"),
corev1.ResourceMemory: resource.MustParse("2048Mi")}
ctx := e2eutil.InitTestContext(e2eutil.Options{
NodesNumLimit: 1,
NodesResourceLimit: slot,
})
defer e2eutil.CleanupTestContext(ctx)
queue1 := &e2eutil.QueueSpec{
Name: "queue1",
Weight: 1,
GuaranteeResource: slot,
}
e2eutil.CreateQueueWithQueueSpec(ctx, queue1)
queue2 := &e2eutil.QueueSpec{
Name: "queue2",
Weight: 1,
}
e2eutil.CreateQueueWithQueueSpec(ctx, queue2)
job := &e2eutil.JobSpec{
Queue: "queue2",
Tasks: []e2eutil.TaskSpec{
{
Img: e2eutil.DefaultNginxImage,
Req: corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("500m"),
corev1.ResourceMemory: resource.MustParse("512Mi")},
Min: 1,
Rep: 1,
},
},
}
job.Name = "queue2-job"
lowReqJob := e2eutil.CreateJob(ctx, job)
err := e2eutil.WaitJobPending(ctx, lowReqJob)
gomega.Expect(err).NotTo(gomega.HaveOccurred())
})
ginkgo.It("one queue reserve some cluster resource, so it is NOT enough to create job", func() {
slot := corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("2000m"),
corev1.ResourceMemory: resource.MustParse("2048Mi")}
ctx := e2eutil.InitTestContext(e2eutil.Options{
NodesNumLimit: 1,
NodesResourceLimit: slot,
})
defer e2eutil.CleanupTestContext(ctx)
queue1 := &e2eutil.QueueSpec{
Name: "queue1",
Weight: 1,
GuaranteeResource: corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("1000m"),
corev1.ResourceMemory: resource.MustParse("1024Mi")},
}
e2eutil.CreateQueueWithQueueSpec(ctx, queue1)
queue2 := &e2eutil.QueueSpec{
Name: "queue2",
Weight: 1,
}
e2eutil.CreateQueueWithQueueSpec(ctx, queue2)
job := &e2eutil.JobSpec{
Queue: "queue2",
Tasks: []e2eutil.TaskSpec{
{
Img: e2eutil.DefaultNginxImage,
Req: corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("1500m"),
corev1.ResourceMemory: resource.MustParse("512Mi")},
Min: 1,
Rep: 1,
},
},
}
job.Name = "queue2-job"
lowReqJob := e2eutil.CreateJob(ctx, job)
err := e2eutil.WaitJobPending(ctx, lowReqJob)
gomega.Expect(err).NotTo(gomega.HaveOccurred())
})
})