@@ -58,6 +58,8 @@ public class WorkflowExecuterServiceTests
5858 private readonly Mock < IWorkflowService > _workflowService ;
5959 private readonly IOptions < WorkflowManagerOptions > _configuration ;
6060 private readonly IOptions < StorageServiceConfiguration > _storageConfiguration ;
61+ private readonly int _timeoutForTypeTask = 999 ;
62+ private readonly int _timeoutForDefault = 966 ;
6163
6264 public WorkflowExecuterServiceTests ( )
6365 {
@@ -71,7 +73,7 @@ public WorkflowExecuterServiceTests()
7173 _payloadService = new Mock < IPayloadService > ( ) ;
7274 _workflowService = new Mock < IWorkflowService > ( ) ;
7375
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" } } } ) ;
7577 _storageConfiguration = Options . Create ( new StorageServiceConfiguration ( ) { Settings = new Dictionary < string , string > { { "bucket" , "testbucket" } , { "endpoint" , "localhost" } , { "securedConnection" , "False" } } } ) ;
7678
7779 var dicom = new Mock < IDicomService > ( ) ;
@@ -1906,6 +1908,65 @@ public async Task ProcessTaskUpdate_ValidTaskUpdateEventWorkflowDoesNotExist_Ret
19061908 response . Should ( ) . BeTrue ( ) ;
19071909 }
19081910
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+
19091970 [ Fact ]
19101971 public async Task ProcessExportComplete_ValidExportCompleteEventMultipleTaskDestinationsDispatched_ReturnsTrue ( )
19111972 {
@@ -2259,5 +2320,57 @@ public void AttachPatientMetaData_AtachesDataToTaskExec_TaskExecShouldHavePatien
22592320 taskExec . TaskPluginArguments [ PatientKeys . PatientHospitalId ] . Should ( ) . BeSameAs ( patientDetails . PatientHospitalId ) ;
22602321 taskExec . TaskPluginArguments [ PatientKeys . PatientName ] . Should ( ) . BeSameAs ( patientDetails . PatientName ) ;
22612322 }
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+ }
22622375 }
22632376}
0 commit comments