/// <inheritdoc /> public void Write(TextWriter textWriter, GraphitePoint point, bool writeTimestamp = true) { if (textWriter == null) { throw new ArgumentNullException(nameof(textWriter)); } var hasPrevious = false; var measurementWriter = new StringWriter(); measurementWriter.Write(_prefix); var tagsDictionary = point.Tags.ToDictionary(GraphiteSyntax.EscapeName); if (tagsDictionary.TryGetValue("mtype", out var metricType) && !string.IsNullOrWhiteSpace(metricType)) { measurementWriter.Write(metricType); hasPrevious = true; } if (hasPrevious) { measurementWriter.Write("."); } measurementWriter.Write(GraphiteSyntax.EscapeName(point.Measurement, true)); var tags = tagsDictionary.Where(tag => !ExcludeTags.Contains(tag.Key)); foreach (var tag in tags) { measurementWriter.Write('.'); measurementWriter.Write(GraphiteSyntax.EscapeName(tag.Key)); measurementWriter.Write('.'); measurementWriter.Write(tag.Value); } measurementWriter.Write('.'); var prefix = measurementWriter.ToString(); var utcTimestamp = point.UtcTimestamp ?? DateTime.UtcNow; foreach (var f in point.Fields) { textWriter.Write(prefix); textWriter.Write(GraphiteSyntax.EscapeName(f.Key)); textWriter.Write(' '); textWriter.Write(GraphiteSyntax.FormatValue(f.Value)); textWriter.Write(' '); textWriter.Write(GraphiteSyntax.FormatTimestamp(utcTimestamp)); textWriter.Write('\n'); } }
public void Can_format_value(object value, string expected) { GraphiteSyntax.FormatValue(value).Should().Be(expected); }
public void Can_format_timespan() { var value = TimeSpan.FromMinutes(1); GraphiteSyntax.FormatValue(value).Should().Be("60000"); }