public void can_format_payload() { var nameFormatter = new DefaultGraphiteNameFormatter(); var payload = new GraphitePayload(); var fieldsOne = new Dictionary <string, object> { { "key", "value" } }; var timestampOne = new DateTime(2017, 1, 1, 1, 1, 1, DateTimeKind.Utc); var pointOne = new GraphitePoint(null, "measurement", fieldsOne, MetricTags.Empty, timestampOne); var fieldsTwo = new Dictionary <string, object> { { "field1key", "field1value" }, { "field2key", 2 }, { "field3key", false } }; var timestampTwo = new DateTime(2017, 1, 2, 1, 1, 1, DateTimeKind.Utc); var pointTwo = new GraphitePoint(null, "measurement", fieldsTwo, MetricTags.Empty, timestampTwo); payload.Add(pointOne); payload.Add(pointTwo); payload.Format(nameFormatter).Should() .Be( "measurement.key value 1483232461\nmeasurement.field1key field1value 1483318861\nmeasurement.field2key 2 1483318861\nmeasurement.field3key f 1483318861\n"); }
public void can_format_payload_correctly() { var nameFormatter = new DefaultGraphiteNameFormatter(); var fields = new Dictionary <string, object> { { "key", "value" } }; var timestamp = new DateTime(2017, 1, 1, 1, 1, 1, DateTimeKind.Utc); var point = new GraphitePoint(null, "measurement", fields, MetricTags.Empty, timestamp); var paload = new GraphitePayload { point }; paload.Format(nameFormatter).Should().Be("measurement.key value 1483232461\n"); }
public void when_null_text_writer_ignore_and_dont_throw() { var payload = new GraphitePayload(); var fields = new Dictionary <string, object> { { "key", "value" } }; var pointOne = new GraphitePoint(null, "measurement", fields, MetricTags.Empty); Action action = () => { payload.Add(pointOne); payload.Format(null); }; action.ShouldNotThrow(); }
public static string Format(this GraphitePayload payload, IGraphiteNameFormatter formatter) { if (formatter == null) { return(null); } var sb = new StringBuilder(); foreach (var formatted in payload.SelectMany(formatter.Format)) { sb.Append(formatted); sb.Append("\n"); } return(sb.ToString()); }
public async Task <GraphiteWriteResult> WriteAsync( GraphitePayload payload, CancellationToken cancellationToken = default(CancellationToken)) { if (NeedToBackoff()) { return(new GraphiteWriteResult(false, "Too many failures in writing to Graphite, Circuit Opened")); } try { var batches = payload.ToBatches(_graphiteSettings.BatchSize).ToList(); switch (_graphiteSettings.Protocol) { case Protocol.Tcp: await batches.TcpWriteAsync(_graphiteSettings, _httpPolicy, _logger, cancellationToken); break; case Protocol.Udp: await batches.UdpWriteAsync(_graphiteSettings, _httpPolicy, _logger, cancellationToken); break; case Protocol.Pickled: throw new NotImplementedException("Picked protocol not implemented, use UDP or TCP"); default: throw new InvalidOperationException("Unsupported protocol, UDP, TCP and Pickled protocols are accepted"); } return(GraphiteWriteResult.SuccessResult); } catch (Exception ex) { Interlocked.Increment(ref _failureAttempts); _logger.LogError(LoggingEvents.GraphiteWriteError, "Failed to write to Graphite", ex); return(new GraphiteWriteResult(false, ex.ToString())); } }