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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
 public static Uri CreateMonitoringUriWithMetricFilter(IMetricsRequest metricsRequest)
 {
     return(BuildUri(metricsRequest.ResourceId, BuildFilter(metricsRequest)));
 }