public MetricCollectionServiceShould() { this.fakeMonitoringResource = A.Fake <IMonitoringApiClient>(); this.fakeMetricsAggregator = A.Fake <MetricsAggregator>(); this._fakeMetricsRequest = BuildMetricRequest(); this.sut = new MetricCollectionService(this.fakeMonitoringResource, this.fakeMetricsAggregator); }
public async Task <IEnumerable <MetricModel> > CollectMetrics(IMetricsRequest metricsRequest) { var response = await this.monitoringResourceClient.FetchMetrics(metricsRequest).ConfigureAwait(false); var aggregatedMetrics = response.Metrics.Where(m => m.MetricValues != null && m.MetricValues.Any()) .Select(m => metricsAggregator.Aggregate(m)) .ToList(); return(aggregatedMetrics); }
private static string BuildFilter(IMetricsRequest metricsRequest) { var start = metricsRequest.StartTimeUtc.ToString("yyyy-MM-ddTHH:mm:00.000Z"); var end = metricsRequest.EndTimeUtc.ToString("yyyy-MM-ddTHH:mm:00.000Z"); var metricsSelector = metricsRequest.MetricsToGather.Select(m => string.Format("name.value eq '{0}'", m)); var metricsFilter = string.Join(" or ", metricsSelector); var filter = string.Format("({0}) and endTime eq {1} and startTime eq {2} and timeGrain eq duration'PT1M'", metricsFilter, end, start); return(filter); }
public async Task <MetricsResponse> FetchMetrics(IMetricsRequest metricsRequest) { var token = await this.securityTokenProvider.GetSecurityTokenAsync().ConfigureAwait(false); var request = new HttpRequestMessage(HttpMethod.Get, UriFactory.CreateMonitoringUriWithMetricFilter(metricsRequest)); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); var response = await this.httpClient.SendAsync(request).ConfigureAwait(false); return(await Deserialise(response).ConfigureAwait(false)); }
public MonitoringResourceClientShould() { this.testUri = new Uri("https://management.azure.com"); this.fakeHttpClient = A.Fake <IHttpClient>(); this.fakeSecurityTokenProvider = A.Fake <ISecurityTokenProvider>(); this.fakeMetricRequest = BuildMetricRequest(); SetupFakeHttpResponseMessage(new HttpResponseMessage(HttpStatusCode.OK) { Content = GetTestContent(new MetricsResponse() { Metrics = GetMetricValues() }) }); this.sut = new MonitoringApiClient(this.fakeSecurityTokenProvider, this.fakeHttpClient); }
public static Uri CreateMonitoringUriWithMetricFilter(IMetricsRequest metricsRequest) { return(BuildUri(metricsRequest.ResourceId, BuildFilter(metricsRequest))); }