Skip to content

Commit

Permalink
added some test around stats
Browse files Browse the repository at this point in the history
Signed-off-by: Neil South <[email protected]>
  • Loading branch information
neildsouth committed May 24, 2024
1 parent 02b489e commit a65898d
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ public async Task<IActionResult> GetDailyStatsAsync([FromQuery] TimeFilter filte
TotalAwaitingReview = g.Count(i => string.Compare(i.Status, ApplicationReviewStatus.AwaitingReview.ToString(), true) == 0),
});

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / scan

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / scan

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / unit-tests-and-codecov

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / unit-tests-and-codecov

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / unit-tests-and-codecov

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / analyze

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / analyze

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / task-manager-integration-tests

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / task-manager-integration-tests

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / workflow-executor-integration-tests

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / workflow-executor-integration-tests

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / workflow-executor-integration-tests

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / docs

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / docs

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / docs

Check warning on line 145 in src/WorkflowManager/WorkflowManager/Controllers/TaskStatsController.cs

View workflow job for this annotation

GitHub Actions / docs



var pagedStats = statsDto.Skip((filter.PageNumber - 1) * pageSize).Take(pageSize);

var res = CreateStatsPagedResponse(pagedStats, validFilter, statsDto.Count(), _uriService, route);
Expand All @@ -152,7 +154,7 @@ public async Task<IActionResult> GetDailyStatsAsync([FromQuery] TimeFilter filte
res.PeriodEnd = filter.EndTime;
res.TotalExecutions = allStats.Count();
res.TotalSucceeded = statsDto.Sum(s => s.TotalApprovals);
res.TotalFailures = statsDto.Sum(s => s.TotalFailures);
res.TotalFailures = statsDto.Sum(s => s.TotalFailures + s.TotalCancelled + s.TotalRejections);
res.TotalInprogress = statsDto.Sum(s => s.TotalAwaitingReview);
res.AverageTotalExecutionSeconds = Math.Round(avgTotalExecution, 2);
res.AverageArgoExecutionSeconds = Math.Round(avgArgoExecution, 2);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,102 @@ public async Task GetAllStatsAsync_Pass_All_Arguments_To_GetStatsAsync_In_Repo()
It.Is<string>(s => s.Equals("")))
);
}

[Fact]
public async Task GetAllStatsAsync_Get_Correct_Reject_Count()
{
var startTime = new DateTime(2023, 4, 4);
var endTime = new DateTime(2023, 4, 5);
const int pageNumber = 1;
const int pageSize = 10;

var executionStats = new ExecutionStats[]
{
new ExecutionStats
{
ExecutionId = Guid.NewGuid().ToString(),
StartedUTC = _startTime,
WorkflowInstanceId= "workflow",
TaskId = "task",
Status = "Failed",
Reason = Messaging.Events.FailureReason.Rejected,
},
};

_repo.Setup(w => w.GetAllStatsAsync(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(executionStats);

var result = await StatsController.GetDailyStatsAsync(new TimeFilter { StartTime = startTime, EndTime = endTime, PageNumber = pageNumber, PageSize = pageSize }, "workflow");

var resultCollection = result.As<OkObjectResult>().Value.As<StatsPagedResponse<IEnumerable<ExecutionStatDayOverview>>>().Data;

Assert.Equal(1, resultCollection.First().TotalExecutions);
Assert.Equal(1, resultCollection.First().TotalRejections);
Assert.Equal(1, resultCollection.First().TotalFailures);
}

[Fact]
public async Task GetAllStatsAsync_Get_Correct_Canceled_Count()
{
var startTime = new DateTime(2023, 4, 4);
var endTime = new DateTime(2023, 4, 5);
const int pageNumber = 1;
const int pageSize = 10;

var executionStats = new ExecutionStats[]
{
new ExecutionStats
{
ExecutionId = Guid.NewGuid().ToString(),
StartedUTC = _startTime,
WorkflowInstanceId= "workflow",
TaskId = "task",
Status = "Failed",
Reason = Messaging.Events.FailureReason.TimedOut,
},
};

_repo.Setup(w => w.GetAllStatsAsync(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(executionStats);

var result = await StatsController.GetDailyStatsAsync(new TimeFilter { StartTime = startTime, EndTime = endTime, PageNumber = pageNumber, PageSize = pageSize }, "workflow");

var resultCollection = result.As<OkObjectResult>().Value.As<StatsPagedResponse<IEnumerable<ExecutionStatDayOverview>>>().Data;

Assert.Equal(1, resultCollection.First().TotalExecutions);
Assert.Equal(1, resultCollection.First().TotalCancelled);
Assert.Equal(0, resultCollection.First().TotalFailures);
}

[Fact]
public async Task GetAllStatsAsync_Get_Correct_Accepted_Count()
{
var startTime = new DateTime(2023, 4, 4);
var endTime = new DateTime(2023, 4, 5);
const int pageNumber = 1;
const int pageSize = 10;

var executionStats = new ExecutionStats[]
{
new ExecutionStats
{
ExecutionId = Guid.NewGuid().ToString(),
StartedUTC = _startTime,
WorkflowInstanceId= "workflow",
TaskId = "task",
Status = "Succeeded",
Reason = Messaging.Events.FailureReason.None,
},
};

_repo.Setup(w => w.GetAllStatsAsync(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(executionStats);

var result = await StatsController.GetDailyStatsAsync(new TimeFilter { StartTime = startTime, EndTime = endTime, PageNumber = pageNumber, PageSize = pageSize }, "workflow");

var resultCollection = result.As<OkObjectResult>().Value.As<StatsPagedResponse<IEnumerable<ExecutionStatDayOverview>>>().Data;

Assert.Equal(1, resultCollection.First().TotalExecutions);
Assert.Equal(1, resultCollection.First().TotalApprovals);
Assert.Equal(0, resultCollection.First().TotalFailures);
}
}
#pragma warning restore CS8604 // Possible null reference argument.
#pragma warning restore CS8602 // Dereference of a possibly null reference.
Expand Down

0 comments on commit a65898d

Please sign in to comment.