public async Task <IEnumerable <GraphStatDto> > Get(decimal period, Filters filters)
        {
            var httpStatusWhere = _requestResultRepository.CreateWhereClause(filters, out var sqlParams);

            var sql = $@"
SELECT

Minute,
COUNT(Id) as Requests,
COUNT(DISTINCT UserNumber) as Users,
AVG(ElapsedMilliseconds) as Avg,
MIN(ElapsedMilliseconds) as Min,
MAX(ElapsedMilliseconds) as Max,
SUM(ElapsedMilliseconds * ElapsedMilliseconds) / COUNT(Id) - AVG(ElapsedMilliseconds) * AVG(ElapsedMilliseconds) AS Variance
FROM
(
    SELECT *,
    CAST(RequestStartedMs / {period} as int64) as Minute,
    UserNumber
    FROM HttpStatusResult
    INNER JOIN Iteration ON Iteration.Id = HttpStatusResult.IterationId
    {httpStatusWhere}
) t
group by t.Minute

order by Minute
";

            var result = await _connection.QueryAsync <GraphStatDto>(sql, sqlParams);

            return(result);
        }
Exemplo n.º 2
0
        private string CreateWhereClause(Filters filters, out IDictionary <string, object> sqlParams)
        {
            var httpStatusWhere = _requestResultRepository.CreateWhereClause(filters, out sqlParams);

            var hasFilterValue = !string.IsNullOrWhiteSpace(filters.Test);

            if (!hasFilterValue)
            {
                return(httpStatusWhere);
            }

            sqlParams.Add("testName", filters.Test);

            return((string.IsNullOrWhiteSpace(httpStatusWhere) ? "WHERE " : httpStatusWhere + " AND ") + "TestName = @testName");
        }