From 93a7d5b33f010f3e6564a7af283fe2634144a157 Mon Sep 17 00:00:00 2001 From: Neil Xie Date: Wed, 23 Oct 2024 14:33:10 -0700 Subject: [PATCH 1/2] Add unit test for ResetInBatch --- tools/cli/workflow_commands_test.go | 157 ++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) diff --git a/tools/cli/workflow_commands_test.go b/tools/cli/workflow_commands_test.go index 13dcb2c313e..fc1ccaa05b1 100644 --- a/tools/cli/workflow_commands_test.go +++ b/tools/cli/workflow_commands_test.go @@ -1117,3 +1117,160 @@ func TestLoadWorkflowIDsFromFile_Failure(t *testing.T) { _, err := loadWorkflowIDsFromFile("non exist file", ",") assert.Error(t, err) } + +func Test_ResetInBatch_WithQuery(t *testing.T) { + mockCtrl := gomock.NewController(t) + serverFrontendClient := frontend.NewMockClient(mockCtrl) + app := NewCliApp(&clientFactoryMock{ + serverFrontendClient: serverFrontendClient, + }) + + set := flag.NewFlagSet("test", 0) + c := cli.NewContext(app, set, nil) + // missing domain flag + err := ResetInBatch(c) + assert.Error(t, err) + + set.String(FlagDomain, "test-domain", "domain") + set.String("reset_type", "BadBinary", "reset_type") + set.String("reset_bad_binary_checksum", "test-bad-binary-checksum", "reset_bad_binary_checksum") + set.String(FlagParallismDeprecated, "1", "input parallism") + set.String(FlagParallelism, "2", "parallelism") + set.String(FlagExcludeWorkflowIDByQuery, "test-workflow-id", "exclude query") + + // missing reason + err = ResetInBatch(c) + assert.Error(t, err) + + set.String(FlagReason, "test", "reason") + //missing query + err = ResetInBatch(c) + assert.Error(t, err) + + set.String(FlagListQuery, "WorkflowType='test-workflow-type'", "list query") + serverFrontendClient.EXPECT().ScanWorkflowExecutions(gomock.Any(), gomock.Any()).Return(&types.ListWorkflowExecutionsResponse{ + Executions: []*types.WorkflowExecutionInfo{ + { + Execution: &types.WorkflowExecution{ + WorkflowID: "test-workflow-id", + RunID: "test-run-id", + }, + }, + }, + }, nil).Times(2) + err = ResetInBatch(c) + assert.NoError(t, err) +} + +func Test_ResetInBatch_WithFile(t *testing.T) { + mockCtrl := gomock.NewController(t) + serverFrontendClient := frontend.NewMockClient(mockCtrl) + app := NewCliApp(&clientFactoryMock{ + serverFrontendClient: serverFrontendClient, + }) + + set := flag.NewFlagSet("test", 0) + set.String(FlagDomain, "test-domain", "domain") + set.String("reset_type", "BadBinary", "reset_type") + set.String("reset_bad_binary_checksum", "test-bad-binary-checksum", "reset_bad_binary_checksum") + content := "wid1,wid2,wid3\n\nwid4,wid5\nwid6\n" + fileName, cleanup := createTempFileWithContent(t, content) + defer cleanup() + set.String(FlagInputFile, fileName, "input file") + set.String(FlagParallismDeprecated, "1", "input parallism") + set.String(FlagParallelism, "2", "parallelism") + set.String(FlagExcludeFile, fileName, "exclude query") + set.String(FlagReason, "test", "reason") + + serverFrontendClient.EXPECT().ScanWorkflowExecutions(gomock.Any(), gomock.Any()).Return(&types.ListWorkflowExecutionsResponse{ + Executions: []*types.WorkflowExecutionInfo{ + { + Execution: &types.WorkflowExecution{ + WorkflowID: "test-workflow-id", + RunID: "test-run-id", + }, + }, + }, + }, nil).AnyTimes() + c := cli.NewContext(app, set, nil) + err := ResetInBatch(c) + assert.NoError(t, err) + + // error when both exclude query and file are provided + set.String(FlagExcludeWorkflowIDByQuery, "test-workflow-id", "exclude query") + err = ResetInBatch(c) + assert.Error(t, err) +} + +func Test_ResetInBatch_InvalidDescisionOffset(t *testing.T) { + mockCtrl := gomock.NewController(t) + serverFrontendClient := frontend.NewMockClient(mockCtrl) + app := NewCliApp(&clientFactoryMock{ + serverFrontendClient: serverFrontendClient, + }) + + set := flag.NewFlagSet("test", 0) + set.String(FlagDomain, "test-domain", "domain") + set.String(FlagDecisionOffset, "100", "decision_offset") + set.String(FlagResetType, "BadBinary", "reset_type") + c := cli.NewContext(app, set, nil) + err := ResetInBatch(c) + assert.Error(t, err) +} + +func Test_ResetInBatch_InvalidResetType(t *testing.T) { + mockCtrl := gomock.NewController(t) + serverFrontendClient := frontend.NewMockClient(mockCtrl) + app := NewCliApp(&clientFactoryMock{ + serverFrontendClient: serverFrontendClient, + }) + + set := flag.NewFlagSet("test", 0) + set.String(FlagDomain, "test-domain", "domain") + set.String(FlagDecisionOffset, "-1", "decision_offset") + set.String(FlagResetType, "test", "reset_type") + c := cli.NewContext(app, set, nil) + err := ResetInBatch(c) + assert.Error(t, err) +} + +func Test_ResetInBatch_InvalidInputFile(t *testing.T) { + mockCtrl := gomock.NewController(t) + serverFrontendClient := frontend.NewMockClient(mockCtrl) + app := NewCliApp(&clientFactoryMock{ + serverFrontendClient: serverFrontendClient, + }) + + set := flag.NewFlagSet("test", 0) + set.String(FlagDomain, "test-domain", "domain") + set.String("reset_type", "BadBinary", "reset_type") + set.String("reset_bad_binary_checksum", "test-bad-binary-checksum", "reset_bad_binary_checksum") + set.String(FlagInputFile, "non exist file", "input file") + set.String(FlagParallismDeprecated, "1", "input parallism") + set.String(FlagParallelism, "2", "parallelism") + set.String(FlagReason, "test", "reason") + c := cli.NewContext(app, set, nil) + err := ResetInBatch(c) + assert.Error(t, err) +} + +func Test_ResetInBatch_InvalidexcludeFile(t *testing.T) { + mockCtrl := gomock.NewController(t) + serverFrontendClient := frontend.NewMockClient(mockCtrl) + app := NewCliApp(&clientFactoryMock{ + serverFrontendClient: serverFrontendClient, + }) + + set := flag.NewFlagSet("test", 0) + set.String(FlagDomain, "test-domain", "domain") + set.String("reset_type", "BadBinary", "reset_type") + set.String("reset_bad_binary_checksum", "test-bad-binary-checksum", "reset_bad_binary_checksum") + set.String(FlagExcludeFile, "non exist file", "exclude query") + set.String(FlagParallismDeprecated, "1", "input parallism") + set.String(FlagParallelism, "2", "parallelism") + set.String(FlagReason, "test", "reason") + set.String(FlagListQuery, "WorkflowType='test-workflow-type'", "list query") + c := cli.NewContext(app, set, nil) + err := ResetInBatch(c) + assert.Error(t, err) +} From e71ca237fbcca3673614d2efa5e253565f135d2b Mon Sep 17 00:00:00 2001 From: Neil Xie Date: Wed, 23 Oct 2024 15:09:16 -0700 Subject: [PATCH 2/2] lint --- tools/cli/workflow_commands_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cli/workflow_commands_test.go b/tools/cli/workflow_commands_test.go index fc1ccaa05b1..55a268087c9 100644 --- a/tools/cli/workflow_commands_test.go +++ b/tools/cli/workflow_commands_test.go @@ -1143,7 +1143,7 @@ func Test_ResetInBatch_WithQuery(t *testing.T) { assert.Error(t, err) set.String(FlagReason, "test", "reason") - //missing query + // missing query err = ResetInBatch(c) assert.Error(t, err)