diff --git a/test/e2e/argo_server_test.go b/test/e2e/argo_server_test.go index 4f194075c41f..aa2b5435dd26 100644 --- a/test/e2e/argo_server_test.go +++ b/test/e2e/argo_server_test.go @@ -495,9 +495,7 @@ func (s *ArgoServerSuite) TestPermission() { "name": "run-workflow", "container": { "image": "argoproj/argosay:v2", - "imagePullPolicy": "IfNotPresent", - "command": ["sh"], - "args": ["-c", "sleep 1"] + "args": [ "sleep", "1" ] } } ], diff --git a/test/e2e/artifacts_test.go b/test/e2e/artifacts_test.go index bacd13401977..9f91b0bb73c2 100644 --- a/test/e2e/artifacts_test.go +++ b/test/e2e/artifacts_test.go @@ -23,10 +23,7 @@ func (s *ArtifactsSuite) TestInputOnMount() { When(). SubmitWorkflow(). WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func (s *ArtifactsSuite) TestOutputOnMount() { @@ -34,11 +31,7 @@ func (s *ArtifactsSuite) TestOutputOnMount() { Workflow("@testdata/output-on-mount-workflow.yaml"). When(). SubmitWorkflow(). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func (s *ArtifactsSuite) TestOutputOnInput() { @@ -47,11 +40,7 @@ func (s *ArtifactsSuite) TestOutputOnInput() { Workflow("@testdata/output-on-input-workflow.yaml"). When(). SubmitWorkflow(). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func (s *ArtifactsSuite) TestArtifactPassing() { @@ -60,11 +49,7 @@ func (s *ArtifactsSuite) TestArtifactPassing() { Workflow("@smoke/artifact-passing.yaml"). When(). SubmitWorkflow(). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func (s *ArtifactsSuite) TestDefaultParameterOutputs() { @@ -105,10 +90,9 @@ spec: `). When(). SubmitWorkflow(). - WaitForWorkflow(). + WaitForWorkflow(fixtures.ToBeSucceeded). Then(). ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) assert.True(t, status.Nodes.Any(func(node wfv1.NodeStatus) bool { if node.Outputs != nil { for _, param := range node.Outputs.Parameters { @@ -128,11 +112,7 @@ func (s *ArtifactsSuite) TestSameInputOutputPathOptionalArtifact() { Workflow("@testdata/same-input-output-path-optional.yaml"). When(). SubmitWorkflow(). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func (s *ArtifactsSuite) TestOutputArtifactS3BucketCreationEnabled() { @@ -141,11 +121,7 @@ func (s *ArtifactsSuite) TestOutputArtifactS3BucketCreationEnabled() { Workflow("@testdata/output-artifact-with-s3-bucket-creation-enabled.yaml"). When(). SubmitWorkflow(). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func (s *ArtifactsSuite) TestOutputResult() { @@ -153,10 +129,9 @@ func (s *ArtifactsSuite) TestOutputResult() { Workflow("@testdata/output-result-workflow.yaml"). When(). SubmitWorkflow(). - WaitForWorkflow(). + WaitForWorkflow(fixtures.ToBeSucceeded). Then(). ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) n := status.Nodes.FindByDisplayName("a") if assert.NotNil(t, n) { assert.NotNil(t, n.Outputs.ExitCode) diff --git a/test/e2e/cli_test.go b/test/e2e/cli_test.go index b13ee80c513b..d9137cc80209 100644 --- a/test/e2e/cli_test.go +++ b/test/e2e/cli_test.go @@ -449,11 +449,7 @@ func (s *CLISuite) TestWorkflowSuspendResume() { assert.Contains(t, output, "workflow sleep-3s resumed") } }). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func (s *CLISuite) TestNodeSuspendResume() { @@ -478,9 +474,7 @@ func (s *CLISuite) TestNodeSuspendResume() { assert.Contains(t, output, "workflow node-suspend stopped") } }). - WaitForWorkflow(fixtures.Condition(func(wf *wfv1.Workflow) (bool, string) { - return wf.Status.Phase == wfv1.WorkflowFailed, "suspended node" - })). + WaitForWorkflow(fixtures.ToBeFailed). Then(). ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { if assert.Equal(t, wfv1.WorkflowFailed, status.Phase) { @@ -1186,52 +1180,6 @@ func (s *CLISuite) TestWorkflowTemplateRefSubmit() { }) } -func (s *CLISuite) TestWorkflowLevelSemaphore() { - semaphoreData := map[string]string{ - "workflow": "1", - } - s.Need(Offloading) - s.Given(). - Workflow("@testdata/semaphore-wf-level.yaml"). - When(). - CreateConfigMap("my-config", semaphoreData). - RunCli([]string{"submit", "testdata/semaphore-wf-level-1.yaml", "-l", "workflows.argoproj.io/test=true"}, func(t *testing.T, output string, err error) { - if assert.NoError(t, err) { - assert.Contains(t, output, "semaphore-wf-level-1") - } - }). - SubmitWorkflow(). - WaitForWorkflow(fixtures.Condition(func(wf *wfv1.Workflow) (bool, string) { - return wf.Status.Phase == wfv1.WorkflowUnknown, "Workflow is waiting for lock" - })). - WaitForWorkflow(). - DeleteConfigMap("my-config"). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) -} - -func (s *CLISuite) TestTemplateLevelSemaphore() { - semaphoreData := map[string]string{ - "template": "1", - } - - s.Need(Offloading) - s.Given(). - Workflow("@testdata/semaphore-tmpl-level.yaml"). - When(). - CreateConfigMap("my-config", semaphoreData). - SubmitWorkflow(). - WaitForWorkflow(fixtures.Condition(func(wf *wfv1.Workflow) (bool, string) { - return wf.Status.Phase == wfv1.WorkflowRunning, "waiting for Workflow to run" - }), 10*time.Second). - RunCli([]string{"get", "semaphore-tmpl-level"}, func(t *testing.T, output string, err error) { - assert.Contains(t, output, "Waiting for") - }). - WaitForWorkflow() -} - func (s *CLISuite) TestRetryOmit() { s.Need(Offloading) s.Given(). diff --git a/test/e2e/cluster_workflow_template_test.go b/test/e2e/cluster_workflow_template_test.go index d858074d236b..44d7233f5428 100644 --- a/test/e2e/cluster_workflow_template_test.go +++ b/test/e2e/cluster_workflow_template_test.go @@ -7,9 +7,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" "github.com/argoproj/argo-workflows/v3/test/e2e/fixtures" ) @@ -26,11 +24,7 @@ func (s *ClusterWorkflowTemplateSuite) TestSubmitClusterWorkflowTemplate() { RunCli([]string{"submit", "--from", "clusterworkflowtemplate/cluster-workflow-template-whalesay-template", "--name", "my-wf", "-l", "workflows.argoproj.io/test=true"}, func(t *testing.T, output string, err error) { assert.NoError(t, err) }). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, metadata *v1.ObjectMeta, status *v1alpha1.WorkflowStatus) { - assert.Equal(t, status.Phase, v1alpha1.WorkflowSucceeded) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func (s *ClusterWorkflowTemplateSuite) TestNestedClusterWorkflowTemplate() { @@ -63,11 +57,7 @@ spec: value: hello from nested `).When(). SubmitWorkflow(). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, metadata *v1.ObjectMeta, status *v1alpha1.WorkflowStatus) { - assert.Equal(t, v1alpha1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func TestClusterWorkflowTemplateSuite(t *testing.T) { diff --git a/test/e2e/estimated_duration_test.go b/test/e2e/estimated_duration_test.go index 0b813a80a818..0f0241913e0d 100644 --- a/test/e2e/estimated_duration_test.go +++ b/test/e2e/estimated_duration_test.go @@ -25,10 +25,9 @@ func (s *EstimatedDurationSuite) TestWorkflowTemplate() { SubmitWorkflowsFromWorkflowTemplates(). WaitForWorkflow(). SubmitWorkflowsFromWorkflowTemplates(). - WaitForWorkflow(). + WaitForWorkflow(fixtures.ToBeSucceeded). Then(). ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) assert.NotEmpty(t, status.EstimatedDuration) assert.NotEmpty(t, status.Nodes[metadata.Name].EstimatedDuration) }) @@ -42,10 +41,9 @@ func (s *EstimatedDurationSuite) TestClusterWorkflowTemplate() { SubmitWorkflowsFromClusterWorkflowTemplates(). WaitForWorkflow(). SubmitWorkflowsFromClusterWorkflowTemplates(). - WaitForWorkflow(). + WaitForWorkflow(fixtures.ToBeSucceeded). Then(). ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) assert.NotEmpty(t, status.EstimatedDuration) assert.NotEmpty(t, status.Nodes[metadata.Name].EstimatedDuration) }) @@ -59,10 +57,9 @@ func (s *EstimatedDurationSuite) TestCronWorkflow() { SubmitWorkflowsFromCronWorkflows(). WaitForWorkflow(). SubmitWorkflowsFromCronWorkflows(). - WaitForWorkflow(). + WaitForWorkflow(fixtures.ToBeSucceeded). Then(). ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) assert.NotEmpty(t, status.EstimatedDuration) assert.NotEmpty(t, status.Nodes[metadata.Name].EstimatedDuration) }) diff --git a/test/e2e/fixtures/when.go b/test/e2e/fixtures/when.go index 28d66626168b..b234159a9e28 100644 --- a/test/e2e/fixtures/when.go +++ b/test/e2e/fixtures/when.go @@ -166,6 +166,10 @@ func (w *When) CreateCronWorkflow() *When { type Condition func(wf *wfv1.Workflow) (bool, string) var ( + ToBeRunning = ToHavePhase(wfv1.WorkflowRunning) + ToBeSucceeded = ToHavePhase(wfv1.WorkflowSucceeded) + ToBeErrored = ToHavePhase(wfv1.WorkflowError) + ToBeFailed = ToHavePhase(wfv1.WorkflowFailed) ToBeCompleted Condition = func(wf *wfv1.Workflow) (bool, string) { return wf.Labels[common.LabelKeyCompleted] == "true", "to be completed" } @@ -177,10 +181,6 @@ var ( } ) -var ToBeSucceeded Condition = func(wf *wfv1.Workflow) (bool, string) { - return wf.Status.Phase == wfv1.WorkflowSucceeded, "to be succeeded" -} - // `ToBeDone` replaces `ToFinish` which also makes sure the workflow is both complete not pending archiving. // This additional check is not needed for most use case, however in `AfterTest` we delete the workflow and this // creates a lot of warning messages in the logs that are cause by misuse rather than actual problems. @@ -193,6 +193,12 @@ var ToBeArchived Condition = func(wf *wfv1.Workflow) (bool, string) { return wf.Labels[common.LabelKeyWorkflowArchivingStatus] == "Archived", "to be archived" } +var ToHavePhase = func(p wfv1.WorkflowPhase) Condition { + return func(wf *wfv1.Workflow) (bool, string) { + return wf.Status.Phase == p, fmt.Sprintf("to be %s", p) + } +} + var ToBeWaitingOnAMutex Condition = func(wf *wfv1.Workflow) (bool, string) { return wf.Status.Synchronization != nil && wf.Status.Synchronization.Mutex != nil, "to be waiting on a mutex" } diff --git a/test/e2e/functional_test.go b/test/e2e/functional_test.go index 5123a12fb279..1b3806ee2f8e 100644 --- a/test/e2e/functional_test.go +++ b/test/e2e/functional_test.go @@ -60,36 +60,6 @@ func (s *FunctionalSuite) TestWorkflowLevelErrorRetryPolicy() { }) } -func (s *FunctionalSuite) TestSynchronizationWfLevelMutex() { - s.Given(). - Workflow("@functional/synchronization-mutex-wf-level-1.yaml"). - When(). - SubmitWorkflow(). - Given(). - Workflow("@functional/synchronization-mutex-wf-level.yaml"). - When(). - SubmitWorkflow(). - WaitForWorkflow(fixtures.ToBeWaitingOnAMutex). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) -} - -func (s *FunctionalSuite) TestTemplateLevelMutex() { - s.Given(). - Workflow("@functional/synchronization-mutex-tmpl-level.yaml"). - When(). - SubmitWorkflow(). - WaitForWorkflow(fixtures.ToBeWaitingOnAMutex). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) -} - func (s *FunctionalSuite) TestWorkflowTTL() { s.Given(). Workflow(` diff --git a/test/e2e/invalid_command_test.go b/test/e2e/invalid_command_test.go new file mode 100644 index 000000000000..1a8cfaf0c59f --- /dev/null +++ b/test/e2e/invalid_command_test.go @@ -0,0 +1,34 @@ +// +build executor + +package e2e + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/suite" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" + "github.com/argoproj/argo-workflows/v3/test/e2e/fixtures" +) + +type InvalidCommandSuite struct { + fixtures.E2ESuite +} + +func (s *InvalidCommandSuite) TestInvalidCommand() { + s.Given(). + Workflow("@testdata/cannot-start-workflow.yaml"). + When(). + SubmitWorkflow(). + WaitForWorkflow(fixtures.ToBeFailed). + Then(). + ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + assert.Contains(t, status.Message, "executable file not found") + }) +} + +func TestInvalidCommandSuite(t *testing.T) { + suite.Run(t, new(InvalidCommandSuite)) +} diff --git a/test/e2e/pod_cleanup_test.go b/test/e2e/pod_cleanup_test.go index 63f320dc404e..9e9c957e6005 100644 --- a/test/e2e/pod_cleanup_test.go +++ b/test/e2e/pod_cleanup_test.go @@ -70,10 +70,9 @@ spec: `). When(). SubmitWorkflow(). - WaitForWorkflow(). + WaitForWorkflow(fixtures.ToBeFailed). Then(). ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowFailed, status.Phase) assert.True(t, strings.Contains(status.Message, "failed to parse label selector")) }) } diff --git a/test/e2e/progress_test.go b/test/e2e/progress_test.go index 080a971c43aa..ff99505b00fe 100644 --- a/test/e2e/progress_test.go +++ b/test/e2e/progress_test.go @@ -22,10 +22,9 @@ func (s *ProgressSuite) TestDefaultProgress() { Workflow("@testdata/basic-workflow.yaml"). When(). SubmitWorkflow(). - WaitForWorkflow(). + WaitForWorkflow(fixtures.ToBeSucceeded). Then(). ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) assert.Equal(t, wfv1.Progress("1/1"), status.Progress) assert.Equal(t, wfv1.Progress("1/1"), status.Nodes[metadata.Name].Progress) }) diff --git a/test/e2e/run_as_not_root_test.go b/test/e2e/run_as_not_root_test.go index 98971895a5a0..92dfc31bcb4b 100644 --- a/test/e2e/run_as_not_root_test.go +++ b/test/e2e/run_as_not_root_test.go @@ -5,11 +5,8 @@ package e2e import ( "testing" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" "github.com/argoproj/argo-workflows/v3/test/e2e/fixtures" ) @@ -23,11 +20,7 @@ func (s *RunAsNonRootSuite) TestRunAsNonRootWorkflow() { Workflow("@smoke/runasnonroot-workflow.yaml"). When(). SubmitWorkflow(). - WaitForWorkflow(). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded) } func TestRunAsNonRootSuite(t *testing.T) { diff --git a/test/e2e/semaphore_test.go b/test/e2e/semaphore_test.go new file mode 100644 index 000000000000..6a68e97c29fa --- /dev/null +++ b/test/e2e/semaphore_test.go @@ -0,0 +1,76 @@ +// +build functional + +package e2e + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/suite" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" + "github.com/argoproj/argo-workflows/v3/test/e2e/fixtures" +) + +type SemaphoreSuite struct { + fixtures.E2ESuite +} + +func (s *SemaphoreSuite) TestSynchronizationWfLevelMutex() { + s.Given(). + Workflow("@functional/synchronization-mutex-wf-level-1.yaml"). + When(). + SubmitWorkflow(). + Given(). + Workflow("@functional/synchronization-mutex-wf-level.yaml"). + When(). + SubmitWorkflow(). + WaitForWorkflow(fixtures.ToBeWaitingOnAMutex). + WaitForWorkflow(fixtures.ToBeSucceeded) +} + +func (s *SemaphoreSuite) TestTemplateLevelMutex() { + s.Given(). + Workflow("@functional/synchronization-mutex-tmpl-level.yaml"). + When(). + SubmitWorkflow(). + WaitForWorkflow(fixtures.ToBeWaitingOnAMutex). + WaitForWorkflow(fixtures.ToBeSucceeded) +} + +func (s *SemaphoreSuite) TestWorkflowLevelSemaphore() { + s.Given(). + Workflow("@testdata/semaphore-wf-level.yaml"). + When(). + CreateConfigMap("my-config", map[string]string{"workflow": "1"}). + SubmitWorkflow(). + WaitForWorkflow(fixtures.ToHavePhase(wfv1.WorkflowUnknown)). + WaitForWorkflow(). + DeleteConfigMap("my-config"). + Then(). + When(). + WaitForWorkflow(fixtures.ToBeSucceeded) +} + +func (s *SemaphoreSuite) TestTemplateLevelSemaphore() { + s.Given(). + Workflow("@testdata/semaphore-tmpl-level.yaml"). + When(). + CreateConfigMap("my-config", map[string]string{"template": "1"}). + SubmitWorkflow(). + WaitForWorkflow(fixtures.ToBeRunning). + Then(). + ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + assert.True(t, status.Nodes.Any(func(n wfv1.NodeStatus) bool { + return strings.Contains(n.Message, "Waiting for") + })) + }). + When(). + WaitForWorkflow() +} + +func TestSemaphoreSuite(t *testing.T) { + suite.Run(t, new(SemaphoreSuite)) +} diff --git a/test/e2e/signals_test.go b/test/e2e/signals_test.go index e28f727ccf24..daae668f304f 100644 --- a/test/e2e/signals_test.go +++ b/test/e2e/signals_test.go @@ -14,6 +14,8 @@ import ( "github.com/argoproj/argo-workflows/v3/test/e2e/fixtures" ) +const kill2xDuration = 70 * time.Second + // Tests the use of signals to kill containers. // argoproj/argosay:v2 does not contain sh, so you must use argoproj/argosay:v1. // Killing often requires SIGKILL, which is issued 30s after SIGTERM. So tests need longer (>30s) timeout. @@ -37,7 +39,7 @@ func (s *SignalsSuite) TestStopBehavior() { assert.NoError(t, err) assert.Regexp(t, "workflow stop-terminate-.* stopped", output) }). - WaitForWorkflow(1 * time.Minute). + WaitForWorkflow(kill2xDuration). Then(). ExpectWorkflow(func(t *testing.T, m *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { assert.Contains(t, []wfv1.WorkflowPhase{wfv1.WorkflowFailed, wfv1.WorkflowError}, status.Phase) @@ -66,7 +68,7 @@ func (s *SignalsSuite) TestTerminateBehavior() { assert.NoError(t, err) assert.Regexp(t, "workflow stop-terminate-.* terminated", output) }). - WaitForWorkflow(1 * time.Minute). + WaitForWorkflow(kill2xDuration). Then(). ExpectWorkflow(func(t *testing.T, m *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { assert.Contains(t, []wfv1.WorkflowPhase{wfv1.WorkflowFailed, wfv1.WorkflowError}, status.Phase) @@ -131,7 +133,7 @@ spec: `). When(). SubmitWorkflow(). - WaitForWorkflow(1 * time.Minute). + WaitForWorkflow(kill2xDuration). Then(). ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { assert.Contains(t, []wfv1.WorkflowPhase{wfv1.WorkflowFailed, wfv1.WorkflowError}, status.Phase) @@ -148,11 +150,7 @@ func (s *SignalsSuite) TestSidecars() { Workflow("@testdata/sidecar-workflow.yaml"). When(). SubmitWorkflow(). - WaitForWorkflow(1 * time.Minute). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - assert.Equal(t, wfv1.WorkflowSucceeded, status.Phase) - }) + WaitForWorkflow(fixtures.ToBeSucceeded, kill2xDuration) } func TestSignalsSuite(t *testing.T) { diff --git a/test/e2e/testdata/cannot-start-workflow.yaml b/test/e2e/testdata/cannot-start-workflow.yaml new file mode 100644 index 000000000000..f55b82627069 --- /dev/null +++ b/test/e2e/testdata/cannot-start-workflow.yaml @@ -0,0 +1,12 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + generateName: cannot-start- +spec: + entrypoint: main + templates: + - name: main + container: + image: argoproj/argosay:v2 + # this cannot start + command: [ invalid ] \ No newline at end of file diff --git a/test/e2e/testdata/semaphore-tmpl-level.yaml b/test/e2e/testdata/semaphore-tmpl-level.yaml index 08a32d5b3407..7f636e191081 100644 --- a/test/e2e/testdata/semaphore-tmpl-level.yaml +++ b/test/e2e/testdata/semaphore-tmpl-level.yaml @@ -29,4 +29,3 @@ spec: key: template container: image: argoproj/argosay:v2 - args: ["sleep", "1s"] diff --git a/test/e2e/testdata/semaphore-wf-level.yaml b/test/e2e/testdata/semaphore-wf-level.yaml index 351cfa7f8bbf..acc11961b968 100644 --- a/test/e2e/testdata/semaphore-wf-level.yaml +++ b/test/e2e/testdata/semaphore-wf-level.yaml @@ -13,4 +13,3 @@ spec: - name: whalesay container: image: argoproj/argosay:v2 - args: ["sleep", "1s"]