Skip to content

Commit 0c23caf

Browse files
committed
Test a pod becoming schedulable when a scheduled pod is updated
1 parent ad0bee4 commit 0c23caf

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

test/integration/scheduler/predicates_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ func TestInterPodAffinity(t *testing.T) {
5454
"zone": "z11",
5555
}
5656
for _, node := range nodes {
57+
// TODO(nodo): Use PodWrapper to directly initialize node with labels.
5758
if err = utils.AddLabelsToNode(testCtx.ClientSet, node.Name, labels1); err != nil {
5859
t.Fatalf("Cannot add labels to node: %v", err)
5960
}
@@ -895,6 +896,7 @@ func TestEvenPodsSpreadPredicate(t *testing.T) {
895896
"zone": fmt.Sprintf("zone-%d", i/2),
896897
"node": node.Name,
897898
}
899+
// TODO(nodo): Use PodWrapper to directly initialize node with labels.
898900
if err = utils.AddLabelsToNode(cs, node.Name, labels); err != nil {
899901
t.Fatalf("Cannot add labels to node: %v", err)
900902
}
@@ -1113,6 +1115,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
11131115
if err != nil {
11141116
return fmt.Errorf("cannot create node: %v", err)
11151117
}
1118+
// TODO(nodo): Use PodWrapper to directly initialize node with labels.
11161119
if err := utils.AddLabelsToNode(cs, node.Name, map[string]string{"region": "test"}); err != nil {
11171120
return fmt.Errorf("cannot add labels to node: %v", err)
11181121
}
@@ -1149,6 +1152,51 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
11491152
return nil
11501153
},
11511154
},
1155+
{
1156+
name: "scheduled pod gets updated to match affinity",
1157+
init: func(cs kubernetes.Interface, ns string) error {
1158+
node, err := createNode(cs, "node-1", nil)
1159+
if err != nil {
1160+
return fmt.Errorf("cannot create node: %v", err)
1161+
}
1162+
// TODO(nodo): Use PodWrapper to directly initialize node with labels.
1163+
if err := utils.AddLabelsToNode(cs, node.Name, map[string]string{"region": "test"}); err != nil {
1164+
return fmt.Errorf("cannot add labels to node: %v", err)
1165+
}
1166+
if _, err := createPausePod(cs, initPausePod(&pausePodConfig{Name: "pod-to-be-updated", Namespace: ns})); err != nil {
1167+
return fmt.Errorf("cannot create pod: %v", err)
1168+
}
1169+
return nil
1170+
},
1171+
pod: &pausePodConfig{
1172+
Name: "pod-1",
1173+
Affinity: &v1.Affinity{
1174+
PodAffinity: &v1.PodAffinity{
1175+
RequiredDuringSchedulingIgnoredDuringExecution: []v1.PodAffinityTerm{
1176+
{
1177+
LabelSelector: &metav1.LabelSelector{
1178+
MatchLabels: map[string]string{
1179+
"pod-with-affinity": "true",
1180+
},
1181+
},
1182+
TopologyKey: "region",
1183+
},
1184+
},
1185+
},
1186+
},
1187+
},
1188+
update: func(cs kubernetes.Interface, ns string) error {
1189+
pod, err := getPod(cs, "pod-to-be-updated", ns)
1190+
if err != nil {
1191+
return fmt.Errorf("cannot get pod: %v", err)
1192+
}
1193+
pod.Labels = map[string]string{"pod-with-affinity": "true"}
1194+
if _, err := cs.CoreV1().Pods(pod.Namespace).Update(context.TODO(), pod, metav1.UpdateOptions{}); err != nil {
1195+
return fmt.Errorf("cannot update pod: %v", err)
1196+
}
1197+
return nil
1198+
},
1199+
},
11521200
}
11531201
for _, tt := range tests {
11541202
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)