public async Task WhenSendingMetricQueryThenTheResultsAreAsExpected() { // Authenticate (set real values in resourceIdentifier to run this test). var authenticationServices = new AuthenticationServices(); await authenticationServices.AuthenticateUserAsync(); ICredentialsFactory credentialsFactory = new ActiveDirectoryCredentialsFactory(authenticationServices); var resourceId = $"/subscriptions/{this.resourceIdentifier.SubscriptionId}/resourceGroups/{this.resourceIdentifier.ResourceGroupName}/providers/Microsoft.Storage/storageAccounts/{this.resourceIdentifier.ResourceName}/queueServices/default"; MetricClient client = new MetricClient(this.tracerMock.Object, credentialsFactory); var parameters = new QueryParameters() { StartTime = DateTime.UtcNow.Date.AddDays(-1), EndTime = DateTime.UtcNow.Date, Aggregations = new List <Aggregation> { Aggregation.Total }, MetricNames = new List <string>() { "QueueMessageCount" }, Interval = TimeSpan.FromMinutes(60) }; var metrics1 = (await client.GetResourceMetricsAsync(resourceId, parameters)).ToList(); var metrics2 = (await client.GetResourceMetricsAsync(this.resourceIdentifier, StorageServiceType.Queue, parameters)).ToList(); Assert.IsTrue(metrics1.Any() && metrics2.Any(), "Lists are not full with data"); Assert.IsTrue(metrics1.First().Timeseries.Any() && metrics2.First().Timeseries.Any(), "Metrics do not contain Time series"); Assert.IsTrue(metrics1[0].Timeseries[0].Data.Any() && metrics2[0].Timeseries[0].Data.Any(), "Time series are not full with data"); }
public async Task WhenCallingGetResourceMetricsWithNamespaceHappyFlow() { string expectedUri = "/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_NAME/queueServices/default"; var azureResponse = new AzureOperationResponse <ResponseInner>() { Body = new ResponseInner("timespan", GetMetricList()), Request = new HttpRequestMessage(), RequestId = "RequestId", Response = new HttpResponseMessage() }; this.metricsOperationsMock .Setup(metric => metric.ListWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <ODataQuery <MetadataValueInner> >(), It.IsAny <string>(), It.IsAny <TimeSpan?>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int?>(), It.IsAny <string>(), It.IsAny <ResultType?>(), It.IsAny <string>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>())) .ReturnsAsync(azureResponse); this.monitorManagementClientMock.SetupGet(monitorClient => monitorClient.Metrics).Returns(this.metricsOperationsMock.Object); IMetricClient metricClient = new MetricClient(this.tracerMock.Object, this.monitorManagementClientMock.Object); List <MetricQueryResult> metrics = (await metricClient.GetResourceMetricsAsync(this.resourceIdentifier, StorageServiceType.Queue, new QueryParameters() { MetricNamespace = "NAMESPACE" }, default(CancellationToken))).ToList(); // Validate that right Uri was generated this.metricsOperationsMock.Verify(metric => metric.ListWithHttpMessagesAsync(expectedUri, It.IsAny <ODataQuery <MetadataValueInner> >(), null, null, string.Empty, null, null, null, null, "NAMESPACE", null, CancellationToken.None)); Assert.AreEqual(metrics.Count, 2, "2 metrics are expected"); }
public async Task WhenCallingGetResourceMetricsWithServiceTypeHappyFlow() { var timestamp = DateTime.UtcNow; string expectedUri = "/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_NAME/queueServices/default"; var azureResponse = new AzureOperationResponse <ResponseInner>() { Body = new ResponseInner("timespan", GetMetricList(timestamp)), Request = new HttpRequestMessage(), RequestId = "RequestId", Response = new HttpResponseMessage() }; this.metricsOperationsMock .Setup(metric => metric.ListWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <ODataQuery <MetadataValueInner> >(), It.IsAny <string>(), It.IsAny <TimeSpan?>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int?>(), It.IsAny <string>(), It.IsAny <ResultType?>(), It.IsAny <string>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>())) .ReturnsAsync(azureResponse); this.monitorManagementClientMock.SetupGet(monitorClient => monitorClient.Metrics).Returns(this.metricsOperationsMock.Object); IMetricClient metricClient = new MetricClient(this.tracerMock.Object, this.resourceIdentifier.SubscriptionId, this.monitorManagementClientMock.Object); List <MetricQueryResult> metrics = (await metricClient.GetResourceMetricsAsync(this.resourceIdentifier, ServiceType.AzureStorageQueue, new QueryParameters(), default(CancellationToken))).ToList(); // Validate that right Uri was generated this.metricsOperationsMock.Verify(metric => metric.ListWithHttpMessagesAsync(expectedUri, It.IsAny <ODataQuery <MetadataValueInner> >(), null, null, string.Empty, null, null, null, null, null, null, CancellationToken.None)); Assert.AreEqual(metrics.Count, 2, "2 metrics are expected"); // Validate first metric was converted successfully Assert.AreEqual("MetricName1", metrics[0].Name, "First metric name isn't correct"); Assert.AreEqual("ByteSeconds", metrics[0].Unit, "First metric unit isn't correct"); Assert.AreEqual(0, metrics[0].Timeseries.Count, "First metric timeseries should be empty"); // Validate second metric was converted successfully Assert.AreEqual("MetricName2", metrics[1].Name, "Second metric name isn't correct"); Assert.AreEqual("MilliSeconds", metrics[1].Unit, "Second metric unit isn't correct"); Assert.AreEqual(5, metrics[1].Timeseries.Count, "Second metric timeseries should be empty"); Assert.AreEqual(2, metrics[1].Timeseries[0].Data.Count, "Second metric first timeseries (Dimension1Value1) length should be 2"); Assert.AreEqual(2, metrics[1].Timeseries[1].Data.Count, "Second metric second timeseries (Dimension1Value2) length should be 2"); Assert.AreEqual(1.1, metrics[1].Timeseries[0].Data[0].Average, "Second metric first timeseries first average is wrong"); Assert.AreEqual(1.0, metrics[1].Timeseries[0].Data[1].Average, "Second metric first timeseries second average is wrong"); Assert.AreEqual(timestamp.AddMinutes(-1), metrics[1].Timeseries[0].Data[0].TimeStamp, "Second metric first timeseries first timestamp is wrong"); Assert.IsNull(metrics[1].Timeseries[0].Data[0].Total, "Second metric first timeseries first total should be null"); Assert.IsNull(metrics[1].Timeseries[0].Data[0].Maximum, "Second metric first timeseries first maximum should be null"); Assert.IsNull(metrics[1].Timeseries[0].Data[0].Minimum, "Second metric first timeseries first minimum should be null"); Assert.IsNull(metrics[1].Timeseries[0].Data[0].Count, "Second metric first timeseries first count should be null"); Assert.AreEqual(2.1, metrics[1].Timeseries[1].Data[0].Minimum, "Second metric second timeseries first minimum is wrong"); Assert.AreEqual(3.1, metrics[1].Timeseries[2].Data[0].Maximum, "Second metric third timeseries first maximum is wrong"); Assert.AreEqual(4.1, metrics[1].Timeseries[3].Data[0].Total, "Second metric forth timeseries first total is wrong"); Assert.AreEqual(1, metrics[1].Timeseries[4].Data[0].Count, "Second metric fifth timeseries first count is wrong"); Assert.AreEqual(1, metrics[1].Timeseries[0].MetaData.Count, "Second metric first timeseries metadata length is wrong"); Assert.AreEqual("Dimension1", metrics[1].Timeseries[0].MetaData[0].Key, "Second metric first timeseries first metadata key is wrong"); Assert.AreEqual("Dimension1Value1", metrics[1].Timeseries[0].MetaData[0].Value, "Second metric first timeseries first metadata value is wrong"); }