Beispiel #1
0
        public void Timestamps_must_be_UTC()
        {
            var writer = new LineProtocolWriter().Measurement("my_measurement").Field("value", 23);

            var ex = Assert.Throws <ArgumentException>(() => writer.Timestamp(DateTime.Now));

            Assert.Equal("Timestamps must be specified as UTC\r\nParameter name: value", ex.Message);
        }
Beispiel #2
0
        private void AssertEqual(string expected, Action <LineProtocolWriter> write)
        {
            var writer = new LineProtocolWriter();

            write(writer);

            Assert.Equal(expected, writer.ToString());
        }
        public void Can_define_resolution_strategy_when_creating_the_writer()
        {
            var writer = new LineProtocolWriter(Precision.Seconds, PrecisionResolutionStrategy.Round);

            writer.Measurement("foo").Field("bar", true).Timestamp(TimeSpan.FromMilliseconds(499));
            writer.Measurement("foo").Field("bar", true).Timestamp(TimeSpan.FromMilliseconds(500));

            Assert.Equal("foo bar=t 0\nfoo bar=t 1", writer.ToString());
        }
        public void Can_round_if_wrong_precision_used(Precision precision)
        {
            var writer = new LineProtocolWriter(precision);

            writer.Measurement("foo").Field("bar", true).Timestamp(TimeSpan.FromTicks(1), PrecisionResolutionStrategy.Round);
            writer.Measurement("foo").Field("bar", true).Timestamp(TimeSpan.FromTicks(((long)precision / 100) - 1), PrecisionResolutionStrategy.Round);

            Assert.Equal("foo bar=t 0\nfoo bar=t 1", writer.ToString());
        }
        public void Can_override_resolution_strategy_when_writing_point()
        {
            var writer = new LineProtocolWriter(Precision.Seconds, PrecisionResolutionStrategy.Round);

            writer.Measurement("foo").Field("bar", true).Timestamp(TimeSpan.FromMilliseconds(700));
            writer.Measurement("foo").Field("bar", true).Timestamp(TimeSpan.FromMilliseconds(700), PrecisionResolutionStrategy.Floor);

            Assert.Equal("foo bar=t 1\nfoo bar=t 0", writer.ToString());
        }
        public void Cannot_write_tag_when_no_measurement_written()
        {
            var writer = new LineProtocolWriter();

            var ex = Assert.Throws <InvalidOperationException>(() => writer.Tag("foo", "bar"));

            Assert.Equal("Cannot write tag \"foo\" as no measurement name written.", ex.Message);
            Assert.Equal("NothingWritten", ex.Data["Position"]);
        }
        public void Can_ceiling_if_wrong_precision_used(Precision precision)
        {
            var writer = new LineProtocolWriter(precision);

            var timestamp = TimeSpan.FromTicks(1);

            writer.Measurement("foo").Field("bar", 1f).Timestamp(timestamp, PrecisionResolutionStrategy.Ceiling);

            Assert.Equal("foo bar=1 1", writer.ToString());
        }
        public void Will_throw_if_wrong_precision_used(Precision precision)
        {
            var writer = new LineProtocolWriter(precision);

            var timestamp = TimeSpan.FromTicks(1);

            writer.Measurement("foo").Field("bar", 1f);

            Assert.Throws <ArgumentOutOfRangeException>(() => writer.Timestamp(timestamp));
        }
        public void Will_write_timestamps_using_precision_of_writer(Precision precision, long nanoseconds, string expectedTimestamp)
        {
            var unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            var timestamp = unixEpoch.AddTicks(nanoseconds / 100); // .net tick is 100 nanoseconds.

            var writer = new LineProtocolWriter(precision);

            writer.Measurement("foo").Field("bar", 1f).Timestamp(timestamp);

            Assert.Equal($"foo bar=1 {expectedTimestamp}", writer.ToString());
        }
        public void Cannot_write_field_when_no_measurement_written()
        {
            var writer = new LineProtocolWriter();

            var ex = Assert.Throws <InvalidOperationException>(() => writer.Field("value", 1.2));

            Assert.Equal("Cannot write field \"value\" as no measurement name written.", ex.Message);
            Assert.Equal("NothingWritten", ex.Data["Position"]);

            Assert.Throws <InvalidOperationException>(() => writer.Field("value", 3));
            Assert.Throws <InvalidOperationException>(() => writer.Field("value", true));
            Assert.Throws <InvalidOperationException>(() => writer.Field("value", "roar like a lion"));
            Assert.Throws <InvalidOperationException>(() => writer.Field("value", 2.6f));
            Assert.Throws <InvalidOperationException>(() => writer.Field("value", 1000000m));
        }
        public void Cannot_write_new_measurment_when_field_not_written()
        {
            var writer = new LineProtocolWriter();

            writer.Measurement("my_measurement");

            var ex = Assert.Throws <InvalidOperationException>(() => writer.Measurement("my_measurement"));

            Assert.Equal("Cannot write new measurement \"my_measurement\" as no field written for current line.", ex.Message);
            Assert.Equal("MeasurementWritten", ex.Data["Position"]);

            writer.Tag("foo", "bar");

            ex = Assert.Throws <InvalidOperationException>(() => writer.Measurement("my_measurement"));
            Assert.Equal("TagWritten", ex.Data["Position"]);
        }
        public void Cannot_write_tag_after_field_written()
        {
            var writer = new LineProtocolWriter();

            writer.Measurement("my_measurement").Field("value", 1);

            var ex = Assert.Throws <InvalidOperationException>(() => writer.Tag("foo", "bar"));

            Assert.Equal("Cannot write tag \"foo\" as field(s) already written for current line.", ex.Message);
            Assert.Equal("FieldWritten", ex.Data["Position"]);

            writer.Timestamp(123456);

            ex = Assert.Throws <InvalidOperationException>(() => writer.Tag("foo", "bar"));
            Assert.Equal("TimestampWritten", ex.Data["Position"]);
        }
        public void Cannot_write_timestamp_when_no_field_written()
        {
            var writer = new LineProtocolWriter();

            var ex = Assert.Throws <InvalidOperationException>(() => writer.Timestamp(123456));

            Assert.Equal("Cannot write timestamp as no measurement name written.", ex.Message);
            Assert.Equal("NothingWritten", ex.Data["Position"]);

            writer.Measurement("my_measurement");

            ex = Assert.Throws <InvalidOperationException>(() => writer.Timestamp(123456));
            Assert.Equal("Cannot write timestamp as no field written for current measurement.", ex.Message);
            Assert.Equal("MeasurementWritten", ex.Data["Position"]);

            writer.Tag("foo", "bar");

            ex = Assert.Throws <InvalidOperationException>(() => writer.Timestamp(123456));
            Assert.Equal("TagWritten", ex.Data["Position"]);

            Assert.Throws <InvalidOperationException>(() => writer.Timestamp(TimeSpan.FromDays(3045)));
            Assert.Throws <InvalidOperationException>(() => writer.Timestamp(DateTime.UtcNow));
            Assert.Throws <InvalidOperationException>(() => writer.Timestamp(DateTimeOffset.Now));
        }
 public LineProtocolWriteResult Send(LineProtocolWriter lineProtocolWriter, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(OnSend(lineProtocolWriter.ToString(), lineProtocolWriter.Precision, cancellationToken));
 }
 public Task <LineProtocolWriteResult> SendAsync(LineProtocolWriter lineProtocolWriter, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(SendAsync(lineProtocolWriter.ToString(), lineProtocolWriter.Precision, cancellationToken));
 }