Skip to content

Commit dbcaef8

Browse files
committed
more test coverage
Signed-off-by: Neil South <neil.south@answerdigital.com>
1 parent 4791d62 commit dbcaef8

File tree

5 files changed

+110
-6
lines changed

5 files changed

+110
-6
lines changed

src/.sonarlint/sonar.settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"sonar.exclusions":[],"sonar.global.exclusions":["**/build-wrapper-dump.json","**/Migrations/M0*.cs"],"sonar.inclusions":[]}
1+
{"sonar.exclusions":[],"sonar.global.exclusions":["**/build-wrapper-dump.json","**/Migrations/*.cs"],"sonar.inclusions":[]}

src/Shared/Shared/Wrappers/Response.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public Response(T data)
3737
{
3838
Succeeded = true;
3939
Message = string.Empty;
40-
Errors = null;
40+
Errors = Array.Empty<string>();
4141
Data = data;
4242
}
4343

src/TaskManager/Database/TaskExecutionStatsRepository.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ await _taskExecutionStatsCollection.UpdateOneAsync(o =>
119119

120120
public async Task<IEnumerable<TaskExecutionStats>> GetStatsAsync(DateTime startTime, DateTime endTime, int PageSize = 10, int PageNumber = 1, string workflowInstanceId = "", string taskId = "")
121121
{
122-
var test = startTime.ToUniversalTime();
123122
startTime = startTime.ToUniversalTime();
124123

125124
var workflowinstanceNull = string.IsNullOrWhiteSpace(workflowInstanceId);
@@ -183,8 +182,8 @@ public async Task<long> GetStatsCountAsync(DateTime startTime, DateTime endTime,
183182
return await _taskExecutionStatsCollection.CountDocumentsAsync(T =>
184183
T.StartedUTC >= startTime.ToUniversalTime() &&
185184
T.StartedUTC <= endTime.ToUniversalTime() &&
186-
(workflowinstanceNull ? true : T.WorkflowInstanceId == workflowInstanceId) &&
187-
(taskIdNull ? true : T.TaskId == taskId) &&
185+
(workflowinstanceNull || T.WorkflowInstanceId == workflowInstanceId) &&
186+
(taskIdNull || T.TaskId == taskId) &&
188187
(
189188
T.Status == TaskExecutionStatus.Succeeded.ToString() ||
190189
T.Status == TaskExecutionStatus.Failed.ToString() ||

tests/UnitTests/Monai.Deploy.WorkflowManager.Shared.Tests/UriServiceTests.cs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
1-
using Monai.Deploy.WorkflowManager.Shared.Filter;
1+
/*
2+
* Copyright 2023 MONAI Consortium
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
18+
using Monai.Deploy.WorkflowManager.Shared.Filter;
219
using Monai.Deploy.WorkflowManager.Shared.Services;
20+
using Monai.Deploy.WorkflowManager.Shared.Wrappers;
321

422
namespace Monai.Deploy.WorkflowManager.Shared.Tests
523
{
@@ -29,5 +47,16 @@ public void Should_Create_Usable_Url()
2947
Assert.Contains($"pageNumber={pageNum}", uri);
3048
Assert.Contains($"pageSize={pageSize}", uri);
3149
}
50+
51+
[Fact]
52+
public void Resonce_Should_Initialise()
53+
{
54+
var data = "some data here";
55+
var testObject = new Response<string>(data);
56+
Assert.Equal(data, testObject.Data);
57+
Assert.True(testObject.Succeeded);
58+
Assert.Equal(Array.Empty<string>(), testObject.Errors);
59+
Assert.Equal(string.Empty, testObject.Message);
60+
}
3261
}
3362
}

tests/UnitTests/TaskManager.Tests/TaskExecutionStatsRepositoryTests.cs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using System;
1818
using System.Collections.Generic;
1919
using System.Linq;
20+
using System.Linq.Expressions;
2021
using System.Threading;
2122
using System.Threading.Tasks;
2223
using Microsoft.Extensions.Logging;
@@ -25,10 +26,12 @@
2526
using Monai.Deploy.WorkflowManager.TaskManager.API.Models;
2627
using Monai.Deploy.WorkflowManager.TaskManager.Database;
2728
using Monai.Deploy.WorkflowManager.TaskManager.Database.Options;
29+
using Monai.Deploy.WorkflowManager.TaskManager.Logging;
2830
using MongoDB.Bson;
2931
using MongoDB.Driver;
3032
using Moq;
3133
using Xunit;
34+
using static Moq.It;
3235

3336
namespace Monai.Deploy.WorkflowManager.TaskManager.Tests
3437
{
@@ -146,6 +149,61 @@ public async Task TaskExecutionStats_Create_Should_Store_All()
146149
It.IsAny<CancellationToken>()), Times.Once);
147150
}
148151

152+
[Fact]
153+
public async Task TaskExecutionStats_Create_Should_Log_On_Exception()
154+
{
155+
var testStore = new TaskDispatchEventInfo(new TaskDispatchEvent
156+
{
157+
CorrelationId = nameof(TaskDispatchEvent.CorrelationId),
158+
ExecutionId = nameof(TaskDispatchEvent.ExecutionId),
159+
WorkflowInstanceId = nameof(TaskDispatchEvent.WorkflowInstanceId),
160+
TaskId = nameof(TaskDispatchEvent.TaskId),
161+
Status = TaskExecutionStatus.Created,
162+
});
163+
164+
_collection.Setup(c => c.ReplaceOneAsync(
165+
It.IsAny<FilterDefinition<TaskExecutionStats>>(),
166+
It.IsAny<TaskExecutionStats>(),
167+
It.IsAny<ReplaceOptions>(),
168+
It.IsAny<CancellationToken>())).Throws(new Exception());
169+
170+
await _repo.CreateAsync(testStore);
171+
172+
_logger.Verify(l =>
173+
l.IsEnabled(LogLevel.Error)
174+
, Times.Once);
175+
}
176+
177+
[Fact]
178+
public async Task TaskExecutionStats_Update_Should_Log_On_Exception()
179+
{
180+
var testStore = new TaskUpdateEvent
181+
{
182+
CorrelationId = nameof(TaskDispatchEvent.CorrelationId),
183+
ExecutionId = nameof(TaskDispatchEvent.ExecutionId),
184+
WorkflowInstanceId = nameof(TaskDispatchEvent.WorkflowInstanceId),
185+
TaskId = nameof(TaskDispatchEvent.TaskId),
186+
Status = TaskExecutionStatus.Created,
187+
ExecutionStats = new System.Collections.Generic.Dictionary<string, string> {
188+
{ "CompletedAt" , (new DateTime(2023,3,3,8,0,12)).ToString() },
189+
{ "podStartTime0","2023-03-30T08:33:00+00:00"},
190+
{ "podFinishTime0","2023-03-30T08:36:00+00:00"},
191+
}
192+
};
193+
194+
_collection.Setup(c => c.UpdateOneAsync(
195+
It.IsAny<FilterDefinition<TaskExecutionStats>>(),
196+
It.IsAny<UpdateDefinition<TaskExecutionStats>>(),
197+
It.IsAny<UpdateOptions>(),
198+
It.IsAny<CancellationToken>())).Throws(new Exception());
199+
200+
await _repo.UpdateExecutionStatsAsync(testStore);
201+
202+
_logger.Verify(l =>
203+
l.IsEnabled(LogLevel.Error)
204+
, Times.Once);
205+
}
206+
149207
[Fact]
150208
public async Task TaskExecutionStats_Update_Should_Update_All()
151209
{
@@ -173,6 +231,24 @@ public async Task TaskExecutionStats_Update_Should_Update_All()
173231
It.IsAny<CancellationToken>()), Times.Once);
174232
}
175233

234+
[Fact]
235+
public async Task TaskExecutionStats_Get_Stats_Should_Filter()
236+
{
237+
var results = new List<TaskExecutionStats>() {
238+
new TaskExecutionStats { Status = TaskExecutionStatus.Accepted.ToString() },
239+
new TaskExecutionStats { Status = TaskExecutionStatus.Succeeded.ToString() }
240+
};
241+
242+
var mockasynccursor = new Mock<IAsyncCursor<TaskExecutionStats>>();
243+
_collection.Setup(c => c.FindAsync(
244+
It.IsAny<FilterDefinition<TaskExecutionStats>>(),
245+
It.IsAny<FindOptions<TaskExecutionStats>>(),
246+
It.IsAny<CancellationToken>())).ReturnsAsync(mockasynccursor.Object);
247+
248+
var result = await _repo.GetStatsAsync(new DateTime(), new DateTime(), 10, 1, "", "");
249+
250+
}
251+
176252
//[Fact]
177253
//public async Task Should_Return_Only_dates_in_range()
178254
//{

0 commit comments

Comments
 (0)