@@ -1668,7 +1668,7 @@ var _ = Describe("test CRP rollout with staged update run", func() {
16681668 })
16691669 })
16701670
1671- Context ("Test resource rollout with staged update run by update run states - (Initialize -> Run)" , Ordered , func () {
1671+ FContext ("Test resource rollout with staged update run by update run states - (Initialize -> Run -> Stop -> Run)" , Ordered , func () {
16721672 updateRunNames := []string {}
16731673 var strategy * placementv1beta1.ClusterStagedUpdateStrategy
16741674
@@ -1758,9 +1758,43 @@ var _ = Describe("test CRP rollout with staged update run", func() {
17581758 validateAndApproveClusterApprovalRequests (updateRunNames [0 ], envCanary , placementv1beta1 .AfterStageApprovalTaskNameFmt , placementv1beta1 .AfterStageTaskLabelValue )
17591759 })
17601760
1761- It ("Should rollout resources to all the members and complete the cluster staged update run successfully" , func () {
1761+ It ("Should not rollout to all member clusters while waiting for beforeStageTask approval for prod stage" , func () {
1762+ By ("Validating not rolled out to member-cluster-1 and member-cluster-3 yet" )
1763+ checkIfRemovedWorkResourcesFromMemberClustersConsistently ([]* framework.Cluster {allMemberClusters [0 ], allMemberClusters [2 ]})
1764+ checkIfPlacedWorkResourcesOnMemberClustersInUpdateRun ([]* framework.Cluster {allMemberClusters [1 ]})
1765+
1766+ By ("Validating crp status as member-cluster-2 updated only" )
1767+ crpStatusUpdatedActual := crpStatusWithExternalStrategyActual (nil , "" , false , allMemberClusterNames , []string {"" , resourceSnapshotIndex1st , "" }, []bool {false , true , false }, nil , nil )
1768+ Eventually (crpStatusUpdatedActual , eventuallyDuration , eventuallyInterval ).Should (Succeed (), "Failed to update CRP %s status as expected" , crpName )
1769+ })
1770+
1771+ It ("Should not rollout to all member clusters after stopping update run" , func () {
1772+ By ("Updating update run state to Stop" )
1773+ updateClusterStagedUpdateRunState (updateRunNames [0 ], placementv1beta1 .StateStop )
1774+
1775+ By ("Validating not rolled out to member-cluster-1 and member-cluster-3 yet" )
1776+ checkIfRemovedWorkResourcesFromMemberClustersConsistently ([]* framework.Cluster {allMemberClusters [0 ], allMemberClusters [2 ]})
1777+ checkIfPlacedWorkResourcesOnMemberClustersInUpdateRun ([]* framework.Cluster {allMemberClusters [1 ]})
1778+
1779+ By ("Validating crp status as member-cluster-2 updated" )
1780+ crpStatusUpdatedActual := crpStatusWithExternalStrategyActual (nil , "" , false , allMemberClusterNames , []string {"" , resourceSnapshotIndex1st , "" }, []bool {false , true , false }, nil , nil )
1781+ Eventually (crpStatusUpdatedActual , eventuallyDuration , eventuallyInterval ).Should (Succeed (), "Failed to update CRP %s status as expected" , crpName )
1782+ })
1783+
1784+ It ("Should complete rollout to all member after update run state is Run and beforeStageTask approval" , func () {
1785+ By ("Validating not rolled out to member-cluster-1 and member-cluster-3 yet" )
1786+ checkIfRemovedWorkResourcesFromMemberClustersConsistently ([]* framework.Cluster {allMemberClusters [0 ], allMemberClusters [2 ]})
1787+
1788+ // Update the update run state back to Run.
1789+ By ("Updating the update run state back to Run" )
1790+ updateClusterStagedUpdateRunState (updateRunNames [0 ], placementv1beta1 .StateRun )
1791+
17621792 validateAndApproveClusterApprovalRequests (updateRunNames [0 ], envProd , placementv1beta1 .BeforeStageApprovalTaskNameFmt , placementv1beta1 .BeforeStageTaskLabelValue )
17631793
1794+ By ("All member clusters should have work resources placed" )
1795+ checkIfPlacedWorkResourcesOnMemberClustersInUpdateRun ([]* framework.Cluster {allMemberClusters [0 ], allMemberClusters [1 ], allMemberClusters [2 ]})
1796+
1797+ By ("Validating update run has succeeded after resuming" )
17641798 csurSucceededActual := clusterStagedUpdateRunStatusSucceededActual (updateRunNames [0 ], resourceSnapshotIndex1st , policySnapshotIndex1st , len (allMemberClusters ), defaultApplyStrategy , & strategy .Spec , [][]string {{allMemberClusterNames [1 ]}, {allMemberClusterNames [0 ], allMemberClusterNames [2 ]}}, nil , nil , nil , true )
17651799 Eventually (csurSucceededActual , updateRunEventuallyDuration , eventuallyInterval ).Should (Succeed (), "Failed to validate updateRun %s succeeded" , updateRunNames [0 ])
17661800 checkIfPlacedWorkResourcesOnMemberClustersInUpdateRun (allMemberClusters )
0 commit comments