Add integration test for scheduler "on PVC add" event handling

This commit is contained in:
Yecheng Fu 2018-08-10 17:53:56 +08:00
parent a1b3133b46
commit 253dea88b6

View File

@ -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)
}