@@ -18,6 +18,7 @@ package e2e
1818
1919import (
2020 "fmt"
21+ "slices"
2122 "time"
2223
2324 . "github.com/onsi/ginkgo/v2"
@@ -161,6 +162,13 @@ var _ = Describe("Virtual machine migration cancel", SIGMigration(), ginkgoutil.
161162 Expect (someCompleted ).Should (BeFalse ())
162163
163164 By ("Abort status should be exists in Kubevirt VMIs" )
165+
166+ validAbortStatuses := []virtv1.MigrationAbortStatus {
167+ virtv1 .MigrationAbortInProgress ,
168+ virtv1 .MigrationAbortSucceeded ,
169+ virtv1 .MigrationAbortFailed ,
170+ }
171+
164172 Eventually (func () error {
165173 kvvmis := & virtv1.VirtualMachineInstanceList {}
166174 err = GetObjects (kc .ResourceKubevirtVMI , kvvmis , kc.GetOptions {Labels : testCaseLabel , Namespace : conf .Namespace })
@@ -169,18 +177,23 @@ var _ = Describe("Virtual machine migration cancel", SIGMigration(), ginkgoutil.
169177 }
170178 for _ , kvvmi := range kvvmis .Items {
171179 migrationState := kvvmi .Status .MigrationState
180+
172181 if migrationState == nil {
173182 return fmt .Errorf ("retry because migration state is nil" )
174183 }
175184 if ! migrationState .AbortRequested {
176185 return fmt .Errorf ("retry because migration abort requested is false" )
177186 }
178- validAbortStatus := migrationState . AbortStatus == virtv1 . MigrationAbortFailed || migrationState . AbortStatus == virtv1 . MigrationAbortSucceeded
179- if ! validAbortStatus {
187+
188+ if ! slices . Contains ( validAbortStatuses , migrationState . AbortStatus ) {
180189 return fmt .Errorf ("retry because migration abort status is %s" , migrationState .AbortStatus )
181190 }
191+
192+ if migrationState .EndTimestamp .IsZero () {
193+ return fmt .Errorf ("retry because migration is not finished yet" )
194+ }
182195 }
183196 return nil
184- }).WithTimeout (MaxWaitTimeout ).WithPolling (time .Second ).ShouldNot (HaveOccurred ())
197+ }).WithTimeout (LongWaitDuration ).WithPolling (time .Second ).ShouldNot (HaveOccurred ())
185198 })
186199})
0 commit comments