@@ -646,12 +646,28 @@ func StartCRCWithDefaultBundleAndNameServerSucceedsOrFails(nameserver string, ex
646
646
}
647
647
func EnsureCRCIsRunningSucceedsOrFails (expected string ) error {
648
648
649
- err := crcCmd .CheckCRCStatus ("running" )
650
- if err == nil {
651
- return err // exit if cluster running already
649
+ err := crcCmd .WaitForClusterInState ("running" )
650
+
651
+ // (1) If cluster is NOT expected to be Running and it is NOT running
652
+ if expected == "fails" && err != nil {
653
+ return nil
654
+ }
655
+
656
+ // (2) If cluster is NOT expected to be Running but it IS running, stop it
657
+ if expected == "fails" && err == nil {
658
+ miniErr := util .ExecuteCommandSucceedsOrFails ("crc stop" , "succeeds" )
659
+ if miniErr != nil {
660
+ return err
661
+ }
662
+ return nil
652
663
}
653
664
654
- // if cluster NOT running, start it with 12000 memory
665
+ // (3) If cluster IS expected to be Running and it IS
666
+ if expected == "succeeds" && err == nil {
667
+ return nil
668
+ }
669
+
670
+ // (4) If cluster IS expected to be Running but is NOT, start it with 12000 memory
655
671
err = SetConfigPropertyToValueSucceedsOrFails ("memory" , "12000" , expected )
656
672
if err != nil {
657
673
return err
@@ -667,8 +683,20 @@ func EnsureCRCIsRunningSucceedsOrFails(expected string) error {
667
683
} else {
668
684
err = StartCRCWithDefaultBundleSucceedsOrFails (expected )
669
685
}
686
+ if err != nil {
687
+ return err
688
+ }
670
689
671
- return err
690
+ // We're not testing if the cluster comes up fast enough, just need it Running
691
+ err = crcCmd .WaitForClusterInState ("running" )
692
+ if err != nil {
693
+ err = crcCmd .WaitForClusterInState ("running" )
694
+ if err != nil {
695
+ return err
696
+ }
697
+ }
698
+
699
+ return nil
672
700
}
673
701
674
702
func EnsureUserIsLoggedIntoClusterSucceedsOrFails (expected string ) error {
0 commit comments