コード例 #1
0
        public async Task CreateAndDeleteDataFeedAsync()
        {
            string endpoint        = MetricsAdvisorUri;
            string subscriptionKey = MetricsAdvisorSubscriptionKey;
            string apiKey          = MetricsAdvisorApiKey;
            var    credential      = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey);

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

            string sqlServerConnectionString = SqlServerConnectionString;
            string sqlServerQuery            = SqlServerQuery;

            #region Snippet:CreateDataFeedAsync
            //@@ string sqlServerConnectionString = "<connectionString>";
            //@@ string sqlServerQuery = "<query>";

            var dataFeedName        = "Sample data feed";
            var dataFeedSource      = new SqlServerDataFeedSource(sqlServerConnectionString, sqlServerQuery);
            var dataFeedGranularity = new DataFeedGranularity(DataFeedGranularityType.Daily);

            var dataFeedMetrics = new List <DataFeedMetric>()
            {
                new DataFeedMetric("cost"),
                new DataFeedMetric("revenue")
            };
            var dataFeedDimensions = new List <DataFeedDimension>()
            {
                new DataFeedDimension("category"),
                new DataFeedDimension("city")
            };
            var dataFeedSchema = new DataFeedSchema(dataFeedMetrics)
            {
                DimensionColumns = dataFeedDimensions
            };

            var ingestionStartTime        = DateTimeOffset.Parse("2020-01-01T00:00:00Z");
            var dataFeedIngestionSettings = new DataFeedIngestionSettings(ingestionStartTime);

            var dataFeed = new DataFeed(dataFeedName, dataFeedSource, dataFeedGranularity, dataFeedSchema, dataFeedIngestionSettings);

            Response <string> response = await adminClient.CreateDataFeedAsync(dataFeed);

            string dataFeedId = response.Value;

            Console.WriteLine($"Data feed ID: {dataFeedId}");
            #endregion

            // Only the ID of the data feed is known at this point. You can perform another service
            // call to GetDataFeedAsync or GetDataFeed to get more information, such as status, created
            // time, the list of administrators, or the metric IDs.

            // Delete the created data feed to clean up the Metrics Advisor resource. Do not perform this
            // step if you intend to keep using the data feed.

            await adminClient.DeleteDataFeedAsync(dataFeedId);
        }
コード例 #2
0
 public void InitDataFeedSources()
 {
     _blobFeedName     = Recording.GenerateAlphaNumericId("test");
     _blobSource       = new AzureBlobDataFeedSource(TestEnvironment.PrimaryStorageAccountKey, "foo", "template");
     _dailyGranularity = new DataFeedGranularity(DataFeedGranularityType.Daily);
     _dataFeedSchema   = new DataFeedSchema(new List <DataFeedMetric> {
         new DataFeedMetric("someMetricId", "someMetricName", "someMetricDisplayName", "someDescription")
     });
     _dataFeedIngestionSettings = new DataFeedIngestionSettings(new DateTimeOffset(Recording.UtcNow.Year, Recording.UtcNow.Month, Recording.UtcNow.Day, 0, 0, 0, TimeSpan.Zero));
     _dataFeedDescription       = "my feed description";
 }
コード例 #3
0
        public void DataFeed()
        {
            var id              = "id";
            var status          = DataFeedStatus.Paused;
            var createdOn       = DateTimeOffset.Parse("2021-01-01T00:00:00Z");
            var creator         = "creator";
            var isAdministrator = true;
            var metricIds       = new Dictionary <string, string>()
            {
                { "key1", "value1" },
                { "key2", "value2" }
            };
            var name                         = "name";
            var dataSource                   = new SqlServerDataFeedSource("query");
            var schema                       = new DataFeedSchema();
            var granularity                  = new DataFeedGranularity(DataFeedGranularityType.Daily);
            var ingestionSettings            = new DataFeedIngestionSettings(DateTimeOffset.UtcNow);
            var description                  = "description";
            var actionLinkTemplate           = "actionLinkTemplate";
            var accessMode                   = DataFeedAccessMode.Public;
            var rollupSettings               = new DataFeedRollupSettings();
            var missingDataPointFillSettings = new DataFeedMissingDataPointFillSettings(DataFeedMissingDataPointFillType.PreviousValue);
            var administrators               = new List <string>()
            {
                "admin1", "admin2"
            };
            var viewers = new List <string>()
            {
                "viewer1", "viewer2"
            };

            var dataFeed = MetricsAdvisorModelFactory.DataFeed(id, status, createdOn, creator, isAdministrator, metricIds, name, dataSource,
                                                               schema, granularity, ingestionSettings, description, actionLinkTemplate, accessMode, rollupSettings, missingDataPointFillSettings,
                                                               administrators, viewers);

            Assert.That(dataFeed.Id, Is.EqualTo(id));
            Assert.That(dataFeed.Status, Is.EqualTo(status));
            Assert.That(dataFeed.CreatedOn, Is.EqualTo(createdOn));
            Assert.That(dataFeed.Creator, Is.EqualTo(creator));
            Assert.That(dataFeed.IsAdministrator, Is.EqualTo(isAdministrator));
            Assert.That(dataFeed.MetricIds, Is.EqualTo(metricIds));
            Assert.That(dataFeed.Name, Is.EqualTo(name));
            Assert.That(dataFeed.DataSource, Is.EqualTo(dataSource));
            Assert.That(dataFeed.Schema, Is.EqualTo(schema));
            Assert.That(dataFeed.Granularity, Is.EqualTo(granularity));
            Assert.That(dataFeed.IngestionSettings, Is.EqualTo(ingestionSettings));
            Assert.That(dataFeed.Description, Is.EqualTo(description));
            Assert.That(dataFeed.ActionLinkTemplate, Is.EqualTo(actionLinkTemplate));
            Assert.That(dataFeed.AccessMode, Is.EqualTo(accessMode));
            Assert.That(dataFeed.RollupSettings, Is.EqualTo(rollupSettings));
            Assert.That(dataFeed.MissingDataPointFillSettings, Is.EqualTo(missingDataPointFillSettings));
            Assert.That(dataFeed.Administrators, Is.EqualTo(administrators));
            Assert.That(dataFeed.Viewers, Is.EqualTo(viewers));
        }
