@@ -24,6 +24,7 @@ import (
24
24
25
25
v1 "k8s.io/api/core/v1"
26
26
apierrors "k8s.io/apimachinery/pkg/api/errors"
27
+ "k8s.io/apimachinery/pkg/api/resource"
27
28
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28
29
"k8s.io/apimachinery/pkg/util/wait"
29
30
"k8s.io/client-go/kubernetes"
@@ -1036,16 +1037,16 @@ var (
1036
1037
func TestUnschedulablePodBecomesSchedulable (t * testing.T ) {
1037
1038
tests := []struct {
1038
1039
name string
1039
- init func (kubernetes.Interface ) error
1040
+ init func (kubernetes.Interface , string ) error
1040
1041
pod * pausePodConfig
1041
- update func (kubernetes.Interface ) error
1042
+ update func (kubernetes.Interface , string ) error
1042
1043
}{
1043
1044
{
1044
1045
name : "node gets added" ,
1045
1046
pod : & pausePodConfig {
1046
1047
Name : "pod-1" ,
1047
1048
},
1048
- update : func (cs kubernetes.Interface ) error {
1049
+ update : func (cs kubernetes.Interface , _ string ) error {
1049
1050
_ , err := createNode (cs , "node-added" , nil )
1050
1051
if err != nil {
1051
1052
return fmt .Errorf ("cannot create node: %v" , err )
@@ -1055,7 +1056,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
1055
1056
},
1056
1057
{
1057
1058
name : "node gets taint removed" ,
1058
- init : func (cs kubernetes.Interface ) error {
1059
+ init : func (cs kubernetes.Interface , _ string ) error {
1059
1060
node , err := createNode (cs , "node-tainted" , nil )
1060
1061
if err != nil {
1061
1062
return fmt .Errorf ("cannot create node: %v" , err )
@@ -1069,14 +1070,40 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
1069
1070
pod : & pausePodConfig {
1070
1071
Name : "pod-1" ,
1071
1072
},
1072
- update : func (cs kubernetes.Interface ) error {
1073
+ update : func (cs kubernetes.Interface , _ string ) error {
1073
1074
taint := v1.Taint {Key : "test" , Value : "test" , Effect : v1 .TaintEffectNoSchedule }
1074
1075
if err := testutils .RemoveTaintOffNode (cs , "node-tainted" , taint ); err != nil {
1075
1076
return fmt .Errorf ("cannot remove taint off node: %v" , err )
1076
1077
}
1077
1078
return nil
1078
1079
},
1079
1080
},
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
+ },
1080
1107
// TODO(#91111): Add more test cases.
1081
1108
}
1082
1109
for _ , tt := range tests {
@@ -1085,7 +1112,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
1085
1112
defer testutils .CleanupTest (t , testCtx )
1086
1113
1087
1114
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 {
1089
1116
t .Fatal (err )
1090
1117
}
1091
1118
}
@@ -1097,7 +1124,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
1097
1124
if err := waitForPodUnschedulable (testCtx .ClientSet , pod ); err != nil {
1098
1125
t .Errorf ("Pod %v got scheduled: %v" , pod .Name , err )
1099
1126
}
1100
- if err := tt .update (testCtx .ClientSet ); err != nil {
1127
+ if err := tt .update (testCtx .ClientSet , testCtx . NS . Name ); err != nil {
1101
1128
t .Fatal (err )
1102
1129
}
1103
1130
if err := testutils .WaitForPodToSchedule (testCtx .ClientSet , pod ); err != nil {
0 commit comments