Skip to content

Commit

Permalink
set multiple successful/failure states
Browse files Browse the repository at this point in the history
  • Loading branch information
fmartingr committed Jan 2, 2023
1 parent f3a322f commit 7511632
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 15 deletions.
16 changes: 8 additions & 8 deletions e2e-aws/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ func testClusterCreation(t *testing.T, suite *ClusterTestSuite, clusterRequest *
err = suite.WaitForEvent(
model.TypeCluster,
cluster.ID,
model.ClusterStateStable,
model.ClusterStateCreationFailed,
[]string{model.ClusterStateStable},
[]string{model.ClusterStateCreationFailed},
defaultClusterCreationTimeout,
)
assert.NoError(t, err)
Expand All @@ -30,8 +30,8 @@ func testClusterDeletion(t *testing.T, suite *ClusterTestSuite, clusterID string
err = suite.WaitForEvent(
model.TypeCluster,
clusterID,
model.ClusterStateStable,
model.ClusterStateCreationFailed,
[]string{model.ClusterStateDeleted},
[]string{model.ClusterStateDeletionFailed},
defaultClusterCreationTimeout,
)
assert.NoError(t, err)
Expand All @@ -44,8 +44,8 @@ func testInstallationCreation(t *testing.T, suite *ClusterTestSuite, request *mo
err = suite.WaitForEvent(
model.TypeInstallation,
installation.ID,
model.InstallationStateStable,
model.InstallationStateCreationFailed,
[]string{model.InstallationStateStable},
[]string{model.InstallationStateCreationFailed},
defaultInstallationCreationTimeout,
)
assert.NoError(t, err)
Expand All @@ -60,8 +60,8 @@ func testInstallationDeletion(t *testing.T, suite *ClusterTestSuite, installatio
err = suite.WaitForEvent(
model.TypeInstallation,
installationID,
model.InstallationStateDeleted,
model.InstallationStateDeletionFailed,
[]string{model.InstallationStateDeleted},
[]string{model.InstallationStateDeletionFailed},
defaultInstallationDeletionTimeout,
)
assert.NoError(t, err)
Expand Down
13 changes: 6 additions & 7 deletions e2e-aws/suite.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func (s *ClusterTestSuite) UnregisterWebhook() error {
return nil
}

func (s *ClusterTestSuite) WaitForEvent(resource model.ResourceType, resourceID, expectedEvent, failedEvent string, timeout time.Duration) error {
func (s *ClusterTestSuite) WaitForEvent(resource model.ResourceType, resourceID string, expectedEvents, failedEvents []string, timeout time.Duration) error {
started := time.Now()

key := strings.Join([]string{string(resource), resourceID}, "-")
Expand All @@ -95,21 +95,20 @@ func (s *ClusterTestSuite) WaitForEvent(resource model.ResourceType, resourceID,
delete(s.webhookHandlers, key)
}()

log.Printf("Waiting for %s %s to be %s or %s for %v", resource, resourceID, expectedEvent, failedEvent, timeout)
log.Printf("Waiting for %s %s to be %s or %s for %v", resource, resourceID, expectedEvents, failedEvents, timeout)

ticker := time.NewTicker(timeout)
defer ticker.Stop()

for {
select {
case payload := <-ch:
switch payload.NewState {
case expectedEvent:
if sliceContains(expectedEvents, payload.NewState) {
delta := time.Since(started)
log.Printf("Expected %s event received after %v", expectedEvent, delta)
log.Printf("Expected %s %s event received after %v", resource, payload.NewState, delta)
return nil
case failedEvent:
return fmt.Errorf("received failed event: %s", payload.NewState)
} else if sliceContains(failedEvents, payload.NewState) {
return fmt.Errorf("received %s failed event: %s", resource, payload.NewState)
}
case <-ticker.C:
return fmt.Errorf("timeout")
Expand Down
10 changes: 10 additions & 0 deletions e2e-aws/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,16 @@ func checkDependencies(t *testing.T) {
}
}

func sliceContains(haystack []string, needle string) bool {
for _, item := range haystack {
if item == needle {
return true
}
}

return false
}

func createUniqueName() string {
return fmt.Sprintf("e2e-aws-%s", uuid.New().String())
}
Expand Down

0 comments on commit 7511632

Please sign in to comment.