コード例 #4
0
        public void CreateDataFeedValidatesArguments()
        {
            MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient();

            var name        = "dataFeedName";
            var dataSource  = new AzureTableDataFeedSource("connectionString", "table", "query");
            var granularity = new DataFeedGranularity(DataFeedGranularityType.Daily);
            var schema      = new DataFeedSchema()
            {
                MetricColumns = { new("metricName") }
            };
            var ingestionSettings = new DataFeedIngestionSettings(DateTimeOffset.UtcNow);

            var dataFeed = new DataFeed()
            {
                Name              = null,
                DataSource        = dataSource,
                Granularity       = granularity,
                Schema            = schema,
                IngestionSettings = ingestionSettings
            };

            Assert.That(() => adminClient.CreateDataFeedAsync(null), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.CreateDataFeed(null), Throws.InstanceOf <ArgumentNullException>());

            Assert.That(() => adminClient.CreateDataFeedAsync(dataFeed), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.CreateDataFeed(dataFeed), Throws.InstanceOf <ArgumentNullException>());

            dataFeed.Name = "";
            Assert.That(() => adminClient.CreateDataFeedAsync(dataFeed), Throws.InstanceOf <ArgumentException>());
            Assert.That(() => adminClient.CreateDataFeed(dataFeed), Throws.InstanceOf <ArgumentException>());

            dataFeed.Name       = name;
            dataFeed.DataSource = null;
            Assert.That(() => adminClient.CreateDataFeedAsync(dataFeed), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.CreateDataFeed(dataFeed), Throws.InstanceOf <ArgumentNullException>());

            dataFeed.DataSource  = dataSource;
            dataFeed.Granularity = null;
            Assert.That(() => adminClient.CreateDataFeedAsync(dataFeed), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.CreateDataFeed(dataFeed), Throws.InstanceOf <ArgumentNullException>());

            dataFeed.Granularity = granularity;
            dataFeed.Schema      = null;
            Assert.That(() => adminClient.CreateDataFeedAsync(dataFeed), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.CreateDataFeed(dataFeed), Throws.InstanceOf <ArgumentNullException>());

            dataFeed.Schema            = schema;
            dataFeed.IngestionSettings = null;
            Assert.That(() => adminClient.CreateDataFeedAsync(dataFeed), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.CreateDataFeed(dataFeed), Throws.InstanceOf <ArgumentNullException>());
        }
コード例 #5
0
        public void UpdateDataFeedRespectsTheCancellationToken()
        {
            MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient();

            var dataSource  = new AzureTableDataFeedSource("connectionString", "table", "query");
            var granularity = new DataFeedGranularity(DataFeedGranularityType.Daily);
            var schema      = new DataFeedSchema(new List <DataFeedMetric>()
            {
                new DataFeedMetric("metricName")
            });
            var ingestionSettings = new DataFeedIngestionSettings(DateTimeOffset.UtcNow);
            var dataFeed          = new DataFeed("dataFeedName", dataSource, granularity, schema, ingestionSettings);

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

            Assert.That(() => adminClient.UpdateDataFeedAsync(FakeGuid, dataFeed, cancellationSource.Token), Throws.InstanceOf <OperationCanceledException>());
            Assert.That(() => adminClient.UpdateDataFeed(FakeGuid, dataFeed, cancellationSource.Token), Throws.InstanceOf <OperationCanceledException>());
        }
コード例 #6
0
        public void UpdateDataFeedValidatesArguments()
        {
            MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient();

            var dataSource  = new AzureTableDataFeedSource("connectionString", "table", "query");
            var granularity = new DataFeedGranularity(DataFeedGranularityType.Daily);
            var schema      = new DataFeedSchema(new List <DataFeedMetric>()
            {
                new DataFeedMetric("metricName")
            });
            var ingestionSettings = new DataFeedIngestionSettings(DateTimeOffset.UtcNow);
            var dataFeed          = new DataFeed("dataFeedName", dataSource, granularity, schema, ingestionSettings);

            Assert.That(() => adminClient.UpdateDataFeedAsync(null, dataFeed), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.UpdateDataFeedAsync("", dataFeed), Throws.InstanceOf <ArgumentException>());
            Assert.That(() => adminClient.UpdateDataFeedAsync("dataFeedId", dataFeed), Throws.InstanceOf <ArgumentException>().With.InnerException.TypeOf(typeof(FormatException)));
            Assert.That(() => adminClient.UpdateDataFeedAsync(FakeGuid, null), Throws.InstanceOf <ArgumentNullException>());

            Assert.That(() => adminClient.UpdateDataFeed(null, dataFeed), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => adminClient.UpdateDataFeed("", dataFeed), Throws.InstanceOf <ArgumentException>());
            Assert.That(() => adminClient.UpdateDataFeed("dataFeedId", dataFeed), Throws.InstanceOf <ArgumentException>().With.InnerException.TypeOf(typeof(FormatException)));
            Assert.That(() => adminClient.UpdateDataFeed(FakeGuid, null), Throws.InstanceOf <ArgumentNullException>());
        }