@@ -90,6 +90,61 @@ func TestCrossplaneLifecycle(t *testing.T) {
9090 funcs .ResourceDeletedWithin (3 * time .Minute , & corev1.Namespace {ObjectMeta : metav1.ObjectMeta {Name : namespace }}),
9191 )).
9292 Feature (),
93+ features .NewWithDescription (t .Name ()+ "Downgrade" , "Test that it's possible to downgrade Crossplane to the most recent stable Helm chart from the one we're testing, even when a claim exists. This expects Crossplane not to be installed." ).
94+ WithLabel (LabelArea , LabelAreaLifecycle ).
95+ WithLabel (LabelSize , LabelSizeSmall ).
96+ WithLabel (config .LabelTestSuite , config .TestSuiteDefault ).
97+ // We expect Crossplane to have been uninstalled first
98+ Assess ("CrossplaneIsNotInstalled" , funcs .AllOf (
99+ funcs .ResourceDeletedWithin (1 * time .Minute , & corev1.Namespace {ObjectMeta : metav1.ObjectMeta {Name : namespace }}),
100+ funcs .ResourcesDeletedWithin (3 * time .Minute , crdsDir , "*.yaml" ),
101+ )).
102+ Assess ("InstallCrossplane" , funcs .AllOf (
103+ funcs .AsFeaturesFunc (envfuncs .CreateNamespace (namespace )),
104+ funcs .AsFeaturesFunc (environment .HelmInstallBaseCrossplane ()),
105+ funcs .ReadyToTestWithin (1 * time .Minute , namespace ),
106+ )).
107+ Assess ("CreateClaimPrerequisites" , funcs .AllOf (
108+ funcs .ApplyResources (FieldManager , manifests , "setup/*.yaml" ),
109+ funcs .ResourcesCreatedWithin (30 * time .Second , manifests , "setup/*.yaml" ),
110+ )).
111+ Assess ("XRDIsEstablished" ,
112+ funcs .ResourcesHaveConditionWithin (1 * time .Minute , manifests , "setup/definition.yaml" , apiextensionsv1 .WatchingComposite ())).
113+ Assess ("ProviderIsReady" ,
114+ funcs .ResourcesHaveConditionWithin (3 * time .Minute , manifests , "setup/provider.yaml" , pkgv1 .Healthy (), pkgv1 .Active ())).
115+ Assess ("CreateClaim" , funcs .AllOf (
116+ funcs .ApplyResources (FieldManager , manifests , "claim.yaml" ),
117+ funcs .ResourcesCreatedWithin (30 * time .Second , manifests , "claim.yaml" ),
118+ )).
119+ Assess ("ClaimIsAvailable" , funcs .ResourcesHaveConditionWithin (3 * time .Minute , manifests , "claim.yaml" , xpv1 .Available ())).
120+ Assess ("DowngradeCrossplane" , funcs .AllOf (
121+ funcs .AsFeaturesFunc (environment .HelmUpgradePriorCrossplane (namespace , helmReleaseName )),
122+ funcs .ReadyToTestWithin (1 * time .Minute , namespace ),
123+ )).
124+ Assess ("CoreDeploymentIsAvailable" , funcs .DeploymentBecomesAvailableWithin (1 * time .Minute , namespace , "crossplane" )).
125+ Assess ("RBACManagerDeploymentIsAvailable" , funcs .DeploymentBecomesAvailableWithin (1 * time .Minute , namespace , "crossplane-rbac-manager" )).
126+ Assess ("CoreCRDsAreEstablished" , funcs .ResourcesHaveConditionWithin (1 * time .Minute , crdsDir , "*.yaml" , funcs .CRDInitialNamesAccepted ())).
127+ Assess ("ClaimIsStillAvailable" , funcs .ResourcesHaveConditionWithin (3 * time .Minute , manifests , "claim.yaml" , xpv1 .Available ())).
128+ Assess ("DeleteClaim" , funcs .AllOf (
129+ funcs .DeleteResources (manifests , "claim.yaml" ),
130+ funcs .ResourcesDeletedWithin (2 * time .Minute , manifests , "claim.yaml" ),
131+ )).
132+ WithTeardown ("DeletePrerequisites" , funcs .ResourcesDeletedAfterListedAreGone (3 * time .Minute , manifests , "setup/*.yaml" , nopList )).
133+ // Uninstalling the Crossplane Helm chart doesn't remove its CRDs. We
134+ // want to make sure they can be deleted cleanly. If they can't, it's a
135+ // sign something they define might have stuck around.
136+ WithTeardown ("DeleteCrossplaneCRDs" , funcs .AllOf (
137+ funcs .DeleteResources (crdsDir , "*.yaml" ),
138+ funcs .ResourcesDeletedWithin (3 * time .Minute , crdsDir , "*.yaml" ),
139+ )).
140+ // Uninstalling the Crossplane Helm chart doesn't remove the namespace
141+ // it was installed to either. We want to make sure it can be deleted
142+ // cleanly.
143+ WithTeardown ("DeleteCrossplaneNamespace" , funcs .AllOf (
144+ funcs .AsFeaturesFunc (envfuncs .DeleteNamespace (namespace )),
145+ funcs .ResourceDeletedWithin (3 * time .Minute , & corev1.Namespace {ObjectMeta : metav1.ObjectMeta {Name : namespace }}),
146+ )).
147+ Feature (),
93148 features .NewWithDescription (t .Name ()+ "Upgrade" , "Test that it's possible to upgrade Crossplane from the most recent stable Helm chart to the one we're testing, even when a claim exists. This expects Crossplane not to be installed." ).
94149 WithLabel (LabelArea , LabelAreaLifecycle ).
95150 WithLabel (LabelSize , LabelSizeSmall ).
0 commit comments