@@ -58,6 +58,8 @@ public class WorkflowExecuterServiceTests
58
58
private readonly Mock < IWorkflowService > _workflowService ;
59
59
private readonly IOptions < WorkflowManagerOptions > _configuration ;
60
60
private readonly IOptions < StorageServiceConfiguration > _storageConfiguration ;
61
+ private readonly int _timeoutForTypeTask = 999 ;
62
+ private readonly int _timeoutForDefault = 966 ;
61
63
62
64
public WorkflowExecuterServiceTests ( )
63
65
{
@@ -71,7 +73,7 @@ public WorkflowExecuterServiceTests()
71
73
_payloadService = new Mock < IPayloadService > ( ) ;
72
74
_workflowService = new Mock < IWorkflowService > ( ) ;
73
75
74
- _configuration = Options . Create ( new WorkflowManagerOptions ( ) { Messaging = new MessageBrokerConfiguration { Topics = new MessageBrokerConfigurationKeys { TaskDispatchRequest = "md.task.dispatch" , ExportRequestPrefix = "md.export.request" } , DicomAgents = new DicomAgentConfiguration { DicomWebAgentName = "monaidicomweb" } } } ) ;
76
+ _configuration = Options . Create ( new WorkflowManagerOptions ( ) { TaskTimeoutMinutes = _timeoutForDefault , PerTaskTypeTimeoutMinutes = new Dictionary < string , double > { { "taskType" , _timeoutForTypeTask } } , Messaging = new MessageBrokerConfiguration { Topics = new MessageBrokerConfigurationKeys { TaskDispatchRequest = "md.task.dispatch" , ExportRequestPrefix = "md.export.request" } , DicomAgents = new DicomAgentConfiguration { DicomWebAgentName = "monaidicomweb" } } } ) ;
75
77
_storageConfiguration = Options . Create ( new StorageServiceConfiguration ( ) { Settings = new Dictionary < string , string > { { "bucket" , "testbucket" } , { "endpoint" , "localhost" } , { "securedConnection" , "False" } } } ) ;
76
78
77
79
var dicom = new Mock < IDicomService > ( ) ;
@@ -1906,6 +1908,65 @@ public async Task ProcessTaskUpdate_ValidTaskUpdateEventWorkflowDoesNotExist_Ret
1906
1908
response . Should ( ) . BeTrue ( ) ;
1907
1909
}
1908
1910
1911
+ [ Fact ]
1912
+ public async Task ProcessTaskUpdate_Timout_Sends_Message_To_TaskTimeoutRoutingKey ( )
1913
+ {
1914
+ var workflowInstanceId = Guid . NewGuid ( ) . ToString ( ) ;
1915
+
1916
+ var metadata = new Dictionary < string , object > ( ) ;
1917
+ metadata . Add ( "a" , "b" ) ;
1918
+ metadata . Add ( "c" , "d" ) ;
1919
+
1920
+ var updateEvent = new TaskUpdateEvent
1921
+ {
1922
+ WorkflowInstanceId = workflowInstanceId ,
1923
+ TaskId = "pizza" ,
1924
+ ExecutionId = Guid . NewGuid ( ) . ToString ( ) ,
1925
+ Status = TaskExecutionStatus . Failed ,
1926
+ Reason = FailureReason . TimedOut ,
1927
+ Message = "This is a message" ,
1928
+ Metadata = metadata ,
1929
+ CorrelationId = Guid . NewGuid ( ) . ToString ( )
1930
+ } ;
1931
+
1932
+ var workflowId = Guid . NewGuid ( ) . ToString ( ) ;
1933
+
1934
+ var workflow = new WorkflowRevision
1935
+ {
1936
+ Id = Guid . NewGuid ( ) . ToString ( ) ,
1937
+ WorkflowId = workflowId ,
1938
+ Revision = 1 ,
1939
+ Workflow = new Workflow
1940
+ {
1941
+ Name = "Workflowname2" ,
1942
+ Description = "Workflowdesc2" ,
1943
+ Version = "1" ,
1944
+ }
1945
+ } ;
1946
+
1947
+ var workflowInstance = new WorkflowInstance
1948
+ {
1949
+ Id = workflowInstanceId ,
1950
+ WorkflowId = workflowId ,
1951
+ WorkflowName = workflow . Workflow . Name ,
1952
+ PayloadId = Guid . NewGuid ( ) . ToString ( ) ,
1953
+ Status = Status . Created ,
1954
+ BucketId = "bucket" ,
1955
+ Tasks = new List < TaskExecution >
1956
+ {
1957
+ new TaskExecution
1958
+ {
1959
+ TaskId = "pizza" ,
1960
+ Status = TaskExecutionStatus . Failed
1961
+ }
1962
+ }
1963
+ } ;
1964
+
1965
+ _workflowInstanceRepository . Setup ( w => w . GetByWorkflowInstanceIdAsync ( workflowInstance . Id ) ) . ReturnsAsync ( workflowInstance ) ;
1966
+ var response = await WorkflowExecuterService . ProcessTaskUpdate ( updateEvent ) ;
1967
+ _messageBrokerPublisherService . Verify ( w => w . Publish ( _configuration . Value . Messaging . Topics . AideClinicalReviewCancelation , It . IsAny < Message > ( ) ) , Times . Exactly ( 1 ) ) ;
1968
+ }
1969
+
1909
1970
[ Fact ]
1910
1971
public async Task ProcessExportComplete_ValidExportCompleteEventMultipleTaskDestinationsDispatched_ReturnsTrue ( )
1911
1972
{
@@ -2259,5 +2320,57 @@ public void AttachPatientMetaData_AtachesDataToTaskExec_TaskExecShouldHavePatien
2259
2320
taskExec . TaskPluginArguments [ PatientKeys . PatientHospitalId ] . Should ( ) . BeSameAs ( patientDetails . PatientHospitalId ) ;
2260
2321
taskExec . TaskPluginArguments [ PatientKeys . PatientName ] . Should ( ) . BeSameAs ( patientDetails . PatientName ) ;
2261
2322
}
2323
+
2324
+ [ Fact ]
2325
+ public async Task TaskExecShouldHaveCorrectTimeout ( )
2326
+ {
2327
+ var workflowId = Guid . NewGuid ( ) . ToString ( ) ;
2328
+ var payloadId = Guid . NewGuid ( ) . ToString ( ) ;
2329
+ var workflowInstanceId = Guid . NewGuid ( ) . ToString ( ) ;
2330
+
2331
+ var pizzaTask = new TaskObject
2332
+ {
2333
+ Id = "pizza" ,
2334
+ Type = "taskType" ,
2335
+ Description = "taskdesc" ,
2336
+ } ;
2337
+
2338
+ var workflowInstance = new WorkflowInstance
2339
+ {
2340
+ Id = workflowInstanceId ,
2341
+ WorkflowId = workflowId ,
2342
+ } ;
2343
+ var bucket = "bucket" ;
2344
+
2345
+ var newPizza = await WorkflowExecuterService . CreateTaskExecutionAsync ( pizzaTask , workflowInstance , bucket , payloadId ) ;
2346
+ Assert . Equal ( _timeoutForTypeTask , newPizza . TimeoutInterval ) ;
2347
+
2348
+ }
2349
+
2350
+ [ Fact ]
2351
+ public async Task TaskExecShouldPickUpConfiguredDefaultTimeout ( )
2352
+ {
2353
+ var workflowId = Guid . NewGuid ( ) . ToString ( ) ;
2354
+ var payloadId = Guid . NewGuid ( ) . ToString ( ) ;
2355
+ var workflowInstanceId = Guid . NewGuid ( ) . ToString ( ) ;
2356
+
2357
+ var pizzaTask = new TaskObject
2358
+ {
2359
+ Id = "pizza" ,
2360
+ Type = "someothertype" ,
2361
+ Description = "taskdesc" ,
2362
+ } ;
2363
+
2364
+ var workflowInstance = new WorkflowInstance
2365
+ {
2366
+ Id = workflowInstanceId ,
2367
+ WorkflowId = workflowId ,
2368
+ } ;
2369
+ var bucket = "bucket" ;
2370
+
2371
+ var newPizza = await WorkflowExecuterService . CreateTaskExecutionAsync ( pizzaTask , workflowInstance , bucket , payloadId ) ;
2372
+ Assert . Equal ( _timeoutForDefault , newPizza . TimeoutInterval ) ;
2373
+
2374
+ }
2262
2375
}
2263
2376
}
0 commit comments