Skip to content

Commit 4dfa091

Browse files
authored
Merge pull request kubernetes#91734 from nodo/pod-deleted-unschedulable-pod-integration-tests
Add test case for a pod becoming schedulable when another pod is deleted
2 parents 08e75c8 + e3bca5a commit 4dfa091

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

test/integration/scheduler/predicates_test.go

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424

2525
v1 "k8s.io/api/core/v1"
2626
apierrors "k8s.io/apimachinery/pkg/api/errors"
27+
"k8s.io/apimachinery/pkg/api/resource"
2728
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2829
"k8s.io/apimachinery/pkg/util/wait"
2930
"k8s.io/client-go/kubernetes"
@@ -1036,16 +1037,16 @@ var (
10361037
func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
10371038
tests := []struct {
10381039
name string
1039-
init func(kubernetes.Interface) error
1040+
init func(kubernetes.Interface, string) error
10401041
pod *pausePodConfig
1041-
update func(kubernetes.Interface) error
1042+
update func(kubernetes.Interface, string) error
10421043
}{
10431044
{
10441045
name: "node gets added",
10451046
pod: &pausePodConfig{
10461047
Name: "pod-1",
10471048
},
1048-
update: func(cs kubernetes.Interface) error {
1049+
update: func(cs kubernetes.Interface, _ string) error {
10491050
_, err := createNode(cs, "node-added", nil)
10501051
if err != nil {
10511052
return fmt.Errorf("cannot create node: %v", err)
@@ -1055,7 +1056,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
10551056
},
10561057
{
10571058
name: "node gets taint removed",
1058-
init: func(cs kubernetes.Interface) error {
1059+
init: func(cs kubernetes.Interface, _ string) error {
10591060
node, err := createNode(cs, "node-tainted", nil)
10601061
if err != nil {
10611062
return fmt.Errorf("cannot create node: %v", err)
@@ -1069,14 +1070,40 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
10691070
pod: &pausePodConfig{
10701071
Name: "pod-1",
10711072
},
1072-
update: func(cs kubernetes.Interface) error {
1073+
update: func(cs kubernetes.Interface, _ string) error {
10731074
taint := v1.Taint{Key: "test", Value: "test", Effect: v1.TaintEffectNoSchedule}
10741075
if err := testutils.RemoveTaintOffNode(cs, "node-tainted", taint); err != nil {
10751076
return fmt.Errorf("cannot remove taint off node: %v", err)
10761077
}
10771078
return nil
10781079
},
10791080
},
1081+
{
1082+
name: "other pod gets deleted",
1083+
init: func(cs kubernetes.Interface, ns string) error {
1084+
nodeResources := &v1.ResourceList{
1085+
v1.ResourcePods: *resource.NewQuantity(1, resource.DecimalSI),
1086+
}
1087+
_, err := createNode(cs, "node-scheduler-integration-test", nodeResources)
1088+
if err != nil {
1089+
return fmt.Errorf("cannot create node: %v", err)
1090+
}
1091+
_, err = createPausePod(cs, initPausePod(&pausePodConfig{Name: "pod-to-be-deleted", Namespace: ns}))
1092+
if err != nil {
1093+
return fmt.Errorf("cannot create pod: %v", err)
1094+
}
1095+
return nil
1096+
},
1097+
pod: &pausePodConfig{
1098+
Name: "pod-1",
1099+
},
1100+
update: func(cs kubernetes.Interface, ns string) error {
1101+
if err := deletePod(cs, "pod-to-be-deleted", ns); err != nil {
1102+
return fmt.Errorf("cannot delete pod: %v", err)
1103+
}
1104+
return nil
1105+
},
1106+
},
10801107
// TODO(#91111): Add more test cases.
10811108
}
10821109
for _, tt := range tests {
@@ -1085,7 +1112,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
10851112
defer testutils.CleanupTest(t, testCtx)
10861113

10871114
if tt.init != nil {
1088-
if err := tt.init(testCtx.ClientSet); err != nil {
1115+
if err := tt.init(testCtx.ClientSet, testCtx.NS.Name); err != nil {
10891116
t.Fatal(err)
10901117
}
10911118
}
@@ -1097,7 +1124,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
10971124
if err := waitForPodUnschedulable(testCtx.ClientSet, pod); err != nil {
10981125
t.Errorf("Pod %v got scheduled: %v", pod.Name, err)
10991126
}
1100-
if err := tt.update(testCtx.ClientSet); err != nil {
1127+
if err := tt.update(testCtx.ClientSet, testCtx.NS.Name); err != nil {
11011128
t.Fatal(err)
11021129
}
11031130
if err := testutils.WaitForPodToSchedule(testCtx.ClientSet, pod); err != nil {

0 commit comments

Comments
 (0)