@@ -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
utilfeature "k8s.io/apiserver/pkg/util/feature"
@@ -1041,16 +1042,16 @@ var (
1041
1042
func TestUnschedulablePodBecomesSchedulable (t * testing.T ) {
1042
1043
tests := []struct {
1043
1044
name string
1044
- init func (kubernetes.Interface ) error
1045
+ init func (kubernetes.Interface , string ) error
1045
1046
pod * pausePodConfig
1046
- update func (kubernetes.Interface ) error
1047
+ update func (kubernetes.Interface , string ) error
1047
1048
}{
1048
1049
{
1049
1050
name : "node gets added" ,
1050
1051
pod : & pausePodConfig {
1051
1052
Name : "pod-1" ,
1052
1053
},
1053
- update : func (cs kubernetes.Interface ) error {
1054
+ update : func (cs kubernetes.Interface , _ string ) error {
1054
1055
_ , err := createNode (cs , "node-added" , nil )
1055
1056
if err != nil {
1056
1057
return fmt .Errorf ("cannot create node: %v" , err )
@@ -1060,7 +1061,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
1060
1061
},
1061
1062
{
1062
1063
name : "node gets taint removed" ,
1063
- init : func (cs kubernetes.Interface ) error {
1064
+ init : func (cs kubernetes.Interface , _ string ) error {
1064
1065
node , err := createNode (cs , "node-tainted" , nil )
1065
1066
if err != nil {
1066
1067
return fmt .Errorf ("cannot create node: %v" , err )
@@ -1074,14 +1075,40 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
1074
1075
pod : & pausePodConfig {
1075
1076
Name : "pod-1" ,
1076
1077
},
1077
- update : func (cs kubernetes.Interface ) error {
1078
+ update : func (cs kubernetes.Interface , _ string ) error {
1078
1079
taint := v1.Taint {Key : "test" , Value : "test" , Effect : v1 .TaintEffectNoSchedule }
1079
1080
if err := testutils .RemoveTaintOffNode (cs , "node-tainted" , taint ); err != nil {
1080
1081
return fmt .Errorf ("cannot remove taint off node: %v" , err )
1081
1082
}
1082
1083
return nil
1083
1084
},
1084
1085
},
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
+ },
1085
1112
// TODO(#91111): Add more test cases.
1086
1113
}
1087
1114
for _ , tt := range tests {
@@ -1090,7 +1117,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
1090
1117
defer testutils .CleanupTest (t , testCtx )
1091
1118
1092
1119
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 {
1094
1121
t .Fatal (err )
1095
1122
}
1096
1123
}
@@ -1102,7 +1129,7 @@ func TestUnschedulablePodBecomesSchedulable(t *testing.T) {
1102
1129
if err := waitForPodUnschedulable (testCtx .ClientSet , pod ); err != nil {
1103
1130
t .Errorf ("Pod %v got scheduled: %v" , pod .Name , err )
1104
1131
}
1105
- if err := tt .update (testCtx .ClientSet ); err != nil {
1132
+ if err := tt .update (testCtx .ClientSet , testCtx . NS . Name ); err != nil {
1106
1133
t .Fatal (err )
1107
1134
}
1108
1135
if err := testutils .WaitForPodToSchedule (testCtx .ClientSet , pod ); err != nil {
0 commit comments