Add support for custom time grain aggregation while fetching time series in MDM data provider. (#609)
This commit is contained in:
Родитель
9de0234853
Коммит
b60d64e655
|
@ -150,6 +150,23 @@ namespace Diagnostics.DataProviders
|
|||
return await GetMultipleTimeSeriesAsync(startTimeUtc, endTimeUtc, sampling, new List<Tuple<string, string, IEnumerable<KeyValuePair<string, string>>>> { definition });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the time series with specified time granularity.
|
||||
/// </summary>
|
||||
/// <param name="startTimeUtc">The start time UTC.</param>
|
||||
/// <param name="endTimeUtc">The end time UTC.</param>
|
||||
/// <param name="sampling">The sampling type.</param>
|
||||
/// <param name="metricNamespace">The metric namespace.</param>
|
||||
/// <param name="metricName">The metric name.</param>
|
||||
/// <param name="seriesResolutionInMinutes">The resolution window used to reduce the resolution of the returned series.</param>
|
||||
/// <param name="dimension">The dimension.</param>
|
||||
/// <returns>The time series for the given definition.</returns>
|
||||
public async Task<IEnumerable<DataTable>> GetTimeSeriesAsync(DateTime startTimeUtc, DateTime endTimeUtc, Sampling sampling, string metricNamespace, string metricName, int seriesResolutionInMinutes, IDictionary<string, string> dimension)
|
||||
{
|
||||
var definition = Tuple.Create<string, string, IEnumerable<KeyValuePair<string, string>>>(metricNamespace, metricName, dimension);
|
||||
return await GetMultipleTimeSeriesAsync(startTimeUtc, endTimeUtc, sampling, seriesResolutionInMinutes, new List<Tuple<string, string, IEnumerable<KeyValuePair<string, string>>>> { definition });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of the time series.
|
||||
/// </summary>
|
||||
|
|
|
@ -63,6 +63,19 @@ namespace Diagnostics.DataProviders.Interfaces
|
|||
/// <returns>The time series for the given definition.</returns>
|
||||
Task<IEnumerable<DataTable>> GetTimeSeriesAsync(DateTime startTimeUtc, DateTime endTimeUtc, Sampling sampling, string metricNamespace, string metricName, IDictionary<string, string> dimension);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the time series with specified time granularity.
|
||||
/// </summary>
|
||||
/// <param name="startTimeUtc">The start time UTC.</param>
|
||||
/// <param name="endTimeUtc">The end time UTC.</param>
|
||||
/// <param name="sampling">The sampling type.</param>
|
||||
/// <param name="metricNamespace">The metric namespace.</param>
|
||||
/// <param name="metricName">The metric name.</param>
|
||||
/// <param name="seriesResolutionInMinutes">The resolution window used to reduce the resolution of the returned series.</param>
|
||||
/// <param name="dimension">The dimension.</param>
|
||||
/// <returns>The time series for the given definition.</returns>
|
||||
Task<IEnumerable<DataTable>> GetTimeSeriesAsync(DateTime startTimeUtc, DateTime endTimeUtc, Sampling sampling, string metricNamespace, string metricName, int seriesResolutionInMinutes, IDictionary<string, string> dimension);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of the time series.
|
||||
/// </summary>
|
||||
|
|
|
@ -45,7 +45,12 @@ namespace Diagnostics.DataProviders
|
|||
return MakeDependencyCall(DataProvider.GetTimeSeriesAsync(startTimeUtc, endTimeUtc, sampling, metricNamespace, metricName, dimension));
|
||||
}
|
||||
|
||||
public Task<IEnumerable<DataTable>> GetMultipleTimeSeriesAsync(DateTime startTimeUtc, DateTime endTimeUtc, Sampling sampling, int seriesResolutionInMinutes, IEnumerable<Tuple<string, string, IEnumerable<KeyValuePair<string, string>>>> definitions)
|
||||
public Task<IEnumerable<DataTable>> GetTimeSeriesAsync(DateTime startTimeUtc, DateTime endTimeUtc, Sampling sampling, string metricNamespace, string metricName, int seriesResolutionInMinutes, IDictionary<string, string> dimension)
|
||||
{
|
||||
return MakeDependencyCall(DataProvider.GetTimeSeriesAsync(startTimeUtc, endTimeUtc, sampling, metricNamespace, metricName, seriesResolutionInMinutes, dimension));
|
||||
}
|
||||
|
||||
public Task<IEnumerable<DataTable>> GetMultipleTimeSeriesAsync(DateTime startTimeUtc, DateTime endTimeUtc, Sampling sampling, int seriesResolutionInMinutes, IEnumerable<Tuple<string, string, IEnumerable<KeyValuePair<string, string>>>> definitions)
|
||||
{
|
||||
return MakeDependencyCall(DataProvider.GetMultipleTimeSeriesAsync(startTimeUtc, endTimeUtc, sampling, seriesResolutionInMinutes, definitions));
|
||||
}
|
||||
|
|
|
@ -171,6 +171,33 @@ namespace Diagnostics.Tests.DataProviderTests
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mdm data provider test for custom time grain aggregation
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async void TestMdmGetTimeSeriesValuesCustomTimeGrainAsync()
|
||||
{
|
||||
var metadata = ScriptTestDataHelper.GetRandomMetadata();
|
||||
metadata.ScriptText = @"
|
||||
public async static Task<IEnumerable<DataTable>> Run(DataProviders dataProviders) {
|
||||
var dimensions = new Dictionary<string, string> { { ""StampName"", ""kudu1"" } };
|
||||
return await dataProviders.Mdm(MdmDataSource.Antares).GetTimeSeriesAsync(DateTime.UtcNow.AddMinutes(-10), DateTime.UtcNow, Sampling.Average | Sampling.Max | Sampling.Count, ""Microsoft/Web/WebApps"", ""CpuTime"", 5, dimensions);
|
||||
}";
|
||||
|
||||
var configFactory = new MockDataProviderConfigurationFactory();
|
||||
var config = configFactory.LoadConfigurations();
|
||||
|
||||
var dataProviders = new DataProviders.DataProviders(new DataProviderContext(config, Guid.NewGuid().ToString()));
|
||||
|
||||
using (EntityInvoker invoker = new EntityInvoker(metadata, ScriptHelper.GetFrameworkReferences(), ScriptHelper.GetFrameworkImports()))
|
||||
{
|
||||
await invoker.InitializeEntryPointAsync();
|
||||
var result = await invoker.Invoke(new object[] { dataProviders }) as IEnumerable<DataTable>;
|
||||
|
||||
Assert.NotNull(result);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Kusto data provider test
|
||||
/// </summary>
|
||||
|
|
Загрузка…
Ссылка в новой задаче