public GetAzureRmMetricDefinitionTests() { insightsMetricDefinitionOperationsMock = new Mock<IMetricDefinitionOperations>(); insightsClientMock = new Mock<InsightsClient>(); commandRuntimeMock = new Mock<ICommandRuntime>(); cmdlet = new GetAzureRmMetricDefinitionCommand() { CommandRuntime = commandRuntimeMock.Object, InsightsClient = insightsClientMock.Object }; response = Utilities.InitializeMetricDefinitionResponse(); insightsMetricDefinitionOperationsMock.Setup(f => f.GetMetricDefinitionsAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<CancellationToken>())) .Returns(Task.FromResult<MetricDefinitionListResponse>(response)) .Callback((string f, string s, CancellationToken t) => { resourceId = f; filter = s; }); insightsClientMock.SetupGet(f => f.MetricDefinitionOperations).Returns(this.insightsMetricDefinitionOperationsMock.Object); }
public GetAzureRmMetricDefinitionTests(Xunit.Abstractions.ITestOutputHelper output) { ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output)); insightsMetricDefinitionOperationsMock = new Mock<IMetricDefinitionOperations>(); insightsClientMock = new Mock<InsightsClient>(); commandRuntimeMock = new Mock<ICommandRuntime>(); cmdlet = new GetAzureRmMetricDefinitionCommand() { CommandRuntime = commandRuntimeMock.Object, InsightsClient = insightsClientMock.Object }; response = Utilities.InitializeMetricDefinitionResponse(); insightsMetricDefinitionOperationsMock.Setup(f => f.GetMetricDefinitionsAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<CancellationToken>())) .Returns(Task.FromResult<MetricDefinitionListResponse>(response)) .Callback((string f, string s, CancellationToken t) => { resourceId = f; filter = s; }); insightsClientMock.SetupGet(f => f.MetricDefinitionOperations).Returns(this.insightsMetricDefinitionOperationsMock.Object); }
public async Task<MetricDefinitionListResponse> GetMetricDefinitionsAsync(string resourceUri, string filterString, CancellationToken cancellationToken) { MetricDefinitionListResponse result; string invocationId = TracingAdapter.NextInvocationId.ToString(CultureInfo.InvariantCulture); this.LogStartGetMetricDefinitions(invocationId, resourceUri, filterString); // Ensure exactly one '/' at the start resourceUri = '/' + resourceUri.TrimStart('/'); IEnumerable<MetricDefinition> definitions = null; // If no filter string, must request all metric definiitons since we don't know if we have them all if (string.IsNullOrWhiteSpace(filterString)) { // request all definitions definitions = (await this.GetMetricDefinitionsInternalAsync(resourceUri, string.Empty, CancellationToken.None).ConfigureAwait(false)) .MetricDefinitionCollection.Value; // cache definitions if (this.Client.IsCacheEnabled) { this.Client.Cache[resourceUri] = definitions; } // wrap and return definitions result = new MetricDefinitionListResponse() { StatusCode = HttpStatusCode.OK, MetricDefinitionCollection = new MetricDefinitionCollection() { Value = definitions.ToList() } }; this.LogEndGetMetricDefinitions(invocationId, result); return result; } // Parse the filter and retrieve cached definitions IEnumerable<string> names = MetricDefinitionFilterParser.Parse(filterString); if (this.Client.IsCacheEnabled) { definitions = this.Client.Cache[resourceUri]; } // Find the names in the filter that don't appear on any of the cached definitions IEnumerable<string> missing = definitions == null ? names : names.Where((n => !definitions.Any(d => string.Equals(d.Name.Value, n, StringComparison.OrdinalIgnoreCase)))); // Request any missing definitions and update cache (if any) if (missing.Any()) { string missingFilter = ShoeboxHelper.GenerateMetricDefinitionFilterString(missing); // Request missing definitions var missingDefinitions = (await this.GetMetricDefinitionsInternalAsync(resourceUri, missingFilter, cancellationToken).ConfigureAwait(false)) .MetricDefinitionCollection.Value; // merge definitions definitions = (definitions ?? new MetricDefinition[0]).Union(missingDefinitions); // Store the new set of definitions if (this.Client.IsCacheEnabled) { this.Client.Cache[resourceUri] = definitions; } } // Filter out the metrics that were cached but not requested and wrap result = new MetricDefinitionListResponse() { StatusCode = HttpStatusCode.OK, MetricDefinitionCollection = new MetricDefinitionCollection() { Value = definitions.Where(d => names.Contains(d.Name.Value)).ToList() } }; this.LogEndGetMetricDefinitions(invocationId, result); return result; }
private void LogEndGetMetricDefinitions(string invocationId, MetricDefinitionListResponse result) { if (TracingAdapter.IsEnabled) { TracingAdapter.Exit(invocationId, result); } }
private void LogEndGetMetricDefinitions(string invocationId, MetricDefinitionListResponse result) { if (CloudContext.Configuration.Tracing.IsEnabled) { Tracing.Exit(invocationId, result); } }