New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test(e2e): wait for deployment to exist in csv replacement test #833
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -396,7 +396,14 @@ func (a *Operator) handleClusterServiceVersionDeletion(obj interface{}) { | |
|
||
defer func(csv v1alpha1.ClusterServiceVersion) { | ||
logger.Debug("removing csv from queue set") | ||
a.csvQueueSet.Remove(csv.GetName(), csv.GetNamespace()) | ||
if err := a.csvQueueSet.Remove(csv.GetName(), csv.GetNamespace()); err != nil { | ||
logger.WithError(err).Debug("error removing from queue") | ||
} | ||
|
||
if clusterServiceVersion.IsCopied() { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This looks good. One structural thing is that we could close over a |
||
logger.Debug("deleted csv is copied. skipping operatorgroup requeue") | ||
return | ||
} | ||
|
||
// Requeue all OperatorGroups in the namespace | ||
logger.Debug("requeueing operatorgroups in namespace") | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -256,6 +256,19 @@ func awaitCSV(t *testing.T, c versioned.Interface, namespace, name string, check | |
return fetched, err | ||
} | ||
|
||
func waitForDeployment(t *testing.T, c operatorclient.ClientInterface, name string) error { | ||
return wait.Poll(pollInterval, pollDuration, func() (bool, error) { | ||
_, err := c.GetDeployment(testNamespace, name) | ||
if err != nil { | ||
if k8serrors.IsNotFound(err) { | ||
return false, nil | ||
} | ||
return false, err | ||
} | ||
return true, nil | ||
}) | ||
} | ||
|
||
func waitForDeploymentToDelete(t *testing.T, c operatorclient.ClientInterface, name string) error { | ||
return wait.Poll(pollInterval, pollDuration, func() (bool, error) { | ||
t.Logf("waiting for deployment %s to delete", name) | ||
|
@@ -2687,6 +2700,10 @@ func TestUpdateCSVModifyDeploymentName(t *testing.T) { | |
_, err = crc.OperatorsV1alpha1().ClusterServiceVersions(testNamespace).Update(fetchedCSV) | ||
require.NoError(t, err) | ||
|
||
// Wait for new deployment to exist | ||
err = waitForDeployment(t, c, strategyNew.DeploymentSpecs[0].Name) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looks like you're missing |
||
require.NoError(t, err) | ||
|
||
// Wait for updated CSV to succeed | ||
_, err = fetchCSV(t, crc, csv.Name, testNamespace, csvSucceededChecker) | ||
require.NoError(t, err) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! It seems like it was missing from the original, but aren't CSV keys in other queues as well (e.g.
csvCopyQueue
andcsvGCQueue
)? Should we handle removing those as well? Could we wrap the delete handlers in our queue abstractions to have them automatically dropped after they return?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are good ideas for a follow up :)
I was going to add it here but we don't even expose the other queues outside of their indexers, so that would be a bigger change