@@ -36,28 +36,9 @@ import (
3636 "sigs.k8s.io/kueue/pkg/controller/jobframework"
3737 "sigs.k8s.io/kueue/pkg/controller/jobs/pod"
3838 podconstants "sigs.k8s.io/kueue/pkg/controller/jobs/pod/constants"
39- "sigs.k8s.io/kueue/pkg/features"
4039 utiltesting "sigs.k8s.io/kueue/pkg/util/testing"
4140 utiltestingapi "sigs.k8s.io/kueue/pkg/util/testing/v1beta2"
42- testingappwrapper "sigs.k8s.io/kueue/pkg/util/testingjobs/appwrapper"
43- testingdeployment "sigs.k8s.io/kueue/pkg/util/testingjobs/deployment"
44- testingjaxjob "sigs.k8s.io/kueue/pkg/util/testingjobs/jaxjob"
45- testingjob "sigs.k8s.io/kueue/pkg/util/testingjobs/job"
46- testingjobset "sigs.k8s.io/kueue/pkg/util/testingjobs/jobset"
47- testingleaderworkerset "sigs.k8s.io/kueue/pkg/util/testingjobs/leaderworkerset"
48- testingmpijob "sigs.k8s.io/kueue/pkg/util/testingjobs/mpijob"
49- testingpaddlejob "sigs.k8s.io/kueue/pkg/util/testingjobs/paddlejob"
5041 podtesting "sigs.k8s.io/kueue/pkg/util/testingjobs/pod"
51- testingpytorchjob "sigs.k8s.io/kueue/pkg/util/testingjobs/pytorchjob"
52- testingraycluster "sigs.k8s.io/kueue/pkg/util/testingjobs/raycluster"
53- testingrayjob "sigs.k8s.io/kueue/pkg/util/testingjobs/rayjob"
54- testingrayservice "sigs.k8s.io/kueue/pkg/util/testingjobs/rayservice"
55- testingsparkapplication "sigs.k8s.io/kueue/pkg/util/testingjobs/sparkapplication"
56- testingstatefulset "sigs.k8s.io/kueue/pkg/util/testingjobs/statefulset"
57- testingtfjob "sigs.k8s.io/kueue/pkg/util/testingjobs/tfjob"
58- testingtrainjob "sigs.k8s.io/kueue/pkg/util/testingjobs/trainjob"
59- testingxgboostjob "sigs.k8s.io/kueue/pkg/util/testingjobs/xgboostjob"
60- "sigs.k8s.io/kueue/pkg/workload"
6142 "sigs.k8s.io/kueue/test/util"
6243)
6344
@@ -641,261 +622,8 @@ var _ = ginkgo.Describe("Pod groups", ginkgo.Label("area:singlecluster", "featur
641622 g .Expect (k8sClient .Get (ctx , pKey , & corev1.Pod {})).To (utiltesting .BeNotFoundError ())
642623 }, util .Timeout , util .Interval ).Should (gomega .Succeed ())
643624
644- gKey := client.ObjectKey {Namespace : ns .Name , Name : "test-group" }
645- util .ExpectWorkloadsFinalizedOrGone (ctx , k8sClient , gKey )
646625 })
647626 })
648627 })
649628})
650629
651- var _ = ginkgo .Describe ("Pod labels" , ginkgo .Label ("area:singlecluster" , "feature:pod" , "feature:scheduler-library" ), func () {
652- var ns * corev1.Namespace
653- var lq * kueue.LocalQueue
654- var cq * kueue.ClusterQueue
655-
656- ginkgo .BeforeEach (func () {
657- features .SetFeatureGateDuringTest (ginkgo .GinkgoTB (), features .SchedulerLibraryIntegration , true )
658- ns = util .CreateNamespaceFromPrefixWithLog (ctx , k8sClient , "e2e-scheduler-lib-" )
659-
660- rf := utiltestingapi .MakeResourceFlavor ("rf" ).Obj ()
661- util .MustCreate (ctx , k8sClient , rf )
662-
663- cq = utiltestingapi .MakeClusterQueue ("cq" ).
664- ResourceGroup (* utiltestingapi .MakeFlavorQuotas ("rf" ).Resource (corev1 .ResourceCPU , "10" ).Obj ()).
665- Obj ()
666- util .MustCreate (ctx , k8sClient , cq )
667-
668- lq = utiltestingapi .MakeLocalQueue ("lq" , ns .Name ).ClusterQueue (cq .Name ).Obj ()
669- util .MustCreate (ctx , k8sClient , lq )
670- })
671-
672- ginkgo .AfterEach (func () {
673- gomega .Expect (util .DeleteNamespace (ctx , k8sClient , ns )).To (gomega .Succeed ())
674- })
675-
676- type jobConfig struct {
677- name string
678- createObj func (nsName , queueName string ) client.Object
679- }
680-
681- configs := []jobConfig {
682- {
683- name : "BatchJob" ,
684- createObj : func (nsName , queueName string ) client.Object {
685- return testingjob .MakeJob ("test-batch-job" , nsName ).
686- Queue (kueue .LocalQueueName (queueName )).
687- Image (util .GetAgnHostImage (), util .BehaviorWaitForDeletion ).
688- RequestAndLimit (corev1 .ResourceCPU , "1" ).
689- Obj ()
690- },
691- },
692- {
693- name : "PodGroup" ,
694- createObj : func (nsName , queueName string ) client.Object {
695- p := podtesting .MakePod ("test-pod-0" , nsName ).
696- Queue (queueName ).
697- Image (util .GetAgnHostImage (), util .BehaviorWaitForDeletion ).
698- RequestAndLimit (corev1 .ResourceCPU , "1" ).
699- Obj ()
700- pod .SetPodGroupName (p , "test-pod-group" )
701- p .Annotations [podconstants .GroupTotalCountAnnotation ] = "1"
702- return p
703- },
704- },
705- {
706- name : "StatefulSet" ,
707- createObj : func (nsName , queueName string ) client.Object {
708- return testingstatefulset .MakeStatefulSet ("test-sts" , nsName ).
709- Queue (queueName ).
710- Image (util .GetAgnHostImage (), util .BehaviorWaitForDeletion ).
711- RequestAndLimit (corev1 .ResourceCPU , "1" ).
712- Replicas (1 ).
713- Obj ()
714- },
715- },
716- {
717- name : "Deployment" ,
718- createObj : func (nsName , queueName string ) client.Object {
719- return testingdeployment .MakeDeployment ("test-deploy" , nsName ).
720- Queue (queueName ).
721- Image (util .GetAgnHostImage (), util .BehaviorWaitForDeletion ).
722- RequestAndLimit (corev1 .ResourceCPU , "1" ).
723- Replicas (1 ).
724- Obj ()
725- },
726- },
727- {
728- name : "JobSet" ,
729- createObj : func (nsName , queueName string ) client.Object {
730- return testingjobset .MakeJobSet ("test-jobset" , nsName ).
731- Queue (queueName ).
732- ReplicatedJobs (testingjobset.ReplicatedJobRequirements {
733- Name : "replicated-job" ,
734- Replicas : 1 ,
735- Parallelism : 1 ,
736- Completions : 1 ,
737- Image : util .GetAgnHostImage (),
738- }).
739- Obj ()
740- },
741- },
742- {
743- name : "LeaderWorkerSet" ,
744- createObj : func (nsName , queueName string ) client.Object {
745- return testingleaderworkerset .MakeLeaderWorkerSet ("test-lws" , nsName ).
746- Queue (queueName ).
747- Obj ()
748- },
749- },
750- {
751- name : "PyTorchJob" ,
752- createObj : func (nsName , queueName string ) client.Object {
753- return testingpytorchjob .MakePyTorchJob ("test-pytorch" , nsName ).
754- PyTorchReplicaSpecsDefault ().
755- Queue (queueName ).
756- Obj ()
757- },
758- },
759- {
760- name : "TFJob" ,
761- createObj : func (nsName , queueName string ) client.Object {
762- return testingtfjob .MakeTFJob ("test-tf" , nsName ).
763- TFReplicaSpecsDefault ().
764- Queue (queueName ).
765- Obj ()
766- },
767- },
768- {
769- name : "MPIJob" ,
770- createObj : func (nsName , queueName string ) client.Object {
771- return testingmpijob .MakeMPIJob ("test-mpi" , nsName ).
772- GenericLauncherAndWorker ().
773- Queue (queueName ).
774- Obj ()
775- },
776- },
777- {
778- name : "PaddleJob" ,
779- createObj : func (nsName , queueName string ) client.Object {
780- return testingpaddlejob .MakePaddleJob ("test-paddle" , nsName ).
781- Queue (queueName ).
782- Obj ()
783- },
784- },
785- {
786- name : "XGBoostJob" ,
787- createObj : func (nsName , queueName string ) client.Object {
788- return testingxgboostjob .MakeXGBoostJob ("test-xgboost" , nsName ).
789- Queue (queueName ).
790- Obj ()
791- },
792- },
793- {
794- name : "JAXJob" ,
795- createObj : func (nsName , queueName string ) client.Object {
796- return testingjaxjob .MakeJAXJob ("test-jax" , nsName ).
797- Queue (queueName ).
798- Obj ()
799- },
800- },
801- {
802- name : "RayJob" ,
803- createObj : func (nsName , queueName string ) client.Object {
804- return testingrayjob .MakeJob ("test-rayjob" , nsName ).
805- Queue (queueName ).
806- Obj ()
807- },
808- },
809- {
810- name : "RayCluster" ,
811- createObj : func (nsName , queueName string ) client.Object {
812- return testingraycluster .MakeCluster ("test-raycluster" , nsName ).
813- Queue (queueName ).
814- Obj ()
815- },
816- },
817- {
818- name : "RayService" ,
819- createObj : func (nsName , queueName string ) client.Object {
820- return testingrayservice .MakeService ("test-rayservice" , nsName ).
821- Queue (queueName ).
822- Obj ()
823- },
824- },
825- {
826- name : "AppWrapper" ,
827- createObj : func (nsName , queueName string ) client.Object {
828- return testingappwrapper .MakeAppWrapper ("test-appwrapper" , nsName ).
829- Queue (queueName ).
830- Obj ()
831- },
832- },
833- {
834- name : "TrainJob" ,
835- createObj : func (nsName , queueName string ) client.Object {
836- return testingtrainjob .MakeTrainJob ("test-trainjob" , nsName ).
837- Queue (queueName ).
838- Obj ()
839- },
840- },
841- {
842- name : "SparkApplication" ,
843- createObj : func (nsName , queueName string ) client.Object {
844- return testingsparkapplication .MakeSparkApplication ("test-spark" , nsName ).
845- Queue (queueName ).
846- Obj ()
847- },
848- },
849- }
850-
851- for _ , tc := range configs {
852- ginkgo .It (fmt .Sprintf ("Should admit %s and correctly match created pods using MatchPods" , tc .name ), func () {
853- noisePod := podtesting .MakePod ("noise-pod" , ns .Name ).
854- Queue (lq .Name ).
855- Image (util .GetAgnHostImage (), util .BehaviorWaitForDeletion ).
856- RequestAndLimit (corev1 .ResourceCPU , "1" ).
857- Obj ()
858- pod .SetPodGroupName (noisePod , "noise-group" )
859- noisePod .Annotations [podconstants .GroupTotalCountAnnotation ] = "1"
860- util .MustCreate (ctx , k8sClient , noisePod )
861-
862- obj := tc .createObj (ns .Name , lq .Name )
863- util .MustCreate (ctx , k8sClient , obj )
864-
865- var wlList kueue.WorkloadList
866- gomega .Eventually (func (g gomega.Gomega ) {
867- g .Expect (k8sClient .List (ctx , & wlList , client .InNamespace (ns .Name ))).To (gomega .Succeed ())
868- g .Expect (wlList .Items ).To (gomega .HaveLen (2 ))
869- }, util .Timeout , util .Interval ).Should (gomega .Succeed ())
870-
871- var targetWl * kueue.Workload
872- for i := range wlList .Items {
873- if wlList .Items [i ].Name != "noise-group" {
874- targetWl = & wlList .Items [i ]
875- break
876- }
877- }
878- gomega .Expect (targetWl ).NotTo (gomega .BeNil (), "target workload should exist" )
879- util .ExpectWorkloadsToBeAdmittedByKeys (ctx , k8sClient , client .ObjectKeyFromObject (targetWl ))
880-
881- var podList corev1.PodList
882- gomega .Eventually (func (g gomega.Gomega ) {
883- g .Expect (k8sClient .List (ctx , & podList , client .InNamespace (ns .Name ))).To (gomega .Succeed ())
884- g .Expect (podList .Items ).To (gomega .HaveLen (2 ))
885-
886- var allPods []* corev1.Pod
887- var targetPods []* corev1.Pod
888- for i := range podList .Items {
889- p := & podList .Items [i ]
890- allPods = append (allPods , p )
891- if p .Name != "noise-pod" {
892- targetPods = append (targetPods , p )
893- }
894- }
895-
896- matched := workload .MatchPods (targetWl , allPods )
897- g .Expect (matched ).To (gomega .ConsistOf (targetPods ), "MatchPods should return only target pods for workload %s" , targetWl .Name )
898- }, util .Timeout , util .Interval ).Should (gomega .Succeed ())
899- })
900- }
901- })
0 commit comments