/// <inheritdoc /> public string Serialize(StatsDPoint point, MetricsStatsDOptions options) { var builder = new StringBuilder(); builder.Append(point.Name); builder.Append(":"); builder.Append(StatsDSyntax.FormatValue(point.Value, point.MetricType)); builder.Append("|"); builder.Append(point.MetricType); if (point.SampleRate.HasValue && point.SampleRate < 1.0) { builder.Append("|@"); builder.Append(point.SampleRate.Value.ToString("0.###############", NumberFormatInfo.InvariantInfo)); } if (point.Tags != null && point.Tags.Count > 0) { builder.Append('|'); builder.Append(options.TagMarker); builder.Append(string.Join(",", point.Tags.Select(tag => $"{tag.Key}:{tag.Value}"))); } return(builder.ToString()); }
/// <inheritdoc /> public string Serialize(StatsDPoint point, MetricsStatsDOptions options) { var builder = new StringBuilder(); builder.Append(point.Name); builder.Append(":"); builder.Append(StatsDSyntax.FormatValue(point.Value, point.MetricType)); builder.Append("|"); builder.Append(point.MetricType); if (point.SampleRate.HasValue && point.SampleRate < 1.0) { builder.Append("|@"); builder.Append(point.SampleRate.Value.ToString("0.###############")); } var tags = new List <string>(); if (point.Tags != null && point.Tags.Count > 0) { tags.AddRange(point.Tags.Select(tag => $"{tag.Key}:{tag.Value}")); } tags.Add($"{StatsDFormatterConstants.TimestampTagName}:{StatsDSyntax.FormatTimestamp(point.UtcTimestamp)}"); builder.Append('|'); builder.Append(options.TagMarker); builder.Append(string.Join(",", tags)); return(builder.ToString()); }
public void Can_format_payload_correctly() { // Arrange var timestamp = new DateTime(2017, 1, 1, 1, 1, 1, DateTimeKind.Utc); var point = new StatsDPoint("name.key", "value", "c", 0.1, null, new DefaultDogStatsDMetricStringSerializer(), timestamp); // Act var result = point.Write(_options); // Assert result.Should().Be("name.key:0|c|@0.1|#timestamp:1483232461"); }
public void Bad_parameters_should_throws(string name, object value, string metricType, DateTimeKind dateTimeKind, string message) { // Arrange var tags = new Dictionary <string, string>(); var timestamp = new DateTime(2017, 1, 1, 1, 1, 1, dateTimeKind); Action action = () => { // Act var point = new StatsDPoint(name, value, metricType, null, tags, new DefaultStatsDMetricStringSerializer(), timestamp); }; // Assert action.Should().Throw <ArgumentException>().Where(e => e.Message.StartsWith(message)); }
/// <inheritdoc /> public string Serialize(StatsDPoint point, MetricsStatsDOptions options) { var builder = new StringBuilder(); builder.Append(point.Name); builder.Append(":"); builder.Append(StatsDSyntax.FormatValue(point.Value, point.MetricType)); builder.Append("|"); builder.Append(point.MetricType); if (point.SampleRate.HasValue && point.SampleRate < 1.0) { builder.Append("|@"); builder.Append(point.SampleRate.Value.ToString("0.###############", NumberFormatInfo.InvariantInfo)); } return(builder.ToString()); }