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");
        }
示例#2
0
        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());
        }
示例#5
0
        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()));
            }
        }