@@ -27,10 +27,12 @@ import (
27
27
)
28
28
29
29
func TestWorkflowRegistration (t * testing.T ) {
30
+ w := & testWorkflowStruct {}
30
31
tests := []struct {
31
32
msg string
32
33
register func (r * registry )
33
34
workflowType string
35
+ altWorkflowType string
34
36
resolveByFunction interface {}
35
37
resolveByAlias string
36
38
}{
@@ -57,6 +59,13 @@ func TestWorkflowRegistration(t *testing.T) {
57
59
resolveByFunction : testWorkflowFunction ,
58
60
resolveByAlias : "workflow.alias" ,
59
61
},
62
+ {
63
+ msg : "register workflow struct function (backwards compatible)" ,
64
+ register : func (r * registry ) { r .RegisterWorkflow (w .Method ) },
65
+ workflowType : "go.uber.org/cadence/internal.(*testWorkflowStruct).Method" ,
66
+ altWorkflowType : "go.uber.org/cadence/internal.(*testWorkflowStruct).Method-fm" ,
67
+ resolveByFunction : w .Method ,
68
+ },
60
69
}
61
70
62
71
for _ , tt := range tests {
@@ -72,6 +81,12 @@ func TestWorkflowRegistration(t *testing.T) {
72
81
_ , ok := r .getWorkflowFn (tt .workflowType )
73
82
require .True (t , ok )
74
83
84
+ // Verify workflow is resolved from alternative (backwards compatible) workflow type
85
+ if len (tt .altWorkflowType ) > 0 {
86
+ _ , ok = r .getWorkflowFn (tt .altWorkflowType )
87
+ require .True (t , ok )
88
+ }
89
+
75
90
// Verify resolving by function reference
76
91
workflowType = getWorkflowFunctionName (r , tt .resolveByFunction )
77
92
require .Equal (t , tt .workflowType , workflowType )
@@ -90,6 +105,7 @@ func TestActivityRegistration(t *testing.T) {
90
105
msg string
91
106
register func (r * registry )
92
107
activityType string
108
+ altActivityType string
93
109
resolveByFunction interface {}
94
110
resolveByAlias string
95
111
}{
@@ -120,6 +136,7 @@ func TestActivityRegistration(t *testing.T) {
120
136
msg : "register activity struct" ,
121
137
register : func (r * registry ) { r .RegisterActivity (& testActivityStruct {}) },
122
138
activityType : "go.uber.org/cadence/internal.(*testActivityStruct).Method" ,
139
+ altActivityType : "go.uber.org/cadence/internal.(*testActivityStruct).Method-fm" ,
123
140
resolveByFunction : (& testActivityStruct {}).Method ,
124
141
},
125
142
{
@@ -153,6 +170,12 @@ func TestActivityRegistration(t *testing.T) {
153
170
_ , ok := r .GetActivity (tt .activityType )
154
171
require .True (t , ok )
155
172
173
+ // Verify activity is resolved from alternative (backwards compatible) activity type
174
+ if len (tt .altActivityType ) > 0 {
175
+ _ , ok = r .GetActivity (tt .altActivityType )
176
+ require .True (t , ok )
177
+ }
178
+
156
179
// Verify resolving by function reference
157
180
activityType = getActivityFunctionName (r , tt .resolveByFunction )
158
181
require .Equal (t , tt .activityType , activityType , "resolve by function reference" )
@@ -166,8 +189,10 @@ func TestActivityRegistration(t *testing.T) {
166
189
}
167
190
}
168
191
192
+ type testWorkflowStruct struct {}
169
193
type testActivityStruct struct {}
170
194
195
+ func (ts * testWorkflowStruct ) Method (ctx Context ) error { return nil }
171
196
func (ts * testActivityStruct ) Method () error { return nil }
172
197
173
198
func testActivityFunction () error { return nil }
0 commit comments