Пример #1
0
        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);
        }