diff --git a/test/integration/scheduler/volume_binding_test.go b/test/integration/scheduler/volume_binding_test.go index 472d3c5d93..744f57d3f1 100644 --- a/test/integration/scheduler/volume_binding_test.go +++ b/test/integration/scheduler/volume_binding_test.go @@ -60,6 +60,11 @@ var ( classWait = "wait" classImmediate = "immediate" + + sharedClasses = map[storagev1.VolumeBindingMode]*storagev1.StorageClass{ + modeImmediate: makeStorageClass(classImmediate, &modeImmediate), + modeWait: makeStorageClass(classWait, &modeWait), + } ) const ( @@ -271,6 +276,7 @@ func TestVolumeBindingRescheduling(t *testing.T) { cases := map[string]struct { pod *v1.Pod pvcs []*testPVC + pvs []*testPV trigger func(config *testConfig) shouldFail bool }{ @@ -305,7 +311,23 @@ func TestVolumeBindingRescheduling(t *testing.T) { }, shouldFail: false, }, - // TODO test rescheduling on PVC add/update + "reschedule on delay binding PVC add": { + pod: makePod("pod-reschedule-onpvcadd", config.ns, []string{"pvc-reschedule-onpvcadd"}), + pvs: []*testPV{ + { + name: "pv-reschedule-onpvcadd", + scMode: modeWait, + node: node1, + }, + }, + trigger: func(config *testConfig) { + pvc := makePVC("pvc-reschedule-onpvcadd", config.ns, &classWait, "") + if _, err := config.client.CoreV1().PersistentVolumeClaims(config.ns).Create(pvc); err != nil { + t.Fatalf("Failed to create PersistentVolumeClaim %q: %v", pvc.Name, err) + } + }, + shouldFail: false, + }, } for name, test := range cases { @@ -323,6 +345,14 @@ func TestVolumeBindingRescheduling(t *testing.T) { } } + // Create PVs + for _, pvConfig := range test.pvs { + pv := makePV(pvConfig.name, sharedClasses[pvConfig.scMode].Name, pvConfig.preboundPVC, config.ns, pvConfig.node) + if _, err := config.client.CoreV1().PersistentVolumes().Create(pv); err != nil { + t.Fatalf("Failed to create PersistentVolume %q: %v", pv.Name, err) + } + } + // Create pod if _, err := config.client.CoreV1().Pods(config.ns).Create(test.pod); err != nil { t.Fatalf("Failed to create Pod %q: %v", test.pod.Name, err) @@ -575,11 +605,7 @@ func setupCluster(t *testing.T, nsName string, numberOfNodes int, features map[s } // Create SCs - scs := []*storagev1.StorageClass{ - makeStorageClass(classImmediate, &modeImmediate), - makeStorageClass(classWait, &modeWait), - } - for _, sc := range scs { + for _, sc := range sharedClasses { if _, err := clientset.StorageV1().StorageClasses().Create(sc); err != nil { t.Fatalf("Failed to create StorageClass %q: %v", sc.Name, err) }