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  })