|
17 | 17 | using System; |
18 | 18 | using System.Collections.Generic; |
19 | 19 | using System.Linq; |
| 20 | +using System.Linq.Expressions; |
20 | 21 | using System.Threading; |
21 | 22 | using System.Threading.Tasks; |
22 | 23 | using Microsoft.Extensions.Logging; |
|
25 | 26 | using Monai.Deploy.WorkflowManager.TaskManager.API.Models; |
26 | 27 | using Monai.Deploy.WorkflowManager.TaskManager.Database; |
27 | 28 | using Monai.Deploy.WorkflowManager.TaskManager.Database.Options; |
| 29 | +using Monai.Deploy.WorkflowManager.TaskManager.Logging; |
28 | 30 | using MongoDB.Bson; |
29 | 31 | using MongoDB.Driver; |
30 | 32 | using Moq; |
31 | 33 | using Xunit; |
| 34 | +using static Moq.It; |
32 | 35 |
|
33 | 36 | namespace Monai.Deploy.WorkflowManager.TaskManager.Tests |
34 | 37 | { |
@@ -146,6 +149,61 @@ public async Task TaskExecutionStats_Create_Should_Store_All() |
146 | 149 | It.IsAny<CancellationToken>()), Times.Once); |
147 | 150 | } |
148 | 151 |
|
| 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 | + |
149 | 207 | [Fact] |
150 | 208 | public async Task TaskExecutionStats_Update_Should_Update_All() |
151 | 209 | { |
@@ -173,6 +231,24 @@ public async Task TaskExecutionStats_Update_Should_Update_All() |
173 | 231 | It.IsAny<CancellationToken>()), Times.Once); |
174 | 232 | } |
175 | 233 |
|
| 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 | + |
176 | 252 | //[Fact] |
177 | 253 | //public async Task Should_Return_Only_dates_in_range() |
178 | 254 | //{ |
|
0 commit comments