public async Task ForecastStartsNewSession() { var dataSetName = $"testDataSet-{DateTime.Now:s}"; var dataSet = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances"); await fixture.Client.DataSets.Create(DataSet.From(dataSetName, dataSet)); var sessionRequest = new ForecastSessionRequest() { DataSourceName = dataSetName, Columns = new Dictionary <string, ColumnMetadata>() { ["instances"] = new ColumnMetadata() { DataType = ColumnType.NumericMeasure, Role = ColumnRole.Target } }, StartDate = DateTimeOffset.Parse("2017-03-26"), EndDate = DateTimeOffset.Parse("2017-04-25"), ResultInterval = ResultInterval.Day }; var actual = await fixture.Client.Sessions.CreateForecast(sessionRequest); Assert.NotNull(actual.SessionId); await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria(dataSetName) { Options = DataSetDeleteOptions.CascadeAll }); }
public async Task CanRemoveMultipleSessions() { var dataSetName = $"testDataSet-{DateTime.Now:s}"; var dataSet = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances"); await fixture.Client.DataSets.Create(DataSet.From(dataSetName, dataSet)); var first = await fixture.Client.Sessions.AnalyzeImpact(Sessions.Impact(dataSetName, DateTimeOffset.Parse("2016-11-26"), DateTimeOffset.Parse("2016-12-25"), ResultInterval.Day, "juliet-juliet-echo-1", "instances")); var second = await fixture.Client.Sessions.AnalyzeImpact(Sessions.Impact(dataSetName, DateTimeOffset.Parse("2016-11-26"), DateTimeOffset.Parse("2016-12-25"), ResultInterval.Day, "juliet-juliet-echo-2", "instances")); await fixture.Client.Sessions.Remove(new SessionRemoveCriteria() { DataSourceName = dataSetName, Type = SessionType.Impact }); var exceptionTheFirst = await Assert.ThrowsAsync <NexosisClientException>(async() => await fixture.Client.Sessions.Get(first.SessionId)); var exceptionTheSecond = await Assert.ThrowsAsync <NexosisClientException>(async() => await fixture.Client.Sessions.Get(second.SessionId)); Assert.Equal(exceptionTheFirst.StatusCode, HttpStatusCode.NotFound); Assert.Equal(exceptionTheSecond.StatusCode, HttpStatusCode.NotFound); await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria( dataSetName) { Options = DataSetDeleteOptions.CascadeAll }); }
public ViewIntegrationTests(IntegrationTestFixture fixture) { this.fixture = fixture; var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "xray"); var result = fixture.Client.DataSets.Create(DataSet.From("mike", data)).Result; }
public async Task PredictModelReturnsResults() { var record = DataSetGenerator.Run(1, 10, null).Data; var result = await fixture.Client.Models.Predict(new ModelPredictionRequest(savedModel.ModelId, record)); Assert.NotEmpty(result.Data); }
public async Task CanSaveDataSet() { var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "xray"); var result = await fixture.Client.DataSets.Create("mike", data); Assert.Equal("mike", result.DataSetName); await fixture.Client.DataSets.Remove("mike", DataSetDeleteOptions.CascadeAll); }
public async Task CanSaveDataSetWithAssumedTimestampColumn() { var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "foxtrot", implicitTimestamp: true); var result = await fixture.Client.DataSets.Create("whiskey", data); Assert.Equal("whiskey", result.DataSetName); await fixture.Client.DataSets.Remove("whiskey", DataSetDeleteOptions.CascadeAll); }
public async Task StartImpactStartsNewSession() { var dataSetName = $"testDataSet-{DateTime.UtcNow:s}"; var dataSet = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances"); await fixture.Client.DataSets.Create(dataSetName, dataSet); var actual = await fixture.Client.Sessions.CreateForecast(dataSetName, "instances", DateTimeOffset.Parse("2017-03-26"), DateTimeOffset.Parse("2017-04-25"), ResultInterval.Day); Assert.NotNull(actual.SessionId); await fixture.Client.DataSets.Remove(dataSetName, DataSetDeleteOptions.CascadeAll); }
public async Task CanGetDataSetThatHasBeenSaved() { var data = DataSetGenerator.Run(DateTimeOffset.Parse("2017-01-01 0:00 -0:00"), DateTimeOffset.Parse("2017-03-31 0:00 -0:00"), "india juliet"); await fixture.Client.DataSets.Create("zulu yankee", data); var result = await fixture.Client.DataSets.Get("zulu yankee"); Assert.Equal(DateTimeOffset.Parse("2017-01-01 0:00 -0:00"), DateTimeOffset.Parse(result.Data.First()["time"])); Assert.True(result.Data.First().ContainsKey("india juliet")); await fixture.Client.DataSets.Remove("zulu yankee", DataSetDeleteOptions.CascadeAll); }
public async Task SavingDataSetReturnsImputationAndAggregationOnColumns() { var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "xray"); var result = await fixture.Client.DataSets.Create("mike", data); var dataSet = await fixture.Client.DataSets.Get("mike"); Assert.Equal(ImputationStrategy.Zeroes, dataSet.Columns["xray"].Imputation); Assert.Equal(AggregationStrategy.Sum, dataSet.Columns["xray"].Aggregation); await fixture.Client.DataSets.Remove("mike", DataSetDeleteOptions.CascadeAll); }
public async Task StartingSessionWithMeasureDatatypeTargetStartsSession() { var dataSetName = $"testDataSet-{DateTime.Now:s}"; var dataSet = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances"); await fixture.Client.DataSets.Create(DataSet.From(dataSetName, dataSet)); var actual = await fixture.Client.Sessions.CreateForecast(Sessions.Forecast(dataSetName, DateTimeOffset.Parse("2017-03-26"), DateTimeOffset.Parse("2017-04-25"), ResultInterval.Day, "instances")); Assert.NotNull(actual.SessionId); await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria(dataSetName) { Options = DataSetDeleteOptions.CascadeAll }); }
public async Task CheckingSessionStatusReturnsExpectedValue() { var dataSetName = $"testDataSet-{DateTime.Now:s}"; var dataSet = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances"); await fixture.Client.DataSets.Create(dataSetName, dataSet); var actual = await fixture.Client.Sessions.EstimateImpact(dataSetName, $"charlie-delta-{DateTime.UtcNow:s}", "instances", DateTimeOffset.Parse("2016-11-26"), DateTimeOffset.Parse("2016-12-25"), ResultInterval.Day); var status = await fixture.Client.Sessions.GetStatus(actual.SessionId); Assert.Equal(actual.Status, status.Status); await fixture.Client.DataSets.Remove(dataSetName, DataSetDeleteOptions.CascadeAll); }
public async Task CanRemoveDataSet() { var id = Guid.NewGuid().ToString("N"); var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "hotel"); await fixture.Client.DataSets.Create(id, data); await fixture.Client.DataSets.Remove(id, DataSetDeleteOptions.None); var exception = await Assert.ThrowsAsync <NexosisClientException>(async() => await fixture.Client.DataSets.Get(id)); Assert.Equal(HttpStatusCode.NotFound, exception.StatusCode); }
public async Task SettingImputationAndAggregationExplicitlySetsCorrectValues() { var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "temp"); data.Columns["temp"].Imputation = ImputationStrategy.Mode; data.Columns["temp"].Aggregation = AggregationStrategy.Median; var result = await fixture.Client.DataSets.Create("agg", data); var dataSet = await fixture.Client.DataSets.Get("agg"); Assert.Equal(ImputationStrategy.Mode, dataSet.Columns["temp"].Imputation); Assert.Equal(AggregationStrategy.Median, dataSet.Columns["temp"].Aggregation); await fixture.Client.DataSets.Remove("agg", DataSetDeleteOptions.CascadeAll); }
public async Task MeasureDataTypeReturnsCorrectImputationAndAggregation() { var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "temp"); data.Columns["temp"].DataType = ColumnType.NumericMeasure; var result = await fixture.Client.DataSets.Create("temps", data); var dataSet = await fixture.Client.DataSets.Get("temps"); Assert.Equal(ImputationStrategy.Mean, dataSet.Columns["temp"].Imputation); Assert.Equal(AggregationStrategy.Mean, dataSet.Columns["temp"].Aggregation); await fixture.Client.DataSets.Remove("temps", DataSetDeleteOptions.CascadeAll); }
public async Task CanPutMoreDataToSameDataSet() { var data = DataSetGenerator.Run(DateTimeOffset.Parse("2017-01-01 0:00 -0:00"), DateTimeOffset.Parse("2017-01-31 0:00 -0:00"), "golf hotel"); await fixture.Client.DataSets.Create("alpha bravo", data); var moreData = DataSetGenerator.Run(DateTimeOffset.Parse("2017-02-01 0:00 -0:00"), DateTimeOffset.Parse("2017-03-01 0:00 -0:00"), "golf hotel"); await fixture.Client.DataSets.Create("alpha bravo", moreData); var result = await fixture.Client.DataSets.Get("alpha bravo"); var orderedData = result.Data.Select(d => DateTimeOffset.Parse(d["time"])).OrderBy(it => it); Assert.Equal(DateTimeOffset.Parse("2017-01-01 0:00 -0:00"), orderedData.First()); Assert.Equal(DateTimeOffset.Parse("2017-02-28 0:00 -0:00"), orderedData.Last()); await fixture.Client.DataSets.Remove("alpha bravo", DataSetDeleteOptions.CascadeAll); }
public async Task DeletingSessionThenQueryingReturns404() { var dataSetName = $"testDataSet-{DateTime.Now:s}"; var dataSet = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances"); await fixture.Client.DataSets.Create(dataSetName, dataSet); var actual = await fixture.Client.Sessions.AnalyzeImpact(dataSetName, $"charlie-delta-{DateTime.UtcNow:s}", "instances", DateTimeOffset.Parse("2016-11-26"), DateTimeOffset.Parse("2016-12-25"), ResultInterval.Day); await fixture.Client.Sessions.Remove(actual.SessionId); var exception = await Assert.ThrowsAsync <NexosisClientException>(async() => await fixture.Client.Sessions.Get(actual.SessionId)); Assert.Equal(exception.StatusCode, HttpStatusCode.NotFound); await fixture.Client.DataSets.Remove(dataSetName, DataSetDeleteOptions.CascadeAll); }
public async Task CanSaveView() { //This test fails occassionally because dataset doesn't exist //adding within test to ensure success var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "xray"); await fixture.Client.DataSets.Create(DataSet.From("forSaveView", data)); var view = new ViewInfo() { DataSetName = "forSaveView" }; var result = await fixture.Client.Views.Create("saveTestView", view); Assert.Equal("forSaveView", result.DataSetName); Assert.Equal("saveTestView", result.ViewName); await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria("forSaveView"){ Options = DataSetDeleteOptions.CascadeAll }); }
public async Task ListViews() { //This test fails occassionally because dataset doesn't exist //adding within test to ensure success var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "xray"); await fixture.Client.DataSets.Create(DataSet.From("forViewList", data)); var view = new ViewInfo() { DataSetName = "forViewList" }; var result = await fixture.Client.Views.Create("listTestView", view); var list = await fixture.Client.Views.List(); Assert.True(list.Items.Count > 0); await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria("forViewList") { Options = DataSetDeleteOptions.CascadeAll }); }
public IntegrationTestFixture() { string baseUrl = "https://ml.nexosis.com/v1"; baseUrl = Environment.GetEnvironmentVariable(NexosisClient.NexosisApiUriEnvironmentVariable); ForecastDataSetName = "forecast.015ce681-ca24-449d-a673-699aff25a0cc"; Client = new NexosisClient(Environment.GetEnvironmentVariable(NexosisClient.NexosisApiKeyEnvironmentVariable) , baseUrl , new ApiConnection.HttpClientFactory()); var dataSetTask = Client.DataSets.Create(DataSet.From(ForecastDataSetName, DataSetGenerator.Run(DateTime.Parse("2016-01-01"), DateTime.Parse("2017-03-26"), "instances"))); dataSetTask.GetAwaiter().GetResult(); var keyedDatasetTask = Client.DataSets.Create(DataSet.From(ModelDataSetName, DataSetGenerator.Run(90, 10, "instances"))); keyedDatasetTask.GetAwaiter().GetResult(); }
public async Task ModelStartsNewSession() { var dataSetName = $"testDataSet-{DateTime.Now:s}"; var dataSet = DataSetGenerator.Run(90, 10, "instances"); await fixture.Client.DataSets.Create(DataSet.From(dataSetName, dataSet)); var actual = await fixture.Client.Sessions.TrainModel(Sessions.TrainModel(dataSetName, PredictionDomain.Regression, options: new ModelSessionRequest { Columns = new Dictionary <string, ColumnMetadata> { ["instances"] = new ColumnMetadata { DataType = ColumnType.Numeric, Role = ColumnRole.Target } } })); Assert.NotNull(actual.SessionId); await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria(dataSetName) { Options = DataSetDeleteOptions.CascadeAll }); }
public async Task ModelStartsNewSession() { var dataSetName = $"testDataSet-{DateTime.Now:s}"; var dataSet = DataSetGenerator.Run(90, 10, "instances"); await fixture.Client.DataSets.Create(dataSetName, dataSet); var sessionRequest = new ModelSessionDetail() { DataSourceName = dataSetName, PredictionDomain = PredictionDomain.Regression, Columns = new Dictionary <string, ColumnMetadata> { ["instances"] = new ColumnMetadata { DataType = ColumnType.Numeric, Role = ColumnRole.Target } } }; var actual = await fixture.Client.Sessions.TrainModel(sessionRequest); Assert.NotNull(actual.SessionId); await fixture.Client.DataSets.Remove(dataSetName, DataSetDeleteOptions.CascadeAll); }