mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #109043 from Abirdcfly/fixtestpvc
fix volumebinding test in scheduler
This commit is contained in:
commit
7ed4b59200
@ -333,56 +333,56 @@ func (env *testEnv) initVolumes(cachedPVs []*v1.PersistentVolume, apiPVs []*v1.P
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (env *testEnv) updateVolumes(t *testing.T, pvs []*v1.PersistentVolume, waitCache bool) {
|
func (env *testEnv) updateVolumes(pvs []*v1.PersistentVolume) error {
|
||||||
for _, pv := range pvs {
|
for i, pv := range pvs {
|
||||||
if _, err := env.client.CoreV1().PersistentVolumes().Update(context.TODO(), pv, metav1.UpdateOptions{}); err != nil {
|
newPv, err := env.client.CoreV1().PersistentVolumes().Update(context.TODO(), pv, metav1.UpdateOptions{})
|
||||||
t.Fatalf("failed to update PV %q", pv.Name)
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
pvs[i] = newPv
|
||||||
}
|
}
|
||||||
if waitCache {
|
return wait.Poll(100*time.Millisecond, 3*time.Second, func() (bool, error) {
|
||||||
wait.Poll(100*time.Millisecond, 3*time.Second, func() (bool, error) {
|
for _, pv := range pvs {
|
||||||
for _, pv := range pvs {
|
obj, err := env.internalPVCache.GetAPIObj(pv.Name)
|
||||||
obj, err := env.internalPVCache.GetAPIObj(pv.Name)
|
if obj == nil || err != nil {
|
||||||
if obj == nil || err != nil {
|
return false, nil
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
pvInCache, ok := obj.(*v1.PersistentVolume)
|
|
||||||
if !ok {
|
|
||||||
return false, fmt.Errorf("PV %s invalid object", pvInCache.Name)
|
|
||||||
}
|
|
||||||
if versioner.CompareResourceVersion(pvInCache, pv) != 0 {
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true, nil
|
pvInCache, ok := obj.(*v1.PersistentVolume)
|
||||||
})
|
if !ok {
|
||||||
}
|
return false, fmt.Errorf("PV %s invalid object", pvInCache.Name)
|
||||||
|
}
|
||||||
|
if versioner.CompareResourceVersion(pvInCache, pv) != 0 {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (env *testEnv) updateClaims(t *testing.T, pvcs []*v1.PersistentVolumeClaim, waitCache bool) {
|
func (env *testEnv) updateClaims(pvcs []*v1.PersistentVolumeClaim) error {
|
||||||
for _, pvc := range pvcs {
|
for i, pvc := range pvcs {
|
||||||
if _, err := env.client.CoreV1().PersistentVolumeClaims(pvc.Namespace).Update(context.TODO(), pvc, metav1.UpdateOptions{}); err != nil {
|
newPvc, err := env.client.CoreV1().PersistentVolumeClaims(pvc.Namespace).Update(context.TODO(), pvc, metav1.UpdateOptions{})
|
||||||
t.Fatalf("failed to update PVC %q", getPVCName(pvc))
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
pvcs[i] = newPvc
|
||||||
}
|
}
|
||||||
if waitCache {
|
return wait.Poll(100*time.Millisecond, 3*time.Second, func() (bool, error) {
|
||||||
wait.Poll(100*time.Millisecond, 3*time.Second, func() (bool, error) {
|
for _, pvc := range pvcs {
|
||||||
for _, pvc := range pvcs {
|
obj, err := env.internalPVCCache.GetAPIObj(getPVCName(pvc))
|
||||||
obj, err := env.internalPVCCache.GetAPIObj(getPVCName(pvc))
|
if obj == nil || err != nil {
|
||||||
if obj == nil || err != nil {
|
return false, nil
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
pvcInCache, ok := obj.(*v1.PersistentVolumeClaim)
|
|
||||||
if !ok {
|
|
||||||
return false, fmt.Errorf("PVC %s invalid object", pvcInCache.Name)
|
|
||||||
}
|
|
||||||
if versioner.CompareResourceVersion(pvcInCache, pvc) != 0 {
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true, nil
|
pvcInCache, ok := obj.(*v1.PersistentVolumeClaim)
|
||||||
})
|
if !ok {
|
||||||
}
|
return false, fmt.Errorf("PVC %s invalid object", pvcInCache.Name)
|
||||||
|
}
|
||||||
|
if versioner.CompareResourceVersion(pvcInCache, pvc) != 0 {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (env *testEnv) deleteVolumes(pvs []*v1.PersistentVolume) {
|
func (env *testEnv) deleteVolumes(pvs []*v1.PersistentVolume) {
|
||||||
@ -1727,12 +1727,16 @@ func TestCheckBindings(t *testing.T) {
|
|||||||
if scenario.deletePVs {
|
if scenario.deletePVs {
|
||||||
testEnv.deleteVolumes(scenario.initPVs)
|
testEnv.deleteVolumes(scenario.initPVs)
|
||||||
} else {
|
} else {
|
||||||
testEnv.updateVolumes(t, scenario.apiPVs, true)
|
if err := testEnv.updateVolumes(scenario.apiPVs); err != nil {
|
||||||
|
t.Errorf("Failed to update PVs: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if scenario.deletePVCs {
|
if scenario.deletePVCs {
|
||||||
testEnv.deleteClaims(scenario.initPVCs)
|
testEnv.deleteClaims(scenario.initPVCs)
|
||||||
} else {
|
} else {
|
||||||
testEnv.updateClaims(t, scenario.apiPVCs, true)
|
if err := testEnv.updateClaims(scenario.apiPVCs); err != nil {
|
||||||
|
t.Errorf("Failed to update PVCs: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute
|
// Execute
|
||||||
@ -1856,8 +1860,12 @@ func TestCheckBindingsWithCSIMigration(t *testing.T) {
|
|||||||
testEnv.assumeVolumes(t, "node1", pod, scenario.bindings, scenario.provisionedPVCs)
|
testEnv.assumeVolumes(t, "node1", pod, scenario.bindings, scenario.provisionedPVCs)
|
||||||
|
|
||||||
// Before execute
|
// Before execute
|
||||||
testEnv.updateVolumes(t, scenario.apiPVs, true)
|
if err := testEnv.updateVolumes(scenario.apiPVs); err != nil {
|
||||||
testEnv.updateClaims(t, scenario.apiPVCs, true)
|
t.Errorf("Failed to update PVs: %v", err)
|
||||||
|
}
|
||||||
|
if err := testEnv.updateClaims(scenario.apiPVCs); err != nil {
|
||||||
|
t.Errorf("Failed to update PVCs: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
// Execute
|
// Execute
|
||||||
allBound, err := testEnv.internalBinder.checkBindings(pod, scenario.bindings, scenario.provisionedPVCs)
|
allBound, err := testEnv.internalBinder.checkBindings(pod, scenario.bindings, scenario.provisionedPVCs)
|
||||||
|
Loading…
Reference in New Issue
Block a user