diff --git a/test/e2e/framework/timeouts.go b/test/e2e/framework/timeouts.go index 93e17332de2..5819c54738e 100644 --- a/test/e2e/framework/timeouts.go +++ b/test/e2e/framework/timeouts.go @@ -30,6 +30,7 @@ const ( pvReclaimTimeout = 3 * time.Minute pvBoundTimeout = 3 * time.Minute pvDeleteTimeout = 3 * time.Minute + pvDeleteSlowTimeout = 20 * time.Minute snapshotCreateTimeout = 5 * time.Minute snapshotDeleteTimeout = 5 * time.Minute ) @@ -68,6 +69,9 @@ type TimeoutContext struct { // PVDelete is how long PVs have to become deleted. PVDelete time.Duration + // PVDeleteSlow is the same as PVDelete, but slower. + PVDeleteSlow time.Duration + // SnapshotCreate is how long for snapshot to create snapshotContent. SnapshotCreate time.Duration @@ -88,6 +92,7 @@ func NewTimeoutContextWithDefaults() *TimeoutContext { PVReclaim: pvReclaimTimeout, PVBound: pvBoundTimeout, PVDelete: pvDeleteTimeout, + PVDeleteSlow: pvDeleteSlowTimeout, SnapshotCreate: snapshotCreateTimeout, SnapshotDelete: snapshotDeleteTimeout, } diff --git a/test/e2e/storage/testsuites/provisioning.go b/test/e2e/storage/testsuites/provisioning.go index 40fb4b22aab..387d34437f8 100644 --- a/test/e2e/storage/testsuites/provisioning.go +++ b/test/e2e/storage/testsuites/provisioning.go @@ -383,11 +383,11 @@ func (t StorageClassTest) TestDynamicProvisioning() *v1.PersistentVolume { // it's expected for the caller to do it.) Technically, the first few delete // attempts may fail, as the volume is still attached to a node because // kubelet is slowly cleaning up the previous pod, however it should succeed - // in a couple of minutes. Wait 20 minutes to recover from random cloud - // hiccups. + // in a couple of minutes. Wait 20 minutes (or whatever custom value is specified in + // t.Timeouts.PVDeleteSlow) to recover from random cloud hiccups. if pv != nil && pv.Spec.PersistentVolumeReclaimPolicy == v1.PersistentVolumeReclaimDelete { ginkgo.By(fmt.Sprintf("deleting the claim's PV %q", pv.Name)) - framework.ExpectNoError(e2epv.WaitForPersistentVolumeDeleted(client, pv.Name, 5*time.Second, 20*time.Minute)) + framework.ExpectNoError(e2epv.WaitForPersistentVolumeDeleted(client, pv.Name, 5*time.Second, t.Timeouts.PVDeleteSlow)) } return pv