Skip to content

Commit e3bca5a

Browse files
committed
Add test case for a pod becoming schedulable when another pod is deleted
1 parent 0615d4c commit e3bca5a

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
utilfeature "k8s.io/apiserver/pkg/util/feature"
@@ -1041,16 +1042,16 @@ var (
10411042
func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
10421043
tests := []struct {
10431044
name string
1044-
init func(kubernetes.Interface) error
1045+
init func(kubernetes.Interface, string) error
10451046
pod *pausePodConfig
1046-
update func(kubernetes.Interface) error
1047+
update func(kubernetes.Interface, string) error
10471048
}{
10481049
{
10491050
name: "node gets added",
10501051
pod: &pausePodConfig{
10511052
Name: "pod-1",
10521053
},
1053-
update: func(cs kubernetes.Interface) error {
1054+
update: func(cs kubernetes.Interface, _ string) error {
10541055
_, err := createNode(cs, "node-added", nil)
10551056
if err != nil {
10561057
return fmt.Errorf("cannot create node: %v", err)
@@ -1060,7 +1061,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
10601061
},
10611062
{
10621063
name: "node gets taint removed",
1063-
init: func(cs kubernetes.Interface) error {
1064+
init: func(cs kubernetes.Interface, _ string) error {
10641065
node, err := createNode(cs, "node-tainted", nil)
10651066
if err != nil {
10661067
return fmt.Errorf("cannot create node: %v", err)
@@ -1074,14 +1075,40 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
10741075
pod: &pausePodConfig{
10751076
Name: "pod-1",
10761077
},
1077-
update: func(cs kubernetes.Interface) error {
1078+
update: func(cs kubernetes.Interface, _ string) error {
10781079
taint := v1.Taint{Key: "test", Value: "test", Effect: v1.TaintEffectNoSchedule}
10791080
if err := testutils.RemoveTaintOffNode(cs, "node-tainted", taint); err != nil {
10801081
return fmt.Errorf("cannot remove taint off node: %v", err)
10811082
}
10821083
return nil
10831084
},
10841085
},
1086+
{
1087+
name: "other pod gets deleted",
1088+
init: func(cs kubernetes.Interface, ns string) error {
1089+
nodeResources := &v1.ResourceList{
1090+
v1.ResourcePods: *resource.NewQuantity(1, resource.DecimalSI),
1091+
}
1092+
_, err := createNode(cs, "node-scheduler-integration-test", nodeResources)
1093+
if err != nil {
1094+
return fmt.Errorf("cannot create node: %v", err)
1095+
}
1096+
_, err = createPausePod(cs, initPausePod(&pausePodConfig{Name: "pod-to-be-deleted", Namespace: ns}))
1097+
if err != nil {
1098+
return fmt.Errorf("cannot create pod: %v", err)
1099+
}
1100+
return nil
1101+
},
1102+
pod: &pausePodConfig{
1103+
Name: "pod-1",
1104+
},
1105+
update: func(cs kubernetes.Interface, ns string) error {
1106+
if err := deletePod(cs, "pod-to-be-deleted", ns); err != nil {
1107+
return fmt.Errorf("cannot delete pod: %v", err)
1108+
}
1109+
return nil
1110+
},
1111+
},
10851112
// TODO(#91111): Add more test cases.
10861113
}
10871114
for _, tt := range tests {
@@ -1090,7 +1117,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
10901117
defer testutils.CleanupTest(t, testCtx)
10911118

10921119
if tt.init != nil {
1093-
if err := tt.init(testCtx.ClientSet); err != nil {
1120+
if err := tt.init(testCtx.ClientSet, testCtx.NS.Name); err != nil {
10941121
t.Fatal(err)
10951122
}
10961123
}
@@ -1102,7 +1129,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
11021129
if err := waitForPodUnschedulable(testCtx.ClientSet, pod); err != nil {
11031130
t.Errorf("Pod %v got scheduled: %v", pod.Name, err)
11041131
}
1105-
if err := tt.update(testCtx.ClientSet); err != nil {
1132+
if err := tt.update(testCtx.ClientSet, testCtx.NS.Name); err != nil {
11061133
t.Fatal(err)
11071134
}
11081135
if err := testutils.WaitForPodToSchedule(testCtx.ClientSet, pod); err != nil {

0 commit comments

Comments
 (0)