mirror of https://github.com/k3s-io/k3s
parent
0f9dfca8e7
commit
8bbf182695
|
@ -236,7 +236,7 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
description string
|
name string
|
||||||
pendingPod *v1.Pod
|
pendingPod *v1.Pod
|
||||||
addedPod *v1.Pod
|
addedPod *v1.Pod
|
||||||
existingPods []*v1.Pod
|
existingPods []*v1.Pod
|
||||||
|
@ -244,7 +244,7 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) {
|
||||||
services []*v1.Service
|
services []*v1.Service
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
description: "no anti-affinity or service affinity exist",
|
name: "no anti-affinity or service affinity exist",
|
||||||
pendingPod: &v1.Pod{
|
pendingPod: &v1.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
||||||
},
|
},
|
||||||
|
@ -267,7 +267,7 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "metadata anti-affinity terms are updated correctly after adding and removing a pod",
|
name: "metadata anti-affinity terms are updated correctly after adding and removing a pod",
|
||||||
pendingPod: &v1.Pod{
|
pendingPod: &v1.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
||||||
},
|
},
|
||||||
|
@ -300,7 +300,7 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "metadata service-affinity data are updated correctly after adding and removing a pod",
|
name: "metadata service-affinity data are updated correctly after adding and removing a pod",
|
||||||
pendingPod: &v1.Pod{
|
pendingPod: &v1.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
||||||
},
|
},
|
||||||
|
@ -324,7 +324,7 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "metadata anti-affinity terms and service affinity data are updated correctly after adding and removing a pod",
|
name: "metadata anti-affinity terms and service affinity data are updated correctly after adding and removing a pod",
|
||||||
pendingPod: &v1.Pod{
|
pendingPod: &v1.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
||||||
},
|
},
|
||||||
|
@ -358,7 +358,7 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "metadata matching pod affinity and anti-affinity are updated correctly after adding and removing a pod",
|
name: "metadata matching pod affinity and anti-affinity are updated correctly after adding and removing a pod",
|
||||||
pendingPod: &v1.Pod{
|
pendingPod: &v1.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
ObjectMeta: metav1.ObjectMeta{Name: "pending", Labels: selector1},
|
||||||
},
|
},
|
||||||
|
@ -395,44 +395,46 @@ func TestPredicateMetadata_AddRemovePod(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
allPodLister := schedulertesting.FakePodLister(append(test.existingPods, test.addedPod))
|
t.Run(test.name, func(t *testing.T) {
|
||||||
// getMeta creates predicate meta data given the list of pods.
|
allPodLister := schedulertesting.FakePodLister(append(test.existingPods, test.addedPod))
|
||||||
getMeta := func(lister schedulertesting.FakePodLister) (*predicateMetadata, map[string]*schedulercache.NodeInfo) {
|
// getMeta creates predicate meta data given the list of pods.
|
||||||
nodeInfoMap := schedulercache.CreateNodeNameToInfoMap(lister, test.nodes)
|
getMeta := func(lister schedulertesting.FakePodLister) (*predicateMetadata, map[string]*schedulercache.NodeInfo) {
|
||||||
// nodeList is a list of non-pointer nodes to feed to FakeNodeListInfo.
|
nodeInfoMap := schedulercache.CreateNodeNameToInfoMap(lister, test.nodes)
|
||||||
nodeList := []v1.Node{}
|
// nodeList is a list of non-pointer nodes to feed to FakeNodeListInfo.
|
||||||
for _, n := range test.nodes {
|
nodeList := []v1.Node{}
|
||||||
nodeList = append(nodeList, *n)
|
for _, n := range test.nodes {
|
||||||
|
nodeList = append(nodeList, *n)
|
||||||
|
}
|
||||||
|
_, precompute := NewServiceAffinityPredicate(lister, schedulertesting.FakeServiceLister(test.services), FakeNodeListInfo(nodeList), nil)
|
||||||
|
RegisterPredicateMetadataProducer("ServiceAffinityMetaProducer", precompute)
|
||||||
|
pmf := PredicateMetadataFactory{lister}
|
||||||
|
meta := pmf.GetMetadata(test.pendingPod, nodeInfoMap)
|
||||||
|
return meta.(*predicateMetadata), nodeInfoMap
|
||||||
}
|
}
|
||||||
_, precompute := NewServiceAffinityPredicate(lister, schedulertesting.FakeServiceLister(test.services), FakeNodeListInfo(nodeList), nil)
|
|
||||||
RegisterPredicateMetadataProducer("ServiceAffinityMetaProducer", precompute)
|
|
||||||
pmf := PredicateMetadataFactory{lister}
|
|
||||||
meta := pmf.GetMetadata(test.pendingPod, nodeInfoMap)
|
|
||||||
return meta.(*predicateMetadata), nodeInfoMap
|
|
||||||
}
|
|
||||||
|
|
||||||
// allPodsMeta is meta data produced when all pods, including test.addedPod
|
// allPodsMeta is meta data produced when all pods, including test.addedPod
|
||||||
// are given to the metadata producer.
|
// are given to the metadata producer.
|
||||||
allPodsMeta, _ := getMeta(allPodLister)
|
allPodsMeta, _ := getMeta(allPodLister)
|
||||||
// existingPodsMeta1 is meta data produced for test.existingPods (without test.addedPod).
|
// existingPodsMeta1 is meta data produced for test.existingPods (without test.addedPod).
|
||||||
existingPodsMeta1, nodeInfoMap := getMeta(schedulertesting.FakePodLister(test.existingPods))
|
existingPodsMeta1, nodeInfoMap := getMeta(schedulertesting.FakePodLister(test.existingPods))
|
||||||
// Add test.addedPod to existingPodsMeta1 and make sure meta is equal to allPodsMeta
|
// Add test.addedPod to existingPodsMeta1 and make sure meta is equal to allPodsMeta
|
||||||
nodeInfo := nodeInfoMap[test.addedPod.Spec.NodeName]
|
nodeInfo := nodeInfoMap[test.addedPod.Spec.NodeName]
|
||||||
if err := existingPodsMeta1.AddPod(test.addedPod, nodeInfo); err != nil {
|
if err := existingPodsMeta1.AddPod(test.addedPod, nodeInfo); err != nil {
|
||||||
t.Errorf("test [%v]: error adding pod to meta: %v", test.description, err)
|
t.Errorf("error adding pod to meta: %v", err)
|
||||||
}
|
}
|
||||||
if err := predicateMetadataEquivalent(allPodsMeta, existingPodsMeta1); err != nil {
|
if err := predicateMetadataEquivalent(allPodsMeta, existingPodsMeta1); err != nil {
|
||||||
t.Errorf("test [%v]: meta data are not equivalent: %v", test.description, err)
|
t.Errorf("meta data are not equivalent: %v", err)
|
||||||
}
|
}
|
||||||
// Remove the added pod and from existingPodsMeta1 an make sure it is equal
|
// Remove the added pod and from existingPodsMeta1 an make sure it is equal
|
||||||
// to meta generated for existing pods.
|
// to meta generated for existing pods.
|
||||||
existingPodsMeta2, _ := getMeta(schedulertesting.FakePodLister(test.existingPods))
|
existingPodsMeta2, _ := getMeta(schedulertesting.FakePodLister(test.existingPods))
|
||||||
if err := existingPodsMeta1.RemovePod(test.addedPod); err != nil {
|
if err := existingPodsMeta1.RemovePod(test.addedPod); err != nil {
|
||||||
t.Errorf("test [%v]: error removing pod from meta: %v", test.description, err)
|
t.Errorf("error removing pod from meta: %v", err)
|
||||||
}
|
}
|
||||||
if err := predicateMetadataEquivalent(existingPodsMeta1, existingPodsMeta2); err != nil {
|
if err := predicateMetadataEquivalent(existingPodsMeta1, existingPodsMeta2); err != nil {
|
||||||
t.Errorf("test [%v]: meta data are not equivalent: %v", test.description, err)
|
t.Errorf("meta data are not equivalent: %v", err)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue