Skip to content

Commit 176b157

Browse files
authored
Wait for ownerReferences to appear on the resources (#627)
* wait for ownerReferences to appear on the resources * don't retry poll call if there wasn't any error
1 parent 74f5410 commit 176b157

File tree

2 files changed

+38
-8
lines changed

2 files changed

+38
-8
lines changed

cmd/e2e/configuration_resources_test.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,21 @@ func (suite *ConfigurationResourcesTestSuite) TestReferencedConfigMaps() {
5353
stack, err := waitForStack(suite.T(), suite.stacksetName, suite.stackVersion)
5454
suite.Require().NoError(err)
5555

56-
// Fetch the latest version of the ConfigMap
57-
configMap, err := waitForConfigMap(suite.T(), configMapName)
56+
// Ensure that the ConfigMap exists in the cluster
57+
_, err = waitForConfigMap(suite.T(), configMapName)
5858
suite.Require().NoError(err)
5959

6060
// Ensure that the ConfigMap is owned by the Stack
61-
suite.Equal([]metav1.OwnerReference{
61+
ownerReferences := []metav1.OwnerReference{
6262
{
6363
APIVersion: core.APIVersion,
6464
Kind: core.KindStack,
6565
Name: stack.Name,
6666
UID: stack.UID,
6767
},
68-
}, configMap.OwnerReferences)
68+
}
69+
err = waitForConfigMapOwnerReferences(suite.T(), configMapName, ownerReferences).await()
70+
suite.Require().NoError(err)
6971
}
7072

7173
// TestReferencedSecrets tests that Secrets referenced in the StackSet spec are owned by the Stack.
@@ -88,19 +90,21 @@ func (suite *ConfigurationResourcesTestSuite) TestReferencedSecrets() {
8890
stack, err := waitForStack(suite.T(), suite.stacksetName, suite.stackVersion)
8991
suite.Require().NoError(err)
9092

91-
// Fetch the latest version of the Secret
92-
secret, err := waitForSecret(suite.T(), secretName)
93+
// Ensure that the Secret exists in the cluster
94+
_, err = waitForSecret(suite.T(), secretName)
9395
suite.Require().NoError(err)
9496

9597
// Ensure that the Secret is owned by the Stack
96-
suite.Equal([]metav1.OwnerReference{
98+
ownerReferences := []metav1.OwnerReference{
9799
{
98100
APIVersion: core.APIVersion,
99101
Kind: core.KindStack,
100102
Name: stack.Name,
101103
UID: stack.UID,
102104
},
103-
}, secret.OwnerReferences)
105+
}
106+
err = waitForSecretOwnerReferences(suite.T(), secretName, ownerReferences).await()
107+
suite.Require().NoError(err)
104108
}
105109

106110
// TestGeneratedPCS tests that PlatformCredentialsSets defined in the StackSet are

cmd/e2e/test_utils.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,19 @@ func waitForConfigMap(t *testing.T, configMapName string) (*corev1.ConfigMap, er
486486
return configMapInterface().Get(context.Background(), configMapName, metav1.GetOptions{})
487487
}
488488

489+
func waitForConfigMapOwnerReferences(t *testing.T, configMapName string, expectedOwnerReferences []metav1.OwnerReference) *awaiter {
490+
return newAwaiter(t, fmt.Sprintf("configmap %s to reach desired ownerReferences", configMapName)).withPoll(func() (retry bool, err error) {
491+
configMap, err := configMapInterface().Get(context.Background(), configMapName, metav1.GetOptions{})
492+
if err != nil {
493+
return false, err
494+
}
495+
if !reflect.DeepEqual(expectedOwnerReferences, configMap.OwnerReferences) {
496+
return true, fmt.Errorf("%s: actual ownerReferences: %+v, expected: %+v, diff:\n%v", configMapName, configMap.OwnerReferences, expectedOwnerReferences, cmp.Diff(configMap.OwnerReferences, expectedOwnerReferences))
497+
}
498+
return false, nil
499+
})
500+
}
501+
489502
func waitForSecret(t *testing.T, secretName string) (*corev1.Secret, error) {
490503
err := resourceCreated(t, "secret", secretName, secretInterface()).await()
491504
if err != nil {
@@ -494,6 +507,19 @@ func waitForSecret(t *testing.T, secretName string) (*corev1.Secret, error) {
494507
return secretInterface().Get(context.Background(), secretName, metav1.GetOptions{})
495508
}
496509

510+
func waitForSecretOwnerReferences(t *testing.T, secretName string, expectedOwnerReferences []metav1.OwnerReference) *awaiter {
511+
return newAwaiter(t, fmt.Sprintf("secret %s to reach desired ownerReferences", secretName)).withPoll(func() (retry bool, err error) {
512+
secret, err := secretInterface().Get(context.Background(), secretName, metav1.GetOptions{})
513+
if err != nil {
514+
return false, err
515+
}
516+
if !reflect.DeepEqual(expectedOwnerReferences, secret.OwnerReferences) {
517+
return true, fmt.Errorf("%s: actual ownerReferences: %+v, expected: %+v, diff:\n%v", secretName, secret.OwnerReferences, expectedOwnerReferences, cmp.Diff(secret.OwnerReferences, expectedOwnerReferences))
518+
}
519+
return false, nil
520+
})
521+
}
522+
497523
func waitForPlatformCredentialsSet(t *testing.T, pcsName string) (*zv1.PlatformCredentialsSet, error) {
498524
err := resourceCreated(t, "platformCredentialsSet", pcsName, platformCredentialsSetInterface()).await()
499525
if err != nil {

0 commit comments

Comments
 (0)