@@ -2167,6 +2167,58 @@ func (t *TaskHandlersTestSuite) TestActivityExecutionWorkerStop() {
21672167 t .NotNil (r )
21682168}
21692169
2170+ func (t * TaskHandlersTestSuite ) TestActivityCancellationUsesIsCanceledError () {
2171+ activityName := "activityCancellationIsCanceledError"
2172+ cancelContextActivity := func (ctx context.Context ) error {
2173+ env := getActivityEnv (ctx )
2174+ invoker , ok := env .serviceInvoker .(* temporalInvoker )
2175+ t .Require ().True (ok , "expected temporalInvoker" )
2176+ invoker .cancelHandler (NewCanceledError ())
2177+ <- ctx .Done ()
2178+ return ctx .Err ()
2179+ }
2180+
2181+ t .registry .RegisterActivityWithOptions (
2182+ cancelContextActivity ,
2183+ RegisterActivityOptions {Name : activityName , DisableAlreadyRegisteredCheck : true },
2184+ )
2185+
2186+ mockCtrl := gomock .NewController (t .T ())
2187+ mockService := workflowservicemock .NewMockWorkflowServiceClient (mockCtrl )
2188+ client := WorkflowClient {workflowService : mockService }
2189+ wep := t .getTestWorkerExecutionParams ()
2190+ activityHandler := newActivityTaskHandler (& client , wep , t .registry )
2191+ now := time .Now ()
2192+ pats := & workflowservice.PollActivityTaskQueueResponse {
2193+ Attempt : 1 ,
2194+ TaskToken : []byte ("token" ),
2195+ WorkflowExecution : & commonpb.WorkflowExecution {
2196+ WorkflowId : "wID" ,
2197+ RunId : "rID" ,
2198+ },
2199+ ActivityType : & commonpb.ActivityType {Name : activityName },
2200+ ActivityId : uuid .NewString (),
2201+ ScheduledTime : timestamppb .New (now ),
2202+ ScheduleToCloseTimeout : durationpb .New (time .Second ),
2203+ StartedTime : timestamppb .New (now ),
2204+ StartToCloseTimeout : durationpb .New (time .Second ),
2205+ HeartbeatTimeout : durationpb .New (time .Second ),
2206+ WorkflowType : & commonpb.WorkflowType {
2207+ Name : "wType" ,
2208+ },
2209+ WorkflowNamespace : wep .Namespace ,
2210+ }
2211+
2212+ result , err := activityHandler .Execute (taskqueue , pats )
2213+ t .Require ().NoError (err )
2214+
2215+ canceledReq , ok := result .(* workflowservice.RespondActivityTaskCanceledRequest )
2216+ t .Require ().True (ok , "expected cancel response" )
2217+ t .Equal (pats .TaskToken , canceledReq .TaskToken )
2218+ t .Equal (wep .Identity , canceledReq .Identity )
2219+ t .Equal (wep .Namespace , canceledReq .Namespace )
2220+ }
2221+
21702222func Test_NonDeterministicCheck (t * testing.T ) {
21712223 unimplementedCommands := []int32 {
21722224 int32 (enumspb .COMMAND_TYPE_UNSPECIFIED ),
0 commit comments