@@ -31,6 +31,7 @@ func TestWorkflowRegistration(t *testing.T) {
31
31
tests := []struct {
32
32
msg string
33
33
register func (r * registry )
34
+ registerPanic bool
34
35
workflowType string
35
36
altWorkflowType string
36
37
resolveByFunction interface {}
@@ -66,11 +67,41 @@ func TestWorkflowRegistration(t *testing.T) {
66
67
altWorkflowType : "go.uber.org/cadence/internal.(*testWorkflowStruct).Method-fm" ,
67
68
resolveByFunction : w .Method ,
68
69
},
70
+ {
71
+ msg : "register duplicated workflow in one registry (should panic)" ,
72
+ register : func (r * registry ) {
73
+ r .RegisterWorkflow (testWorkflowFunction )
74
+ r .RegisterWorkflow (testWorkflowFunction )
75
+ },
76
+ registerPanic : true ,
77
+ },
78
+ {
79
+ msg : "register duplicated workflow with already registered check disabled" ,
80
+ register : func (r * registry ) {
81
+ r .RegisterWorkflow (testWorkflowFunction )
82
+ r .RegisterWorkflowWithOptions (testWorkflowFunction , RegisterWorkflowOptions {DisableAlreadyRegisteredCheck : true })
83
+ },
84
+ workflowType : "go.uber.org/cadence/internal.testWorkflowFunction" ,
85
+ resolveByFunction : testWorkflowFunction ,
86
+ },
87
+ {
88
+ msg : "register duplicated workflow in chained registry (should panic)" ,
89
+ register : func (r * registry ) {
90
+ r .next .RegisterWorkflow (testWorkflowFunction )
91
+ r .RegisterWorkflow (testWorkflowFunction )
92
+ },
93
+ registerPanic : true ,
94
+ },
69
95
}
70
96
71
97
for _ , tt := range tests {
72
98
t .Run (tt .msg , func (t * testing.T ) {
73
99
r := newRegistry ()
100
+ if tt .registerPanic {
101
+ require .Panics (t , func () { tt .register (r ) }, "register should panic" )
102
+ return
103
+ }
104
+
74
105
tt .register (r )
75
106
76
107
// Verify registered workflow type
@@ -104,6 +135,7 @@ func TestActivityRegistration(t *testing.T) {
104
135
tests := []struct {
105
136
msg string
106
137
register func (r * registry )
138
+ registerPanic bool
107
139
activityType string
108
140
altActivityType string
109
141
resolveByFunction interface {}
@@ -156,10 +188,41 @@ func TestActivityRegistration(t *testing.T) {
156
188
resolveByFunction : (& testActivityStruct {}).Method ,
157
189
resolveByAlias : "prefix.Method" ,
158
190
},
191
+ {
192
+ msg : "register duplicated activity function in one registry (should panic)" ,
193
+ register : func (r * registry ) {
194
+ duplicatedActivityAlias := "activity.alias"
195
+ r .RegisterActivityWithOptions (testActivityFunction , RegisterActivityOptions {Name : duplicatedActivityAlias })
196
+ r .RegisterActivityWithOptions (testActivityFunction , RegisterActivityOptions {Name : duplicatedActivityAlias })
197
+ },
198
+ registerPanic : true ,
199
+ },
200
+ {
201
+ msg : "register duplicated activity struct with already registered check disabled" ,
202
+ register : func (r * registry ) {
203
+ r .RegisterActivity (& testActivityStruct {})
204
+ r .RegisterActivityWithOptions (& testActivityStruct {}, RegisterActivityOptions {DisableAlreadyRegisteredCheck : true })
205
+ },
206
+ activityType : "go.uber.org/cadence/internal.(*testActivityStruct).Method" ,
207
+ resolveByFunction : (& testActivityStruct {}).Method ,
208
+ },
209
+ {
210
+ msg : "register duplicated activity function in chained registry (should panic)" ,
211
+ register : func (r * registry ) {
212
+ r .next .RegisterActivity (testActivityFunction )
213
+ r .RegisterActivity (testActivityFunction )
214
+ },
215
+ registerPanic : true ,
216
+ },
159
217
}
160
218
for _ , tt := range tests {
161
219
t .Run (tt .msg , func (t * testing.T ) {
162
220
r := newRegistry ()
221
+ if tt .registerPanic {
222
+ require .Panics (t , func () { tt .register (r ) }, "register should panic" )
223
+ return
224
+ }
225
+
163
226
tt .register (r )
164
227
165
228
// Verify registered activity type
0 commit comments