volcano.sh/volcano@v1.9.0/test/e2e/schedulingaction/guarantee.go (about) 1 package schedulingaction 2 3 import ( 4 "github.com/onsi/ginkgo/v2" 5 "github.com/onsi/gomega" 6 corev1 "k8s.io/api/core/v1" 7 "k8s.io/apimachinery/pkg/api/resource" 8 e2eutil "volcano.sh/volcano/test/e2e/util" 9 ) 10 11 var _ = ginkgo.Describe("Guarantee reserved resource E2E Test", func() { 12 ginkgo.It("one queue reserve all cluster resource", func() { 13 slot := corev1.ResourceList{ 14 corev1.ResourceCPU: resource.MustParse("2000m"), 15 corev1.ResourceMemory: resource.MustParse("2048Mi")} 16 17 ctx := e2eutil.InitTestContext(e2eutil.Options{ 18 NodesNumLimit: 1, 19 NodesResourceLimit: slot, 20 }) 21 defer e2eutil.CleanupTestContext(ctx) 22 23 queue1 := &e2eutil.QueueSpec{ 24 Name: "queue1", 25 Weight: 1, 26 GuaranteeResource: slot, 27 } 28 e2eutil.CreateQueueWithQueueSpec(ctx, queue1) 29 30 queue2 := &e2eutil.QueueSpec{ 31 Name: "queue2", 32 Weight: 1, 33 } 34 e2eutil.CreateQueueWithQueueSpec(ctx, queue2) 35 36 job := &e2eutil.JobSpec{ 37 Queue: "queue2", 38 Tasks: []e2eutil.TaskSpec{ 39 { 40 Img: e2eutil.DefaultNginxImage, 41 Req: corev1.ResourceList{ 42 corev1.ResourceCPU: resource.MustParse("500m"), 43 corev1.ResourceMemory: resource.MustParse("512Mi")}, 44 Min: 1, 45 Rep: 1, 46 }, 47 }, 48 } 49 50 job.Name = "queue2-job" 51 lowReqJob := e2eutil.CreateJob(ctx, job) 52 err := e2eutil.WaitJobPending(ctx, lowReqJob) 53 gomega.Expect(err).NotTo(gomega.HaveOccurred()) 54 }) 55 56 ginkgo.It("one queue reserve some cluster resource, so it is NOT enough to create job", func() { 57 slot := corev1.ResourceList{ 58 corev1.ResourceCPU: resource.MustParse("2000m"), 59 corev1.ResourceMemory: resource.MustParse("2048Mi")} 60 61 ctx := e2eutil.InitTestContext(e2eutil.Options{ 62 NodesNumLimit: 1, 63 NodesResourceLimit: slot, 64 }) 65 defer e2eutil.CleanupTestContext(ctx) 66 67 queue1 := &e2eutil.QueueSpec{ 68 Name: "queue1", 69 Weight: 1, 70 GuaranteeResource: corev1.ResourceList{ 71 corev1.ResourceCPU: resource.MustParse("1000m"), 72 corev1.ResourceMemory: resource.MustParse("1024Mi")}, 73 } 74 e2eutil.CreateQueueWithQueueSpec(ctx, queue1) 75 76 queue2 := &e2eutil.QueueSpec{ 77 Name: "queue2", 78 Weight: 1, 79 } 80 e2eutil.CreateQueueWithQueueSpec(ctx, queue2) 81 82 job := &e2eutil.JobSpec{ 83 Queue: "queue2", 84 Tasks: []e2eutil.TaskSpec{ 85 { 86 Img: e2eutil.DefaultNginxImage, 87 Req: corev1.ResourceList{ 88 corev1.ResourceCPU: resource.MustParse("1500m"), 89 corev1.ResourceMemory: resource.MustParse("512Mi")}, 90 Min: 1, 91 Rep: 1, 92 }, 93 }, 94 } 95 96 job.Name = "queue2-job" 97 lowReqJob := e2eutil.CreateJob(ctx, job) 98 err := e2eutil.WaitJobPending(ctx, lowReqJob) 99 gomega.Expect(err).NotTo(gomega.HaveOccurred()) 100 }) 101 })