Skip to content

Commit

Permalink
feat(tests): E2E test for daemon retry
Browse files Browse the repository at this point in the history
Signed-off-by: MenD32 <amit@jounce.io>
  • Loading branch information
MenD32 committed Oct 18, 2024
1 parent fa12577 commit 0759183
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 0 deletions.
23 changes: 23 additions & 0 deletions test/e2e/fixtures/when.go
Original file line number Diff line number Diff line change
Expand Up @@ -522,6 +522,29 @@ func (w *When) DeleteConfigMap(name string) *When {
return w
}

func (w *When) DeletePod(name string) *When {
w.t.Helper()
ctx := context.Background()
fmt.Printf("deleting pod %s\n", name)
err := w.kubeClient.CoreV1().Pods(Namespace).Delete(ctx, name, metav1.DeleteOptions{})
if err != nil {
w.t.Fatal(err)
}
return w
}

func (w *When) DeleteNodePod(name string) *When {
w.t.Helper()
node, err := w.wf.GetNodeByName(name)
if err != nil {
w.t.Fatal(err)
}
fmt.Printf("deleting pod %s from node %s\n", "", name)
w.DeletePod(node.ID)

return w
}

func (w *When) PodsQuota(podLimit int) *When {
w.t.Helper()
ctx := context.Background()
Expand Down
62 changes: 62 additions & 0 deletions test/e2e/retry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,68 @@ spec:
})
}

func (s *RetryTestSuite) TestRetryNodeAntiAffinity() {

Check failure on line 235 in test/e2e/retry_test.go

View workflow job for this annotation

GitHub Actions / Lint

method RetryTestSuite.TestRetryNodeAntiAffinity already declared at test/e2e/retry_test.go:196:26
s.Given().
Workflow(`
metadata:
name: steps-daemon-retry
spec:
entrypoint: main
templates:
- name: main
steps:
- - name: server
template: server
- - name: client
template: client
arguments:
parameters:
- name: server-ip
value: "{{steps.server.ip}}"
withSequence:
count: "10"
- name: server
retryStrategy:
limit: "10"
daemon: true
container:
image: nginx:1.13
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 2
timeoutSeconds: 1
- name: client
inputs:
parameters:
- name: server-ip
synchronization:
mutex:
name: client-{{workflow.uid}}
container:
image: appropriate/curl:latest
command: ["/bin/sh", "-c"]
args: ["echo curl --silent -G http://{{inputs.parameters.server-ip}}:80/ && curl --silent -G http://{{inputs.parameters.server-ip}}:80/"]
`).
When().
SubmitWorkflow().
WaitForWorkflow(func(wf *wfv1.Workflow) (bool, string) {
return wf.Status.Nodes.Any(func(node wfv1.NodeStatus) bool {
return node.GetTemplateName() == "client" && node.Phase == wfv1.NodeSucceeded
}), "waiting for at least one client to succeed"
}).DeleteNodePod("steps-daemon-retry.server(0)").
Wait(10 * time.Second).
Then().
ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) {
_, err := status.Nodes.FindByName("steps-daemon-retry.server(1)")

Check failure on line 292 in test/e2e/retry_test.go

View workflow job for this annotation

GitHub Actions / Lint

assignment mismatch: 2 variables but status.Nodes.FindByName returns 1 value (typecheck)
assert.Nil(t, err)
})
}

func TestRetrySuite(t *testing.T) {
suite.Run(t, new(RetryTestSuite))
}

0 comments on commit 0759183

Please sign in to comment.