@@ -607,196 +607,6 @@ func TestZoneSelectorSpreadPriority(t *testing.T) {
607
607
}
608
608
}
609
609
610
- func TestZoneSpreadPriority (t * testing.T ) {
611
- labels1 := map [string ]string {
612
- "foo" : "bar" ,
613
- "baz" : "blah" ,
614
- }
615
- labels2 := map [string ]string {
616
- "bar" : "foo" ,
617
- "baz" : "blah" ,
618
- }
619
- zone1 := map [string ]string {
620
- "zone" : "zone1" ,
621
- }
622
- zone2 := map [string ]string {
623
- "zone" : "zone2" ,
624
- }
625
- nozone := map [string ]string {
626
- "name" : "value" ,
627
- }
628
- zone0Spec := v1.PodSpec {
629
- NodeName : "machine01" ,
630
- }
631
- zone1Spec := v1.PodSpec {
632
- NodeName : "machine11" ,
633
- }
634
- zone2Spec := v1.PodSpec {
635
- NodeName : "machine21" ,
636
- }
637
- labeledNodes := map [string ]map [string ]string {
638
- "machine01" : nozone , "machine02" : nozone ,
639
- "machine11" : zone1 , "machine12" : zone1 ,
640
- "machine21" : zone2 , "machine22" : zone2 ,
641
- }
642
- tests := []struct {
643
- pod * v1.Pod
644
- pods []* v1.Pod
645
- nodes map [string ]map [string ]string
646
- services []* v1.Service
647
- expectedList framework.NodeScoreList
648
- name string
649
- }{
650
- {
651
- pod : new (v1.Pod ),
652
- nodes : labeledNodes ,
653
- expectedList : []framework.NodeScore {{Name : "machine11" , Score : framework .MaxNodeScore }, {Name : "machine12" , Score : framework .MaxNodeScore },
654
- {Name : "machine21" , Score : framework .MaxNodeScore }, {Name : "machine22" , Score : framework .MaxNodeScore },
655
- {Name : "machine01" , Score : 0 }, {Name : "machine02" , Score : 0 }},
656
- name : "nothing scheduled" ,
657
- },
658
- {
659
- pod : & v1.Pod {ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
660
- pods : []* v1.Pod {{Spec : zone1Spec }},
661
- nodes : labeledNodes ,
662
- expectedList : []framework.NodeScore {{Name : "machine11" , Score : framework .MaxNodeScore }, {Name : "machine12" , Score : framework .MaxNodeScore },
663
- {Name : "machine21" , Score : framework .MaxNodeScore }, {Name : "machine22" , Score : framework .MaxNodeScore },
664
- {Name : "machine01" , Score : 0 }, {Name : "machine02" , Score : 0 }},
665
- name : "no services" ,
666
- },
667
- {
668
- pod : & v1.Pod {ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
669
- pods : []* v1.Pod {{Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels2 }}},
670
- nodes : labeledNodes ,
671
- services : []* v1.Service {{Spec : v1.ServiceSpec {Selector : map [string ]string {"key" : "value" }}}},
672
- expectedList : []framework.NodeScore {{Name : "machine11" , Score : framework .MaxNodeScore }, {Name : "machine12" , Score : framework .MaxNodeScore },
673
- {Name : "machine21" , Score : framework .MaxNodeScore }, {Name : "machine22" , Score : framework .MaxNodeScore },
674
- {Name : "machine01" , Score : 0 }, {Name : "machine02" , Score : 0 }},
675
- name : "different services" ,
676
- },
677
- {
678
- pod : & v1.Pod {ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
679
- pods : []* v1.Pod {
680
- {Spec : zone0Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels2 }},
681
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels2 }},
682
- {Spec : zone2Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
683
- },
684
- nodes : labeledNodes ,
685
- services : []* v1.Service {{Spec : v1.ServiceSpec {Selector : labels1 }}},
686
- expectedList : []framework.NodeScore {{Name : "machine11" , Score : framework .MaxNodeScore }, {Name : "machine12" , Score : framework .MaxNodeScore },
687
- {Name : "machine21" , Score : 0 }, {Name : "machine22" , Score : 0 },
688
- {Name : "machine01" , Score : 0 }, {Name : "machine02" , Score : 0 }},
689
- name : "three pods, one service pod" ,
690
- },
691
- {
692
- pod : & v1.Pod {ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
693
- pods : []* v1.Pod {
694
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels2 }},
695
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
696
- {Spec : zone2Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
697
- },
698
- nodes : labeledNodes ,
699
- services : []* v1.Service {{Spec : v1.ServiceSpec {Selector : labels1 }}},
700
- expectedList : []framework.NodeScore {{Name : "machine11" , Score : 50 }, {Name : "machine12" , Score : 50 },
701
- {Name : "machine21" , Score : 50 }, {Name : "machine22" , Score : 50 },
702
- {Name : "machine01" , Score : 0 }, {Name : "machine02" , Score : 0 }},
703
- name : "three pods, two service pods on different machines" ,
704
- },
705
- {
706
- pod : & v1.Pod {ObjectMeta : metav1.ObjectMeta {Labels : labels1 , Namespace : metav1 .NamespaceDefault }},
707
- pods : []* v1.Pod {
708
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
709
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 , Namespace : metav1 .NamespaceDefault }},
710
- {Spec : zone2Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
711
- {Spec : zone2Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 , Namespace : "ns1" }},
712
- },
713
- nodes : labeledNodes ,
714
- services : []* v1.Service {{Spec : v1.ServiceSpec {Selector : labels1 }, ObjectMeta : metav1.ObjectMeta {Namespace : metav1 .NamespaceDefault }}},
715
- expectedList : []framework.NodeScore {{Name : "machine11" , Score : 0 }, {Name : "machine12" , Score : 0 },
716
- {Name : "machine21" , Score : framework .MaxNodeScore }, {Name : "machine22" , Score : framework .MaxNodeScore },
717
- {Name : "machine01" , Score : 0 }, {Name : "machine02" , Score : 0 }},
718
- name : "three service label match pods in different namespaces" ,
719
- },
720
- {
721
- pod : & v1.Pod {ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
722
- pods : []* v1.Pod {
723
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels2 }},
724
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
725
- {Spec : zone2Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
726
- {Spec : zone2Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
727
- },
728
- nodes : labeledNodes ,
729
- services : []* v1.Service {{Spec : v1.ServiceSpec {Selector : labels1 }}},
730
- expectedList : []framework.NodeScore {{Name : "machine11" , Score : 66 }, {Name : "machine12" , Score : 66 },
731
- {Name : "machine21" , Score : 33 }, {Name : "machine22" , Score : 33 },
732
- {Name : "machine01" , Score : 0 }, {Name : "machine02" , Score : 0 }},
733
- name : "four pods, three service pods" ,
734
- },
735
- {
736
- pod : & v1.Pod {ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
737
- pods : []* v1.Pod {
738
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels2 }},
739
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
740
- {Spec : zone2Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
741
- },
742
- nodes : labeledNodes ,
743
- services : []* v1.Service {{Spec : v1.ServiceSpec {Selector : map [string ]string {"baz" : "blah" }}}},
744
- expectedList : []framework.NodeScore {{Name : "machine11" , Score : 33 }, {Name : "machine12" , Score : 33 },
745
- {Name : "machine21" , Score : 66 }, {Name : "machine22" , Score : 66 },
746
- {Name : "machine01" , Score : 0 }, {Name : "machine02" , Score : 0 }},
747
- name : "service with partial pod label matches" ,
748
- },
749
- {
750
- pod : & v1.Pod {ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
751
- pods : []* v1.Pod {
752
- {Spec : zone0Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
753
- {Spec : zone1Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
754
- {Spec : zone2Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
755
- {Spec : zone2Spec , ObjectMeta : metav1.ObjectMeta {Labels : labels1 }},
756
- },
757
- nodes : labeledNodes ,
758
- services : []* v1.Service {{Spec : v1.ServiceSpec {Selector : labels1 }}},
759
- expectedList : []framework.NodeScore {{Name : "machine11" , Score : 75 }, {Name : "machine12" , Score : 75 },
760
- {Name : "machine21" , Score : 50 }, {Name : "machine22" , Score : 50 },
761
- {Name : "machine01" , Score : 0 }, {Name : "machine02" , Score : 0 }},
762
- name : "service pod on non-zoned node" ,
763
- },
764
- }
765
- // these local variables just make sure controllerLister\replicaSetLister\statefulSetLister not nil
766
- // when construct metaDataProducer
767
- sss := []* apps.StatefulSet {{Spec : apps.StatefulSetSpec {Selector : & metav1.LabelSelector {MatchLabels : map [string ]string {"foo" : "bar" }}}}}
768
- rcs := []* v1.ReplicationController {{Spec : v1.ReplicationControllerSpec {Selector : map [string ]string {"foo" : "bar" }}}}
769
- rss := []* apps.ReplicaSet {{Spec : apps.ReplicaSetSpec {Selector : & metav1.LabelSelector {MatchLabels : map [string ]string {"foo" : "bar" }}}}}
770
-
771
- for _ , test := range tests {
772
- t .Run (test .name , func (t * testing.T ) {
773
- nodes := makeLabeledNodeList (labeledNodes )
774
- snapshot := nodeinfosnapshot .NewSnapshot (nodeinfosnapshot .CreateNodeInfoMap (test .pods , nodes ))
775
- zoneSpread := ServiceAntiAffinity {podLister : snapshot .Pods (), serviceLister : fakelisters .ServiceLister (test .services ), labels : []string {"zone" }}
776
-
777
- metaDataProducer := NewMetadataFactory (
778
- fakelisters .ServiceLister (test .services ),
779
- fakelisters .ControllerLister (rcs ),
780
- fakelisters .ReplicaSetLister (rss ),
781
- fakelisters .StatefulSetLister (sss ),
782
- 1 ,
783
- )
784
- metaData := metaDataProducer (test .pod , nodes , snapshot )
785
- list , err := runMapReducePriority (zoneSpread .CalculateAntiAffinityPriorityMap , zoneSpread .CalculateAntiAffinityPriorityReduce , metaData , test .pod , snapshot , makeLabeledNodeList (test .nodes ))
786
- if err != nil {
787
- t .Errorf ("unexpected error: %v" , err )
788
- }
789
-
790
- // sort the two lists to avoid failures on account of different ordering
791
- sortNodeScoreList (test .expectedList )
792
- sortNodeScoreList (list )
793
- if ! reflect .DeepEqual (test .expectedList , list ) {
794
- t .Errorf ("expected %#v, got %#v" , test .expectedList , list )
795
- }
796
- })
797
- }
798
- }
799
-
800
610
func makeLabeledNodeList (nodeMap map [string ]map [string ]string ) []* v1.Node {
801
611
nodes := make ([]* v1.Node , 0 , len (nodeMap ))
802
612
for nodeName , labels := range nodeMap {
0 commit comments