Skip to content

Commit 9ffc095

Browse files
authored
Merge pull request kubernetes#127892 from utam0k/test-qhint-volume-restriction
Add integration test for VolumeRestriction in requeueing scenarios
2 parents 05b076b + 60c29c3 commit 9ffc095

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

test/integration/scheduler/queue_test.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1223,6 +1223,73 @@ func TestCoreResourceEnqueue(t *testing.T) {
12231223
wantRequeuedPods: sets.Set[string]{},
12241224
enableSchedulingQueueHint: []bool{true},
12251225
},
1226+
{
1227+
name: "Pod rejected by the VolumeRestriction plugin is requeued when the PVC bound to the pod is added",
1228+
initialNodes: []*v1.Node{st.MakeNode().Name("fake-node").Label("node", "fake-node").Obj()},
1229+
initialPVs: []*v1.PersistentVolume{
1230+
st.MakePersistentVolume().
1231+
Name("pv1").
1232+
AccessModes([]v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}).
1233+
Capacity(v1.ResourceList{v1.ResourceStorage: resource.MustParse("1Mi")}).
1234+
HostPathVolumeSource(&v1.HostPathVolumeSource{Path: "/tmp", Type: ptr.To(v1.HostPathDirectoryOrCreate)}).
1235+
Obj(),
1236+
},
1237+
pods: []*v1.Pod{
1238+
st.MakePod().Name("pod1").Container("image").PVC("pvc1").Obj(),
1239+
st.MakePod().Name("pod2").Container("image").PVC("pvc2").Obj(),
1240+
},
1241+
triggerFn: func(testCtx *testutils.TestContext) (map[framework.ClusterEvent]uint64, error) {
1242+
pvc2 := st.MakePersistentVolumeClaim().
1243+
Name("pvc1").
1244+
Annotation(volume.AnnBindCompleted, "true").
1245+
VolumeName("pv1").
1246+
AccessModes([]v1.PersistentVolumeAccessMode{v1.ReadWriteOncePod}).
1247+
Resources(v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceStorage: resource.MustParse("1Mi")}}).
1248+
Obj()
1249+
if _, err := testCtx.ClientSet.CoreV1().PersistentVolumeClaims(testCtx.NS.Name).Create(testCtx.Ctx, pvc2, metav1.CreateOptions{}); err != nil {
1250+
return nil, fmt.Errorf("failed to add pvc1: %w", err)
1251+
}
1252+
return map[framework.ClusterEvent]uint64{framework.PvcAdd: 1}, nil
1253+
},
1254+
wantRequeuedPods: sets.New("pod1"),
1255+
enableSchedulingQueueHint: []bool{true},
1256+
},
1257+
{
1258+
name: "Pod rejected by the VolumeRestriction plugin is requeued when the pod is deleted",
1259+
initialNodes: []*v1.Node{st.MakeNode().Name("fake-node").Label("node", "fake-node").Obj()},
1260+
initialPVs: []*v1.PersistentVolume{
1261+
st.MakePersistentVolume().
1262+
Name("pv1").
1263+
AccessModes([]v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}).
1264+
Capacity(v1.ResourceList{v1.ResourceStorage: resource.MustParse("1Mi")}).
1265+
HostPathVolumeSource(&v1.HostPathVolumeSource{Path: "/tmp", Type: ptr.To(v1.HostPathDirectoryOrCreate)}).
1266+
Obj(),
1267+
},
1268+
initialPVCs: []*v1.PersistentVolumeClaim{
1269+
st.MakePersistentVolumeClaim().
1270+
Name("pvc1").
1271+
Annotation(volume.AnnBindCompleted, "true").
1272+
VolumeName("pv1").
1273+
AccessModes([]v1.PersistentVolumeAccessMode{v1.ReadWriteOncePod}).
1274+
Resources(v1.VolumeResourceRequirements{Requests: v1.ResourceList{v1.ResourceStorage: resource.MustParse("1Mi")}}).
1275+
Obj(),
1276+
},
1277+
initialPods: []*v1.Pod{
1278+
st.MakePod().Name("pod1").Container("image").PVC("pvc1").Node("fake-node").Obj(),
1279+
},
1280+
pods: []*v1.Pod{
1281+
st.MakePod().Name("pod2").Container("image").PVC("pvc1").Obj(),
1282+
st.MakePod().Name("pod3").Container("image").PVC("pvc2").Obj(),
1283+
},
1284+
triggerFn: func(testCtx *testutils.TestContext) (map[framework.ClusterEvent]uint64, error) {
1285+
if err := testCtx.ClientSet.CoreV1().Pods(testCtx.NS.Name).Delete(testCtx.Ctx, "pod1", metav1.DeleteOptions{GracePeriodSeconds: new(int64)}); err != nil {
1286+
return nil, fmt.Errorf("failed to delete pod1: %w", err)
1287+
}
1288+
return map[framework.ClusterEvent]uint64{framework.AssignedPodDelete: 1}, nil
1289+
},
1290+
wantRequeuedPods: sets.New("pod2"),
1291+
enableSchedulingQueueHint: []bool{true},
1292+
},
12261293
}
12271294

12281295
for _, tt := range tests {

0 commit comments

Comments
 (0)