Пример #1
0
        static async Task Simple()
        {
            var points = new InfluxPoints()
                .Add(new InfluxPoint("ticketsold").AddTag("seller", "1").AddTag("cur", "SEK").AddField("amt", 150.0).AddField("fee", 50.0)) //TimeStamp is assigned in Influx
                .Add(new InfluxPoint("ticketsold").AddTag("seller", "1").AddTag("cur", "USD").AddField("amt", 10.0).AddField("fee", 2.5).AddTimeStamp())
                .Add(new InfluxPoint("ticketsold").AddTag("seller", "2").AddTag("cur", "USD").AddField("amt", 10.0).AddField("fee", 2.5).AddTimeStamp(DateTime.Now)) //Is converted to nanoseconds since Epoch (UTC)
                .Add(new InfluxPoint("ticketsold").AddTag("seller", "1").AddTag("cur", "EUR").AddField("amt", 9.5).AddField("fee", 5.0).AddTimeStamp(TimeStampResolutions.Nanoseconds))
                .Add(new InfluxPoint("ticketsold").AddTag("seller", "2").AddTag("cur", "SEK").AddField("amt", 225.5).AddField("fee", 50.0).AddTimeStamp(TimeStampResolutions.Microseconds))
                .Add(new InfluxPoint("ticketsold").AddTag("seller", "3").AddTag("cur", "SEK").AddField("amt", 110.0).AddField("fee", 30.0).AddTimeStamp(TimeStampResolutions.Milliseconds))
                .Add(new InfluxPoint("ticketsold").AddTag("seller", "3").AddTag("cur", "SEK").AddField("amt", 2350.0).AddField("fee", 10.0).AddTimeStamp(TimeStampResolutions.Seconds))
                .Add(new InfluxPoint("ticketsold").AddTag("seller", "2").AddTag("cur", "EUR").AddField("amt", 51.8).AddField("fee", 5.0).AddTimeStamp(TimeStampResolutions.Minutes))
                .Add(new InfluxPoint("ticketsold").AddTag("seller", "1").AddTag("cur", "USD").AddField("amt", 1.0).AddField("fee", 1.0).AddTimeStamp(TimeStampResolutions.Hours));

            using (var client = new InfluxDbClient("http://192.168.1.176:9086"))
            {
                //configure write options on client (if you want)
                client.DefaultWriteOptions
                    .SetRetentionPolicy("test")
                    .SetTimeStampPrecision(TimeStampPrecision.Minutes)
                    .SetConsistency(Consistency.Quorum);

                await client.CreateDatabaseAsync("mydb");
                await client.WriteAsync("mydb", points);

                //specific options can be passed
                var writeOptions = new WriteOptions()
                    .SetConsistency(Consistency.Any);

                await client.WriteAsync("mydb", points, writeOptions);
            }
        }
Пример #2
0
        static async Task Stream(int batches)
        {
            var measurements = new InfluxPoints();
            var rnd = new Random();

            using (var client = new InfluxDbClient("http://192.168.1.176:9086"))
            {
                var c = 0;
                for (var b = 0; b < batches; b++)
                {
                    var batchsize = rnd.Next(1, 10);
                    for (var i = 0; i < batchsize; i++)
                    {
                        decimal amount = rnd.Next(1, 3000);
                        var measurement = new InfluxPoint("ticketsold")
                            .AddTag("id", ++c)
                            .AddTag("seller", rnd.Next(1, 10))
                            .AddTag("curr", "SEK")
                            .AddField("amount", amount)
                            .AddField("fee", rnd.Next(0, 50))
                            .AddField("vat", amount * 0.25M)
                            .AddTimeStamp(TimeStampResolutions.Minutes);

                        measurements.Add(measurement);
                        await Task.Delay(rnd.Next(250, 1000));
                    }

                    await client.WriteAsync("mydb", measurements);
                    measurements.Clear();

                    await Task.Delay(rnd.Next(250, 1000));
                }
            }
        }
        public byte[] Serialize(InfluxPoints points)
        {
            var sb = new StringBuilder();
            var writer = new StringBuilderLineProtocolWriter(sb);
            writer.Write(points);

            var buff = LineProtocolFormat.Encoding.GetBytes(sb.ToString());
            sb.Clear();

            return buff;
        }
        public async Task Should_not_throw_When_series_does_not_exist()
        {
            var measurementName = Guid.NewGuid().ToString("n");
            var points = new InfluxPoints()
                .Add(new InfluxPoint(measurementName).AddTag("tag1", "one").AddField("amt", 100M));
            await Client.WriteAsync(_databaseName, points);

            await Client.DropSeriesAsync(_databaseName, new DropSeries().FromMeasurement(measurementName + "foo"));

            var series = await Client.GetSeriesAsync(_databaseName);
            series.Should().ContainKey(measurementName);
        }
        public async Task Should_drop_series_When_series_matching_tags_exists()
        {
            var measurementName = Guid.NewGuid().ToString("n");
            var points = new InfluxPoints()
                .Add(new InfluxPoint(measurementName).AddTag("tag1", "one").AddField("amt", 100M));
            await Client.WriteAsync(_databaseName, points);

            await Client.DropSeriesAsync(_databaseName, new DropSeries().WhereTags("tag1 = 'one'"));

            var series = await Client.GetSeriesAsync(_databaseName);
            series.Should().NotContainKey(measurementName);
        }
        public void Write(InfluxPoints points)
        {
            Ensure.That(points, nameof(points)).IsNotNull();

            var lastIndex = points.Count - 1;
            for (var index = 0; index < points.Count; index++)
            {
                Write(points[index]);
                if (index < lastIndex)
                    _target.Append(LineProtocolFormat.NewLine);
            }
        }
