Exemplo n.º 1
0
    /// <summary>
    /// Wait for the given number of metric requests to appear.
    /// </summary>
    /// <param name="count">The expected number of metric requests.</param>
    /// <param name="timeout">The timeout</param>
    /// <returns>The list of metric requests.</returns>
    public IImmutableList <ExportMetricsServiceRequest> WaitForMetrics(
        int count,
        TimeSpan?timeout = null)
    {
        timeout ??= DefaultWaitTimeout;
        var deadline = DateTime.Now.Add(timeout.Value);

        IImmutableList <ExportMetricsServiceRequest> relevantMetricRequests = ImmutableList <ExportMetricsServiceRequest> .Empty;

        while (DateTime.Now < deadline)
        {
            relevantMetricRequests =
                MetricsMessages
                .Where(m => MetricFilters.All(shouldReturn => shouldReturn(m)))
                .ToImmutableList();

            if (relevantMetricRequests.Count >= count)
            {
                break;
            }

            Thread.Sleep(500);
        }

        return(relevantMetricRequests);
    }