Skip to content

Commit 9e9e631

Browse files
committed
Avoid global registration of workflow where posssible
Cadence has deprecated global registration causing our linter to fail. I haven't figured out how to avoid global registration in receipts_test.go so I've disabled the linter in that file.
1 parent 3dd3995 commit 9e9e631

File tree

4 files changed

+31
-69
lines changed

4 files changed

+31
-69
lines changed

internal/cadence/register.go

Lines changed: 0 additions & 20 deletions
This file was deleted.

internal/workflow/processing_test.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,10 @@ import (
1414

1515
logrtesting "github.com/go-logr/logr/testing"
1616
"github.com/golang/mock/gomock"
17-
"github.com/google/uuid"
1817
"github.com/stretchr/testify/mock"
1918
"github.com/stretchr/testify/suite"
2019
"go.uber.org/cadence"
2120
cadencetestsuite "go.uber.org/cadence/testsuite"
22-
cadenceworkflow "go.uber.org/cadence/workflow"
2321
)
2422

2523
type ProcessingWorkflowTestSuite struct {
@@ -31,15 +29,13 @@ type ProcessingWorkflowTestSuite struct {
3129
manager *manager.Manager
3230

3331
// Each test registers the workflow with a different name to avoid dups.
34-
workflow string
32+
workflow *ProcessingWorkflow
3533
}
3634

3735
func (s *ProcessingWorkflowTestSuite) SetupTest() {
3836
s.env = s.NewTestWorkflowEnvironment()
3937
s.manager = buildManager(s.T(), gomock.NewController(s.T()))
40-
41-
s.workflow = uuid.New().String()
42-
cadenceworkflow.RegisterWithOptions(NewProcessingWorkflow(s.manager).Execute, cadenceworkflow.RegisterOptions{Name: s.workflow})
38+
s.workflow = NewProcessingWorkflow(s.manager)
4339
}
4440

4541
func (s *ProcessingWorkflowTestSuite) AfterTest(suiteName, testName string) {
@@ -72,7 +68,7 @@ func (s *ProcessingWorkflowTestSuite) TestParseErrorIsIgnored() {
7268
}).Return(nil).Once()
7369

7470
retentionPeriod := time.Second
75-
s.env.ExecuteWorkflow(s.workflow, &collection.ProcessingWorkflowRequest{
71+
s.env.ExecuteWorkflow(s.workflow.Execute, &collection.ProcessingWorkflowRequest{
7672
CollectionID: 0,
7773
WatcherName: "watcher",
7874
PipelineName: "pipeline",
@@ -108,7 +104,7 @@ func (s *ProcessingWorkflowTestSuite) TestParseError() {
108104
}).Return(nil).Once()
109105

110106
retentionPeriod := time.Second
111-
s.env.ExecuteWorkflow(s.workflow, &collection.ProcessingWorkflowRequest{
107+
s.env.ExecuteWorkflow(s.workflow.Execute, &collection.ProcessingWorkflowRequest{
112108
CollectionID: 0,
113109
WatcherName: "watcher",
114110
PipelineName: "pipeline",

internal/workflow/receipts_test.go

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// nolint:staticcheck
12
package workflow
23

34
import (
@@ -14,32 +15,21 @@ import (
1415
"github.com/stretchr/testify/mock"
1516
cadenceactivity "go.uber.org/cadence/activity"
1617
cadencetestsuite "go.uber.org/cadence/testsuite"
17-
cadenceworkflow "go.uber.org/cadence/workflow"
1818
)
1919

2020
// sendReceipts exits immediately after an activity error, ensuring that
2121
// receipt delivery is halted once one delivery has failed.
2222
func TestSendReceiptsSequentialBehavior(t *testing.T) {
2323
wts := cadencetestsuite.WorkflowTestSuite{}
2424
env := wts.NewTestWorkflowEnvironment()
25-
2625
m := buildManager(t, gomock.NewController(t))
27-
pw := NewProcessingWorkflow(m)
28-
29-
wf := func(ctx cadenceworkflow.Context, params *sendReceiptsParams) error {
30-
return pw.sendReceipts(ctx, params)
31-
}
32-
cadenceworkflow.Register(wf)
3326

3427
AsyncCompletionActivityName = uuid.New().String()
3528
cadenceactivity.RegisterWithOptions(NewAsyncCompletionActivity(m).Execute, cadenceactivity.RegisterOptions{Name: AsyncCompletionActivityName})
3629

3730
nha_activities.UpdateHARIActivityName = uuid.New().String()
3831
cadenceactivity.RegisterWithOptions(nha_activities.NewUpdateHARIActivity(m).Execute, cadenceactivity.RegisterOptions{Name: nha_activities.UpdateHARIActivityName})
3932

40-
nha_activities.UpdateProductionSystemActivityName = uuid.New().String()
41-
cadenceactivity.RegisterWithOptions(nha_activities.NewUpdateProductionSystemActivity(m).Execute, cadenceactivity.RegisterOptions{Name: nha_activities.UpdateProductionSystemActivityName})
42-
4333
params := sendReceiptsParams{
4434
SIPID: "91e3ed2f-b798-4f4e-9133-74193f0d6a4f",
4535
StoredAt: time.Now().UTC(),
@@ -68,7 +58,7 @@ func TestSendReceiptsSequentialBehavior(t *testing.T) {
6858
uint(12345),
6959
).Return("ABANDON", nil).Once()
7060

71-
env.ExecuteWorkflow(wf, &params)
61+
env.ExecuteWorkflow(NewProcessingWorkflow(m).sendReceipts, &params)
7262

7363
assert.True(t, env.IsWorkflowCompleted())
7464
assert.Equal(t, "error sending hari receipt: user abandoned", env.GetWorkflowError().Error())
@@ -78,14 +68,7 @@ func TestSendReceiptsSequentialBehavior(t *testing.T) {
7868
func TestSendReceipts(t *testing.T) {
7969
wts := cadencetestsuite.WorkflowTestSuite{}
8070
env := wts.NewTestWorkflowEnvironment()
81-
8271
m := buildManager(t, gomock.NewController(t))
83-
pw := NewProcessingWorkflow(m)
84-
85-
wf := func(ctx cadenceworkflow.Context, hooks map[string]map[string]interface{}, params *sendReceiptsParams) error {
86-
return pw.sendReceipts(ctx, params)
87-
}
88-
cadenceworkflow.Register(wf)
8972

9073
nha_activities.UpdateHARIActivityName = uuid.New().String()
9174
cadenceactivity.RegisterWithOptions(nha_activities.NewUpdateHARIActivity(m).Execute, cadenceactivity.RegisterOptions{Name: nha_activities.UpdateHARIActivityName})
@@ -125,7 +108,7 @@ func TestSendReceipts(t *testing.T) {
125108
},
126109
).Return(nil).Once()
127110

128-
env.ExecuteWorkflow(wf, m.Hooks, &params)
111+
env.ExecuteWorkflow(NewProcessingWorkflow(m).sendReceipts, &params)
129112

130113
assert.True(t, env.IsWorkflowCompleted())
131114
assertNilWorkflowError(t, env.GetWorkflowError())

main.go

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ import (
3232
"github.com/prometheus/client_golang/prometheus/promhttp"
3333
"github.com/spf13/pflag"
3434
"github.com/spf13/viper"
35+
cadenceactivity "go.uber.org/cadence/activity"
3536
"go.uber.org/cadence/client"
37+
cadenceworkflow "go.uber.org/cadence/workflow"
3638
"go.uber.org/zap"
3739
"go.uber.org/zap/zapcore"
3840
)
@@ -221,34 +223,35 @@ func main() {
221223
// The share-everything pattern should be avoided.
222224
m := manager.NewManager(logger, colsvc, wsvc, pipelineRegistry, config.Hooks)
223225

224-
cadence.RegisterWorkflow(workflow.NewProcessingWorkflow(m).Execute, collection.ProcessingWorkflowName)
225-
cadence.RegisterActivity(activities.NewAcquirePipelineActivity(m).Execute, activities.AcquirePipelineActivityName)
226-
cadence.RegisterActivity(activities.NewDownloadActivity(m).Execute, activities.DownloadActivityName)
227-
cadence.RegisterActivity(activities.NewBundleActivity().Execute, activities.BundleActivityName)
228-
cadence.RegisterActivity(activities.NewValidateTransferActivity().Execute, activities.ValidateTransferActivityName)
229-
cadence.RegisterActivity(activities.NewTransferActivity(m).Execute, activities.TransferActivityName)
230-
cadence.RegisterActivity(activities.NewPollTransferActivity(m).Execute, activities.PollTransferActivityName)
231-
cadence.RegisterActivity(activities.NewPollIngestActivity(m).Execute, activities.PollIngestActivityName)
232-
cadence.RegisterActivity(activities.NewCleanUpActivity(m).Execute, activities.CleanUpActivityName)
233-
cadence.RegisterActivity(activities.NewHidePackageActivity(m).Execute, activities.HidePackageActivityName)
234-
cadence.RegisterActivity(activities.NewDeleteOriginalActivity(m).Execute, activities.DeleteOriginalActivityName)
235-
cadence.RegisterActivity(workflow.NewAsyncCompletionActivity(m).Execute, workflow.AsyncCompletionActivityName)
236-
cadence.RegisterActivity(nha_activities.NewUpdateHARIActivity(m).Execute, nha_activities.UpdateHARIActivityName)
237-
cadence.RegisterActivity(nha_activities.NewUpdateProductionSystemActivity(m).Execute, nha_activities.UpdateProductionSystemActivityName)
238-
239-
cadence.RegisterWorkflow(collection.BulkWorkflow, collection.BulkWorkflowName)
240-
cadence.RegisterActivity(collection.NewBulkActivity(colsvc).Execute, collection.BulkActivityName)
241-
242-
cadence.RegisterWorkflow(batch.BatchWorkflow, batch.BatchWorkflowName)
243-
cadence.RegisterActivity(batch.NewBatchActivity(batchsvc).Execute, batch.BatchActivityName)
244-
245226
done := make(chan struct{})
246227
w, err := cadence.NewWorker(zlogger.Named("cadence-worker"), appName, config.Cadence)
247228
if err != nil {
248229
logger.Error(err, "Error creating Cadence worker.")
249230
os.Exit(1)
250231
}
251232

233+
w.RegisterWorkflowWithOptions(workflow.NewProcessingWorkflow(m).Execute, cadenceworkflow.RegisterOptions{Name: collection.ProcessingWorkflowName})
234+
w.RegisterActivityWithOptions(activities.NewAcquirePipelineActivity(m).Execute, cadenceactivity.RegisterOptions{Name: activities.AcquirePipelineActivityName})
235+
w.RegisterActivityWithOptions(activities.NewDownloadActivity(m).Execute, cadenceactivity.RegisterOptions{Name: activities.DownloadActivityName})
236+
w.RegisterActivityWithOptions(activities.NewBundleActivity().Execute, cadenceactivity.RegisterOptions{Name: activities.BundleActivityName})
237+
w.RegisterActivityWithOptions(activities.NewValidateTransferActivity().Execute, cadenceactivity.RegisterOptions{Name: activities.ValidateTransferActivityName})
238+
w.RegisterActivityWithOptions(activities.NewTransferActivity(m).Execute, cadenceactivity.RegisterOptions{Name: activities.TransferActivityName})
239+
w.RegisterActivityWithOptions(activities.NewPollTransferActivity(m).Execute, cadenceactivity.RegisterOptions{Name: activities.PollTransferActivityName})
240+
w.RegisterActivityWithOptions(activities.NewPollIngestActivity(m).Execute, cadenceactivity.RegisterOptions{Name: activities.PollIngestActivityName})
241+
w.RegisterActivityWithOptions(activities.NewCleanUpActivity(m).Execute, cadenceactivity.RegisterOptions{Name: activities.CleanUpActivityName})
242+
w.RegisterActivityWithOptions(activities.NewHidePackageActivity(m).Execute, cadenceactivity.RegisterOptions{Name: activities.HidePackageActivityName})
243+
w.RegisterActivityWithOptions(activities.NewDeleteOriginalActivity(m).Execute, cadenceactivity.RegisterOptions{Name: activities.DeleteOriginalActivityName})
244+
245+
w.RegisterActivityWithOptions(workflow.NewAsyncCompletionActivity(m).Execute, cadenceactivity.RegisterOptions{Name: workflow.AsyncCompletionActivityName})
246+
w.RegisterActivityWithOptions(nha_activities.NewUpdateHARIActivity(m).Execute, cadenceactivity.RegisterOptions{Name: nha_activities.UpdateHARIActivityName})
247+
w.RegisterActivityWithOptions(nha_activities.NewUpdateProductionSystemActivity(m).Execute, cadenceactivity.RegisterOptions{Name: nha_activities.UpdateProductionSystemActivityName})
248+
249+
w.RegisterWorkflowWithOptions(collection.BulkWorkflow, cadenceworkflow.RegisterOptions{Name: collection.BulkWorkflowName})
250+
w.RegisterActivityWithOptions(collection.NewBulkActivity(colsvc).Execute, cadenceactivity.RegisterOptions{Name: collection.BulkActivityName})
251+
252+
w.RegisterWorkflowWithOptions(batch.BatchWorkflow, cadenceworkflow.RegisterOptions{Name: batch.BatchWorkflowName})
253+
w.RegisterActivityWithOptions(batch.NewBatchActivity(batchsvc).Execute, cadenceactivity.RegisterOptions{Name: batch.BatchActivityName})
254+
252255
g.Add(
253256
func() error {
254257
if err := w.Start(); err != nil {

0 commit comments

Comments
 (0)