示例#1
0
        private async Task Initialize()
        {
            var metricClient = new MetricsQueryClient(_testEnvironment.MetricsEndpoint, _testEnvironment.Credential);

            var senderClient = new MetricsSenderClient(
                _testEnvironment.Location,
                _testEnvironment.MetricsIngestionEndpoint,
                _testEnvironment.MetricsResource,
                _testEnvironment.Credential,
                new SenderClientOptions()
            {
                Diagnostics = { IsLoggingContentEnabled = true }
            });

            do
            {
                // Stop sending when we are past the allowed threshold
                if (DateTimeOffset.UtcNow - StartTime < AllowedMetricAge)
                {
                    await SendData(senderClient);
                }

                await Task.Delay(TimeSpan.FromSeconds(5));
            } while (!await MetricsPropagated(metricClient));
        }
示例#2
0
        public async Task QueryMetrics()
        {
            #region Snippet:QueryMetrics

#if SNIPPET
            string resourceId =
                "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/<resource_provider>/<resource>";
#else
            string resourceId = TestEnvironment.MetricsResource;
#endif

            #region Snippet:CreateMetricsClient
            var metricsClient = new MetricsQueryClient(new DefaultAzureCredential());
            #endregion

            Response <MetricsQueryResult> results = await metricsClient.QueryAsync(
                resourceId,
                new[] { "Microsoft.OperationalInsights/workspaces" }
                );

            foreach (var metric in results.Value.Metrics)
            {
                Console.WriteLine(metric.Name);
                foreach (var element in metric.TimeSeries)
                {
                    Console.WriteLine("Dimensions: " + string.Join(",", element.Metadata));

                    foreach (var metricValue in element.Data)
                    {
                        Console.WriteLine(metricValue);
                    }
                }
            }
            #endregion
        }
        public async Task UsesDefaultEndpoint()
        {
            var mockTransport = MockTransport.FromMessageCallback(_ => new MockResponse(200).SetContent("{}"));

            var client = new MetricsQueryClient(new MockCredential(), new MetricsQueryClientOptions()
            {
                Transport = mockTransport
            });

            await client.QueryAsync("rid", new string[] {});

            StringAssert.StartsWith("https://management.azure.com", mockTransport.SingleRequest.Uri.ToString());
        }
示例#4
0
        protected MonitorQueryPerfTest(T options) : base(options)
        {
            LogsQueryClient = new LogsQueryClient(
                TestEnvironment.LogsEndpoint,
                TestEnvironment.Credential,
                ConfigureClientOptions(new LogsQueryClientOptions()));

            MetricsQueryClient = new MetricsQueryClient(
                TestEnvironment.MetricsEndpoint,
                TestEnvironment.Credential,
                ConfigureClientOptions(new MetricsQueryClientOptions())
                );
        }
        public async Task InitializeAsync()
        {
            if (_testEnvironment.Mode == RecordedTestMode.Playback || _initialized)
            {
                return;
            }

            _initialized = true;
            var metricClient = new MetricsQueryClient(_testEnvironment.MetricsEndpoint, _testEnvironment.Credential);

            await SendData();

            while (!await MetricsPropagated(metricClient))
            {
                await Task.Delay(TimeSpan.FromSeconds(5));
            }
        }
        public async Task CanGetMetricByNameInvalid()
        {
            MetricsQueryClient            client  = CreateClient();
            Response <MetricsQueryResult> results = await client.QueryResourceAsync(
                TestEnvironment.MetricsResource,
                new[] { _testData.MetricName },
                new MetricsQueryOptions
            {
                MetricNamespace = _testData.MetricNamespace,
                TimeRange       = new QueryTimeRange(_testData.StartTime, _testData.EndTime),
                Aggregations    =
                {
                    MetricAggregationType.Count
                }
            });

            Assert.Throws <KeyNotFoundException>(() => { results.Value.GetMetricByName("Guinness"); });
        }
        public async Task CanGetMetricByNameNull()
        {
            MetricsQueryClient            client  = CreateClient();
            Response <MetricsQueryResult> results = await client.QueryResourceAsync(
                TestEnvironment.MetricsResource,
                new[] { _testData.MetricName },
                new MetricsQueryOptions
            {
                MetricNamespace = _testData.MetricNamespace,
                TimeRange       = new QueryTimeRange(_testData.StartTime, _testData.EndTime),
                Filter          = $"Name eq '{_testData.Name1}'",
                Aggregations    =
                {
                    MetricAggregationType.Count
                }
            });

            Assert.Throws <ArgumentNullException>(() => { results.Value.GetMetricByName(null); });
        }
        public async Task CanGetMetricByName()
        {
            MetricsQueryClient            client  = CreateClient();
            Response <MetricsQueryResult> results = await client.QueryResourceAsync(
                TestEnvironment.MetricsResource,
                new[] { _testData.MetricName },
                new MetricsQueryOptions
            {
                MetricNamespace = _testData.MetricNamespace,
                TimeRange       = new QueryTimeRange(_testData.StartTime, _testData.EndTime),
                Aggregations    =
                {
                    MetricAggregationType.Count
                }
            });

            var result = results.Value.GetMetricByName(_testData.MetricName);

            Assert.AreEqual(result.Name, _testData.MetricName);
        }
        public async Task UsesDefaultAuthScope(string scope, string expectedScope)
        {
            var mockTransport = MockTransport.FromMessageCallback(_ => new MockResponse(200).SetContent("{}"));

            Mock <MockCredential> mock = new() { CallBase = true };

            string[] scopes = null;
            mock.Setup(m => m.GetTokenAsync(It.IsAny <TokenRequestContext>(), It.IsAny <CancellationToken>()))
            .Callback <TokenRequestContext, CancellationToken>((c, _) => scopes = c.Scopes)
            .CallBase();

            var client = new MetricsQueryClient(mock.Object, new MetricsQueryClientOptions()
            {
                Transport = mockTransport,
                Audience  = scope == null ? (MetricsQueryClientAudience?)null : new MetricsQueryClientAudience(scope)
            });

            await client.QueryAsync("", new string[] {});

            Assert.AreEqual(new[] { expectedScope }, scopes);
        }
示例#10
0
 public override async Task RunAsync(CancellationToken cancellationToken)
 {
     await MetricsQueryClient.QueryAsync(TestEnvironment.MetricsResource, _metrics, cancellationToken : cancellationToken);
 }
示例#11
0
 public override void Run(CancellationToken cancellationToken)
 {
     MetricsQueryClient.Query(TestEnvironment.MetricsResource, _metrics, cancellationToken: cancellationToken);
 }
        public void ExposesPublicEndpoint()
        {
            var client = new MetricsQueryClient(new Uri("https://management.azure.gov"), new MockCredential(), new MetricsQueryClientOptions());

            Assert.AreEqual(new Uri("https://management.azure.gov"), client.Endpoint);
        }