public void GetDetectionConfigurationsValidatesArguments()
        {
            MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient();

            Assert.That(() => adminClient.GetDetectionConfigurationsAsync(null), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.GetDetectionConfigurationsAsync(""), Throws.InstanceOf <ArgumentException>());
            Assert.That(() => adminClient.GetDetectionConfigurationsAsync("metricId"), Throws.InstanceOf <ArgumentException>().With.InnerException.TypeOf(typeof(FormatException)));

            Assert.That(() => adminClient.GetDetectionConfigurations(null), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.GetDetectionConfigurations(""), Throws.InstanceOf <ArgumentException>());
            Assert.That(() => adminClient.GetDetectionConfigurations("metricId"), Throws.InstanceOf <ArgumentException>().With.InnerException.TypeOf(typeof(FormatException)));
        }
        public async Task GetDetectionConfigurationsAsync()
        {
            string endpoint        = MetricsAdvisorUri;
            string subscriptionKey = MetricsAdvisorSubscriptionKey;
            string apiKey          = MetricsAdvisorApiKey;
            var    credential      = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);

            var adminClient = new MetricsAdvisorAdministrationClient(new Uri(endpoint), credential);

            string metricId = MetricId;

            int configCount = 0;

            await foreach (AnomalyDetectionConfiguration detectionConfiguration in adminClient.GetDetectionConfigurationsAsync(metricId))
            {
                Console.WriteLine($"Detection configuration ID: {detectionConfiguration.Id}");
                Console.WriteLine($"Name: {detectionConfiguration.Name}");
                Console.WriteLine($"Description: {detectionConfiguration.Description}");
                Console.WriteLine();

                // Print at most 5 detection configurations.
                if (++configCount >= 5)
                {
                    break;
                }
            }
        }
        public void GetDetectionConfigurationsRespectsTheCancellationToken()
        {
            MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient();

            using var cancellationSource = new CancellationTokenSource();
            cancellationSource.Cancel();

            IAsyncEnumerator <AnomalyDetectionConfiguration> asyncEnumerator = adminClient.GetDetectionConfigurationsAsync(FakeGuid, cancellationSource.Token).GetAsyncEnumerator();

            Assert.That(async() => await asyncEnumerator.MoveNextAsync(), Throws.InstanceOf <OperationCanceledException>());

            IEnumerator <AnomalyDetectionConfiguration> enumerator = adminClient.GetDetectionConfigurations(FakeGuid, cancellationSource.Token).GetEnumerator();

            Assert.That(() => enumerator.MoveNext(), Throws.InstanceOf <OperationCanceledException>());
        }