@@ -18,6 +18,12 @@ import (
1818
1919func TestExtract (t * testing.T ) {
2020 serializer := tasktoken .NewSerializer ()
21+ mustSerialize := func (token * tokenspb.Task ) []byte {
22+ t .Helper ()
23+ taskTokenBytes , err := serializer .Serialize (token )
24+ assert .NoError (t , err )
25+ return taskTokenBytes
26+ }
2127
2228 wt := logtags .NewWorkflowTags (
2329 serializer ,
@@ -26,32 +32,34 @@ func TestExtract(t *testing.T) {
2632
2733 tv := testvars .New (t )
2834 tv = tv .WithRunID (tv .Any ().RunID ())
29- taskToken := tokenspb.Task {
35+ taskTokenBytes := mustSerialize ( & tokenspb.Task {
3036 WorkflowId : tv .WorkflowID (),
3137 RunId : tv .RunID (),
38+ })
39+
40+ type expectation struct {
41+ workflowID string
42+ activityID string
43+ runID string
3244 }
33- taskTokenBytes , err := serializer .Serialize (& taskToken )
34- assert .NoError (t , err )
3545
3646 testCases := []struct {
3747 name string
3848 req any
3949 fullMethod string
40- workflowID string
41- runID string
50+ expect expectation
4251 }{
4352 {
4453 name : "Frontend StartWorkflowExecutionRequest with only workflowID" ,
4554 req : & workflowservice.StartWorkflowExecutionRequest {WorkflowId : tv .WorkflowID ()},
4655 fullMethod : "/temporal.api.workflowservice.v1.WorkflowService/StartWorkflowExecution" ,
47- workflowID : tv .WorkflowID (),
56+ expect : expectation { workflowID : tv .WorkflowID ()} ,
4857 },
4958 {
5059 name : "Frontend RecordActivityTaskHeartbeatByIdRequest with workflowID and runID" ,
5160 req : & workflowservice.RecordActivityTaskHeartbeatByIdRequest {WorkflowId : tv .WorkflowID (), RunId : tv .RunID ()},
5261 fullMethod : "/temporal.api.workflowservice.v1.WorkflowService/RecordActivityTaskHeartbeatById" ,
53- workflowID : tv .WorkflowID (),
54- runID : tv .RunID (),
62+ expect : expectation {workflowID : tv .WorkflowID (), runID : tv .RunID ()},
5563 },
5664 {
5765 name : "Frontend GetWorkflowExecutionHistoryRequest with execution" ,
@@ -62,8 +70,7 @@ func TestExtract(t *testing.T) {
6270 },
6371 },
6472 fullMethod : "/temporal.api.workflowservice.v1.WorkflowService/GetWorkflowExecutionHistory" ,
65- workflowID : tv .WorkflowID (),
66- runID : tv .RunID (),
73+ expect : expectation {workflowID : tv .WorkflowID (), runID : tv .RunID ()},
6774 },
6875 {
6976 name : "Frontend RequestCancelWorkflowExecutionRequest with workflow_execution" ,
@@ -74,17 +81,39 @@ func TestExtract(t *testing.T) {
7481 },
7582 },
7683 fullMethod : "/temporal.api.workflowservice.v1.WorkflowService/RequestCancelWorkflowExecution" ,
77- workflowID : tv .WorkflowID (),
78- runID : tv .RunID (),
84+ expect : expectation {workflowID : tv .WorkflowID (), runID : tv .RunID ()},
7985 },
8086 {
8187 name : "Frontend RespondActivityTaskCompletedRequest with task_token" ,
8288 req : & workflowservice.RespondActivityTaskCompletedRequest {
8389 TaskToken : taskTokenBytes ,
8490 },
8591 fullMethod : "/temporal.api.workflowservice.v1.WorkflowService/RespondActivityTaskCompleted" ,
86- workflowID : tv .WorkflowID (),
87- runID : tv .RunID (),
92+ expect : expectation {workflowID : tv .WorkflowID (), runID : tv .RunID ()},
93+ },
94+ {
95+ name : "Frontend RespondActivityTaskCompletedRequest with workflow activity task_token" ,
96+ req : & workflowservice.RespondActivityTaskCompletedRequest {
97+ TaskToken : mustSerialize (& tokenspb.Task {
98+ WorkflowId : tv .WorkflowID (),
99+ RunId : tv .RunID (),
100+ ActivityId : "workflow-activity-id" ,
101+ }),
102+ },
103+ fullMethod : "/temporal.api.workflowservice.v1.WorkflowService/RespondActivityTaskCompleted" ,
104+ expect : expectation {workflowID : tv .WorkflowID (), runID : tv .RunID ()},
105+ },
106+ {
107+ name : "Frontend RespondActivityTaskCompletedRequest with CHASM task_token" ,
108+ req : & workflowservice.RespondActivityTaskCompletedRequest {
109+ TaskToken : mustSerialize (& tokenspb.Task {
110+ RunId : tv .RunID (),
111+ ActivityId : "activity-id" ,
112+ ComponentRef : []byte ("component-ref" ),
113+ }),
114+ },
115+ fullMethod : "/temporal.api.workflowservice.v1.WorkflowService/RespondActivityTaskCompleted" ,
116+ expect : expectation {activityID : "activity-id" , runID : tv .RunID ()},
88117 },
89118 {
90119 name : "Frontend RespondQueryTaskCompletedRequest (task_token is ignored)" ,
@@ -104,8 +133,7 @@ func TestExtract(t *testing.T) {
104133 },
105134 },
106135 fullMethod : "/temporal.server.api.historyservice.v1.HistoryService/DescribeWorkflowExecution" ,
107- workflowID : tv .WorkflowID (),
108- runID : tv .RunID (),
136+ expect : expectation {workflowID : tv .WorkflowID (), runID : tv .RunID ()},
109137 },
110138 {
111139 name : "History RespondWorkflowTaskCompletedRequest" ,
@@ -115,8 +143,7 @@ func TestExtract(t *testing.T) {
115143 },
116144 },
117145 fullMethod : "/temporal.server.api.historyservice.v1.HistoryService/RespondWorkflowTaskCompleted" ,
118- workflowID : tv .WorkflowID (),
119- runID : tv .RunID (),
146+ expect : expectation {workflowID : tv .WorkflowID (), runID : tv .RunID ()},
120147 },
121148 {
122149 name : "Matching QueryWorkflowRequest" ,
@@ -129,8 +156,7 @@ func TestExtract(t *testing.T) {
129156 },
130157 },
131158 fullMethod : "/temporal.server.api.matchingservice.v1.MatchingService/QueryWorkflow" ,
132- workflowID : tv .WorkflowID (),
133- runID : tv .RunID (),
159+ expect : expectation {workflowID : tv .WorkflowID (), runID : tv .RunID ()},
134160 },
135161 {
136162 name : "Matching RespondWorkflowTaskCompletedRequest" ,
@@ -149,32 +175,19 @@ func TestExtract(t *testing.T) {
149175
150176 for _ , tt := range testCases {
151177 t .Run (tt .name , func (t * testing.T ) {
152- tags := wt .Extract (tt .req , tt .fullMethod )
153- var (
154- workflowIDTag tag.Tag
155- runIDTag tag.Tag
156- )
157- for _ , tg := range tags {
158- if tg .Key () == tag .WorkflowID ("" ).Key () {
159- workflowIDTag = tg
160- }
161- if tg .Key () == tag .WorkflowRunID ("" ).Key () {
162- runIDTag = tg
178+ var got expectation
179+ for _ , tg := range wt .Extract (tt .req , tt .fullMethod ) {
180+ switch tg .Key () {
181+ case tag .WorkflowID ("" ).Key ():
182+ got .workflowID = tg .Value ().(string )
183+ case tag .ActivityID ("" ).Key ():
184+ got .activityID = tg .Value ().(string )
185+ case tag .WorkflowRunID ("" ).Key ():
186+ got .runID = tg .Value ().(string )
187+ default :
163188 }
164189 }
165-
166- if tt .workflowID != "" {
167- assert .NotNil (t , workflowIDTag )
168- assert .Equal (t , workflowIDTag .Value (), tt .workflowID )
169- } else {
170- assert .Nil (t , workflowIDTag )
171- }
172- if tt .runID != "" {
173- assert .NotNil (t , runIDTag )
174- assert .Equal (t , runIDTag .Value (), tt .runID )
175- } else {
176- assert .Nil (t , runIDTag )
177- }
190+ assert .Equal (t , tt .expect , got )
178191 })
179192 }
180193}
0 commit comments