Skip to content

Commit 2e79bc8

Browse files
authored
Add specflow logging to step definitions (#206)
* Added specflow logging to the step definitions Signed-off-by: Joss Sparkes <[email protected]> * Changed one logging line to make sense Signed-off-by: Joss Sparkes <[email protected]>
1 parent 57cc123 commit 2e79bc8

File tree

11 files changed

+2944
-2907
lines changed

11 files changed

+2944
-2907
lines changed

tests/IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests/Features/TaskDestinations.feature.cs

Lines changed: 296 additions & 296 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests/Features/TaskStatusUpdate.feature.cs

Lines changed: 340 additions & 340 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests/Features/WorkflowApi.feature.cs

Lines changed: 748 additions & 748 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests/Features/WorkflowInstancesApi.feature.cs

Lines changed: 366 additions & 366 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests/Features/WorkflowRequest.feature.cs

Lines changed: 463 additions & 463 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests/Features/WorkflowTaskArtefacts.feature.cs

Lines changed: 338 additions & 338 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/IntegrationTests/Monai.Deploy.WorkflowManager.WorkflowExecutor.IntegrationTests/StepDefinitions/TaskDestinationsStepDefinitions.cs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
using Monai.Deploy.WorkflowManager.IntegrationTests.Support;
33
using Polly;
44
using Polly.Retry;
5-
5+
using TechTalk.SpecFlow.Infrastructure;
6+
67
namespace Monai.Deploy.WorkflowManager.IntegrationTests.StepDefinitions
78
{
89
[Binding]
@@ -11,14 +12,17 @@ public class TaskDestinationsStepDefinitions
1112
private MongoClientUtil MongoClient { get; set; }
1213
private RetryPolicy RetryPolicy { get; set; }
1314
private DataHelper DataHelper { get; set; }
14-
private Assertions Assertions { get; set; }
15+
private Assertions Assertions { get; set; }
16+
private readonly ISpecFlowOutputHelper _outputHelper;
17+
1518

16-
public TaskDestinationsStepDefinitions(ObjectContainer objectContainer)
19+
public TaskDestinationsStepDefinitions(ObjectContainer objectContainer, ISpecFlowOutputHelper outputHelper)
1720
{
1821
MongoClient = objectContainer.Resolve<MongoClientUtil>();
1922
DataHelper = objectContainer.Resolve<DataHelper>();
2023
RetryPolicy = Policy.Handle<Exception>().WaitAndRetry(retryCount: 10, sleepDurationProvider: _ => TimeSpan.FromMilliseconds(500));
2124
Assertions = new Assertions();
25+
_outputHelper = outputHelper;
2226
}
2327

2428
[Then(@"Workflow Instance is updated with the new Tasks")]
@@ -27,8 +31,9 @@ public void ThenWorkflowInstanceIsUpdatedWithTheNewTask()
2731
{
2832
RetryPolicy.Execute(() =>
2933
{
34+
_outputHelper.WriteLine($"Retrieving workflow instance by id={DataHelper.TaskUpdateEvent.WorkflowInstanceId}");
3035
var workflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
31-
36+
_outputHelper.WriteLine("Retrieved workflow instance");
3237
Assertions.WorkflowInstanceIncludesTaskDetails(DataHelper.TaskDispatchEvents, workflowInstance, DataHelper.WorkflowRevisions[0]);
3338
});
3439
}
@@ -37,9 +42,10 @@ public void ThenWorkflowInstanceIsUpdatedWithTheNewTask()
3742
public void ThenWorkflowInstanceStatusIs(string status)
3843
{
3944
RetryPolicy.Execute(() =>
40-
{
41-
var workflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
42-
45+
{
46+
_outputHelper.WriteLine($"Retrieving workflow instance by id={DataHelper.TaskUpdateEvent.WorkflowInstanceId}");
47+
var workflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
48+
_outputHelper.WriteLine("Retrieved workflow instance");
4349
Assertions.WorkflowInstanceStatus(status, workflowInstance);
4450
});
4551
}
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,106 @@
1-
// SPDX-FileCopyrightText: © 2021-2022 MONAI Consortium
2-
// SPDX-License-Identifier: Apache License 2.0
3-
4-
using BoDi;
5-
using FluentAssertions;
6-
using Monai.Deploy.Messaging.Events;
7-
using Monai.Deploy.Messaging.Messages;
8-
using Monai.Deploy.WorkflowManager.IntegrationTests.Support;
9-
using Polly;
10-
using Polly.Retry;
11-
12-
namespace Monai.Deploy.WorkflowManager.IntegrationTests.StepDefinitions
13-
{
14-
[Binding]
15-
public class TaskStatusUpdateStepDefinitions
16-
{
17-
private MongoClientUtil MongoClient { get; set; }
18-
private RabbitPublisher TaskUpdatePublisher { get; set; }
19-
private RetryPolicy RetryPolicy { get; set; }
20-
private DataHelper DataHelper { get; set; }
21-
22-
public TaskStatusUpdateStepDefinitions(ObjectContainer objectContainer)
23-
{
24-
TaskUpdatePublisher = objectContainer.Resolve<RabbitPublisher>("TaskUpdatePublisher");
25-
MongoClient = objectContainer.Resolve<MongoClientUtil>();
26-
DataHelper = objectContainer.Resolve<DataHelper>();
27-
RetryPolicy = Policy.Handle<Exception>().WaitAndRetry(retryCount: 10, sleepDurationProvider: _ => TimeSpan.FromMilliseconds(500));
28-
}
29-
30-
[When(@"I publish a Task Update Message (.*) with status (.*)")]
31-
public void WhenIPublishATaskUpdateMessageTaskUpdateMessage(string name, string updateStatus)
32-
{
33-
var message = new JsonMessage<TaskUpdateEvent>(
34-
DataHelper.GetTaskUpdateTestData(name, updateStatus),
35-
"16988a78-87b5-4168-a5c3-2cfc2bab8e54",
36-
Guid.NewGuid().ToString(),
37-
string.Empty);
38-
39-
TaskUpdatePublisher.PublishMessage(message.ToMessage());
40-
}
41-
42-
[Then(@"I can see the status of the Tasks are updated")]
43-
[Then(@"I can see the status of the Task is updated")]
44-
public void ThenICanSeeTheStatusOfTheTaskIsUpdated()
45-
{
46-
RetryPolicy.Execute(() =>
47-
{
48-
var workflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
49-
50-
var taskUpdated = workflowInstance.Tasks.FirstOrDefault(x => x.TaskId.Equals(DataHelper.TaskUpdateEvent.TaskId));
51-
52-
taskUpdated.Status.Should().Be(DataHelper.TaskUpdateEvent.Status);
53-
54-
if (DataHelper.TaskDispatchEvents.Count > 0)
55-
{
56-
foreach (var e in DataHelper.TaskDispatchEvents)
57-
{
58-
var taskDispatched = workflowInstance.Tasks.FirstOrDefault(x => x.TaskId.Equals(e.TaskId));
59-
60-
taskDispatched.Status.Should().Be(TaskExecutionStatus.Dispatched);
61-
}
62-
}
63-
});
64-
}
65-
66-
[Then(@"I can see the status of the Task is not updated")]
67-
public void ThenICanSeeTheStatusOfTheTaskIsNotUpdated()
68-
{
69-
for (int i = 0; i < 2; i++)
70-
{
71-
Thread.Sleep(2000);
72-
73-
var updatedWorkflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
74-
75-
var orignalWorkflowInstance = DataHelper.WorkflowInstances.FirstOrDefault(x => x.Id.Equals(DataHelper.TaskUpdateEvent.WorkflowInstanceId));
76-
77-
updatedWorkflowInstance.Tasks[0].Status.Should().Be(orignalWorkflowInstance?.Tasks[0].Status);
78-
}
79-
}
80-
81-
[Then(@"I can see the status of the Task is Succeeded")]
82-
public void ThenICanSeeTheStatusOfTheTaskIsSucceeded()
83-
{
84-
var counter = 0;
85-
var updatedWorkflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
86-
while (updatedWorkflowInstance.Tasks[0].Status == TaskExecutionStatus.Dispatched || updatedWorkflowInstance.Tasks.Count < 2)
87-
{
88-
updatedWorkflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
89-
Thread.Sleep(1000);
90-
counter++;
91-
if (counter == 10)
92-
{
93-
throw new Exception("Task Update Status did not complete in sufficient time.");
94-
}
95-
}
96-
updatedWorkflowInstance.Tasks[0].Status.Should().Be(TaskExecutionStatus.Succeeded);
97-
98-
var orignalWorkflowInstance = DataHelper.WorkflowInstances.FirstOrDefault(x => x.Id.Equals(DataHelper.TaskUpdateEvent.WorkflowInstanceId));
99-
}
100-
}
101-
}
1+
// SPDX-FileCopyrightText: © 2021-2022 MONAI Consortium
2+
// SPDX-License-Identifier: Apache License 2.0
3+
4+
using BoDi;
5+
using FluentAssertions;
6+
using Monai.Deploy.Messaging.Events;
7+
using Monai.Deploy.Messaging.Messages;
8+
using Monai.Deploy.WorkflowManager.IntegrationTests.Support;
9+
using Polly;
10+
using Polly.Retry;
11+
using TechTalk.SpecFlow.Infrastructure;
12+
13+
namespace Monai.Deploy.WorkflowManager.IntegrationTests.StepDefinitions
14+
{
15+
[Binding]
16+
public class TaskStatusUpdateStepDefinitions
17+
{
18+
private MongoClientUtil MongoClient { get; set; }
19+
private RabbitPublisher TaskUpdatePublisher { get; set; }
20+
private RetryPolicy RetryPolicy { get; set; }
21+
private DataHelper DataHelper { get; set; }
22+
private readonly ISpecFlowOutputHelper _outputHelper;
23+
24+
public TaskStatusUpdateStepDefinitions(ObjectContainer objectContainer, ISpecFlowOutputHelper outputHelper)
25+
{
26+
TaskUpdatePublisher = objectContainer.Resolve<RabbitPublisher>("TaskUpdatePublisher");
27+
MongoClient = objectContainer.Resolve<MongoClientUtil>();
28+
DataHelper = objectContainer.Resolve<DataHelper>();
29+
RetryPolicy = Policy.Handle<Exception>().WaitAndRetry(retryCount: 10, sleepDurationProvider: _ => TimeSpan.FromMilliseconds(500));
30+
_outputHelper = outputHelper;
31+
}
32+
33+
[When(@"I publish a Task Update Message (.*) with status (.*)")]
34+
public void WhenIPublishATaskUpdateMessageTaskUpdateMessage(string name, string updateStatus)
35+
{
36+
var message = new JsonMessage<TaskUpdateEvent>(
37+
DataHelper.GetTaskUpdateTestData(name, updateStatus),
38+
"16988a78-87b5-4168-a5c3-2cfc2bab8e54",
39+
Guid.NewGuid().ToString(),
40+
string.Empty);
41+
42+
TaskUpdatePublisher.PublishMessage(message.ToMessage());
43+
}
44+
45+
[Then(@"I can see the status of the Tasks are updated")]
46+
[Then(@"I can see the status of the Task is updated")]
47+
public void ThenICanSeeTheStatusOfTheTaskIsUpdated()
48+
{
49+
RetryPolicy.Execute(() =>
50+
{
51+
_outputHelper.WriteLine($"Retrieving workflow instance by id={DataHelper.TaskUpdateEvent.WorkflowInstanceId}");
52+
var workflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
53+
_outputHelper.WriteLine("Retrieved workflow instance");
54+
55+
var taskUpdated = workflowInstance.Tasks.FirstOrDefault(x => x.TaskId.Equals(DataHelper.TaskUpdateEvent.TaskId));
56+
57+
taskUpdated.Status.Should().Be(DataHelper.TaskUpdateEvent.Status);
58+
59+
if (DataHelper.TaskDispatchEvents.Count > 0)
60+
{
61+
foreach (var e in DataHelper.TaskDispatchEvents)
62+
{
63+
var taskDispatched = workflowInstance.Tasks.FirstOrDefault(x => x.TaskId.Equals(e.TaskId));
64+
65+
taskDispatched.Status.Should().Be(TaskExecutionStatus.Dispatched);
66+
}
67+
}
68+
});
69+
}
70+
71+
[Then(@"I can see the status of the Task is not updated")]
72+
public void ThenICanSeeTheStatusOfTheTaskIsNotUpdated()
73+
{
74+
for (int i = 0; i < 2; i++)
75+
{
76+
Thread.Sleep(2000);
77+
var updatedWorkflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
78+
var orignalWorkflowInstance = DataHelper.WorkflowInstances.FirstOrDefault(x => x.Id.Equals(DataHelper.TaskUpdateEvent.WorkflowInstanceId));
79+
updatedWorkflowInstance.Tasks[0].Status.Should().Be(orignalWorkflowInstance?.Tasks[0].Status);
80+
}
81+
}
82+
83+
[Then(@"I can see the status of the Task is Succeeded")]
84+
public void ThenICanSeeTheStatusOfTheTaskIsSucceeded()
85+
{
86+
var counter = 0;
87+
_outputHelper.WriteLine($"Retrieving workflow instance by id={DataHelper.TaskUpdateEvent.WorkflowInstanceId}");
88+
var updatedWorkflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
89+
_outputHelper.WriteLine("Retrieved workflow instance");
90+
91+
while (updatedWorkflowInstance.Tasks[0].Status == TaskExecutionStatus.Dispatched || updatedWorkflowInstance.Tasks.Count < 2)
92+
{
93+
updatedWorkflowInstance = MongoClient.GetWorkflowInstanceById(DataHelper.TaskUpdateEvent.WorkflowInstanceId);
94+
Thread.Sleep(1000);
95+
counter++;
96+
if (counter == 10)
97+
{
98+
throw new Exception("Task Update Status did not complete in sufficient time.");
99+
}
100+
}
101+
updatedWorkflowInstance.Tasks[0].Status.Should().Be(TaskExecutionStatus.Succeeded);
102+
103+
var orignalWorkflowInstance = DataHelper.WorkflowInstances.FirstOrDefault(x => x.Id.Equals(DataHelper.TaskUpdateEvent.WorkflowInstanceId));
104+
}
105+
}
106+
}

0 commit comments

Comments
 (0)