public InfluxDBProvider(IHttpClientFactory clientFactory, IOptionsMonitor <InfluxDBOptions> optionsMonitor, IFluxHelper fluxHelper, IInfluxDBQueryResultParser queryResultParser) { this.clientFactory = clientFactory; options = optionsMonitor.CurrentValue; this.fluxHelper = fluxHelper; this.queryResultParser = queryResultParser; apiUrl = $"http://{options.Ip}"; if (options.Port > 0) { apiUrl += $":{options.Port}"; } apiUrl += "/api/v2"; }
public async System.Threading.Tasks.Task GetTimeSeriesAsync_Success() { TimeSeriesRequest request = new TimeSeriesRequest() { MeasurementName = "temperature", ValueType = TimeSeriesValueType.Float, Range = TimeSeriesRange.OneDay, Tags = new Dictionary <string, string>() { ["location"] = "Room1" } }; string httpResponseContent = "testHttpQueryResult"; HttpStatusCode statusCode = HttpStatusCode.OK; var messageHandlerMock = new HttpMessageHandlerMock(httpResponseContent, statusCode); var httpClient = new HttpClient(messageHandlerMock); var clientFactory = Substitute.For <IHttpClientFactory>(); clientFactory.CreateClient().Returns(httpClient); var optionsMonitor = Substitute.For <IOptionsMonitor <InfluxDBOptions> >(); var influxOptions = new InfluxDBOptions() { Ip = "192.168.0.10", Port = 8086, Database = "TestDB" }; optionsMonitor.CurrentValue.Returns(influxOptions); var dataPoints = new List <DataPoint>() { new DataPoint <float>(new DateTime(2020, 10, 30), 3.14f), new DataPoint <float>(new DateTime(2020, 10, 31), 3.14f) }; IFluxHelper fluxHelper = Substitute.For <IFluxHelper>(); IInfluxDBQueryResultParser queryResultParser = Substitute.For <IInfluxDBQueryResultParser>(); queryResultParser.ParseQueryResult(httpResponseContent, TimeSeriesValueType.Float).Returns(dataPoints); InfluxDBProvider provider = new InfluxDBProvider(clientFactory, optionsMonitor, fluxHelper, queryResultParser); var result = await provider.GetTimeSeriesAsync(request); Assert.NotNull(result); Assert.Equal(TimeSeriesResponseStatus.Success, result.Status); Assert.Equal(dataPoints, result.DataPoints); }