public IActionResult GetMetricsByPercentileFromAllCluster( [FromRoute] DotNetMetricGetByIntervalForClusterRequest request, [FromRoute] Percentile percentile) { _logger.LogDebug("Вызов метода. Параметры:" + $" {nameof(request.FromTime)} = {request.FromTime}" + $" {nameof(request.ToTime)} = {request.ToTime}" + $" {nameof(percentile)} = {percentile}"); var agents = _agentRepository.GetAllAgentsInfo(); var response = new AllMetricsResponse <DotNetMetricDto>(); foreach (var agent in agents.Agents) { var currentAgentMetrics = _repository.GetByTimeIntervalPercentile(agent.AgentId, request.FromTime, request.ToTime, percentile); foreach (var metric in currentAgentMetrics.Metrics) { response.Metrics.Add(_mapper.Map <DotNetMetricDto>(metric)); } } return(Ok(response)); }
public void GetMetricsByPercentileFromAllCluster_ReturnsOk() { //Arrange var request = new DotNetMetricGetByIntervalForClusterRequest() { FromTime = DateTimeOffset.MinValue, ToTime = DateTimeOffset.Now }; var percentile = Percentile.P95; //фейковые данные об агентах var mockAgentsInfo = new AllAgentsInfo(); mockAgentsInfo.Agents.Add(new AgentInfo() { AgentId = 1, AgentUri = "url1" }); mockAgentsInfo.Agents.Add(new AgentInfo() { AgentId = 2, AgentUri = "url2" }); mockAgentsRepository. Setup(repository => repository.GetAllAgentsInfo()). Returns(mockAgentsInfo); //фейковые метрики возвращаемые репозиторием для всех агентов var mockMetrics = new AllMetrics <DotNetMetric>(); mockMetrics.Metrics.Add(new DotNetMetric() { AgentId = 1, Time = DateTimeOffset.MinValue, Value = 100 }); mockMetrics.Metrics.Add(new DotNetMetric() { AgentId = 2, Time = DateTimeOffset.UtcNow, Value = 122 }); //фейковые метрики возвращаемые репозиторием для первого агента var mockMetricsForAgent_1 = new AllMetrics <DotNetMetric>(); mockMetricsForAgent_1.Metrics.Add(mockMetrics.Metrics[0]); //фейковые метрики возвращаемые репозиторием для второго агента var mockMetricsForAgent_2 = new AllMetrics <DotNetMetric>(); mockMetricsForAgent_2.Metrics.Add(mockMetrics.Metrics[1]); mockRepository. Setup(repository => repository.GetByTimeIntervalPercentile( It.Is <int>(agentId => agentId == 1), It.IsAny <DateTimeOffset>(), It.IsAny <DateTimeOffset>(), It.IsAny <Percentile>())). Returns(mockMetricsForAgent_1); mockRepository. Setup(repository => repository.GetByTimeIntervalPercentile( It.Is <int>(agentId => agentId == 2), It.IsAny <DateTimeOffset>(), It.IsAny <DateTimeOffset>(), It.IsAny <Percentile>())). Returns(mockMetricsForAgent_2); //Act var result = controller.GetMetricsByPercentileFromAllCluster(request, percentile); // Assert Assert.True(CompareMetricsContainers(result, mockMetrics)); }