Пример #7
0
        protected override void OnBeforeAllTests()
        {
            _databaseName = CreateUniqueTestDatabase();

            _seededPoints = new InfluxPoints()
                .Add(new InfluxPoint("orderCreated").AddTag("oid", "1").AddTag("mid", "1").AddField("amt", 112.5).AddField("fee", 10M))
                .Add(new InfluxPoint("orderCreated").AddTag("oid", "2").AddTag("mid", "1").AddField("amt", 90M).AddField("fee", 10M))
                .Add(new InfluxPoint("orderCreated").AddTag("oid", "3").AddTag("mid", "2").AddField("amt", 50M).AddField("fee", 10M))
                .Add(new InfluxPoint("paymentRecieved").AddTag("pid", "1").AddTag("oid", "1").AddTag("mid", "1").AddField("amt", 60M))
                .Add(new InfluxPoint("paymentRecieved").AddTag("pid", "2").AddTag("oid", "1").AddTag("mid", "1").AddField("amt", 52.5M));

            Client.WriteAsync(_databaseName, _seededPoints).Wait();
        }
        public async Task Write_Should_write_points_When_passing_points()
        {
            var points = new InfluxPoints().Add(new InfluxPoint("WriteTest")
                .AddTag("Tag1", "alpha")
                .AddTag("Tag2", "beta")
                .AddField("myint", 1)
                .AddField("mylng", (long)2)
                .AddField("myflt", (float)3.15)
                .AddField("mydbl", 4.15)
                .AddField("mydec", 5.15M)
                .AddField("mybol", true)
                .AddField("mystr", "test")
                .AddTimeStamp(TimeStampResolutions.Milliseconds));

            await Client.WriteAsync(IntegrationTestsRuntime.DatabaseName, points);
        }
Пример #9
0
        protected virtual BytesContent GetBytesContent(InfluxPoints points)
        {
            var buff = InfluxPointsSerializer.Serialize(points);

            return new BytesContent(buff, HttpContentTypes.Instance.Text);
        }
Пример #10
0
        protected virtual HttpRequest CreateWritePointsRequest(string databaseName, InfluxPoints points, WriteOptions options = null)
        {
            var bytesContent = GetBytesContent(points);
            var writeOptionUrlArgs = WriteOptionsUrlArgsBuilder.Build(options ?? DefaultWriteOptions);

            return new HttpRequest(HttpMethod.Post, $"write?db={UrlEncoder.Encode(databaseName)}{writeOptionUrlArgs}")
                .WithContent(bytesContent);
        }
Пример #11
0
        public async Task WriteAsync(string databaseName, InfluxPoints points, WriteOptions options = null)
        {
            ThrowIfDisposed();

            Ensure.That(databaseName, nameof(databaseName)).IsNotNullOrWhiteSpace();
            Ensure.That(points, nameof(points)).IsNotNull();
            Ensure.That(points.IsEmpty, nameof(points)).WithExtraMessageOf(() => "Can not write empty points collections.").IsFalse();

            var request = CreateWritePointsRequest(databaseName, points, options);
            var response = await Requester.SendAsync(request).ForAwait();
            EnsureSuccessful(response);
        }