Beispiel #1
0
        public async Task Can_format_payload_with_tags_correctly()
        {
            // Arrange
            await using var ms = new MemoryStream();
            var fields = new Dictionary <string, object> {
                { "key", "value" }
            };
            var tags      = new MetricTags("tagkey", "tagvalue");
            var timestamp = new DateTime(2017, 1, 1, 1, 1, 1, DateTimeKind.Utc);

            var statsDWriter = new MetricSnapshotStatsDStringWriter(
                ms,
                new StatsDPointSampler(_options),
                new MetricsStatsDOptions
            {
                MetricNameFormatter = new DefaultDogStatsDMetricStringSerializer()
            });

            // Act
            statsDWriter.Write(null, "measurement", fields.Keys, fields.Values, tags, timestamp);
            await statsDWriter.DisposeAsync();

            var result = Encoding.UTF8.GetString(ms.ToArray());

            // Assert
            result.Should().Be(
                "measurement.key:0|g|#tagkey:tagvalue,timestamp:1483232461",
                "Hosted Metrics request at the moment allow tags array but its not yet used.");
        }
Beispiel #2
0
        private async Task <string> Serialize(
            IEnumerable <MetricsDataValueSource> dataValueSource,
            double sampleRate = 1.0)
        {
            var settings = new MetricsStatsDOptions
            {
                DefaultSampleRate   = sampleRate,
                MetricNameFormatter = new DefaultDogStatsDMetricStringSerializer()
            };
            var serializer = new MetricSnapshotSerializer();
            var fields     = new MetricFields();

            await using (var ms = new MemoryStream())
            {
                await using (var packer =
                                 new MetricSnapshotStatsDStringWriter(
                                     ms,
                                     new StatsDPointSampler(settings),
                                     settings))
                {
                    foreach (var source in dataValueSource)
                    {
                        serializer.Serialize(packer, source, fields);
                    }
                }
                return(Encoding.UTF8.GetString(ms.ToArray()));
            }
        }
Beispiel #3
0
        public async Task Can_format_payload_with_multiple_fields_correctly()
        {
            // Arrange
            await using var ms = new MemoryStream();
            var fields = new Dictionary <string, object>
            {
                { "field1key", "field1value" },
                { "field2key", 2 },
                { "field3key", false }
            };
            var timestamp = new DateTime(2017, 1, 1, 1, 1, 1, DateTimeKind.Utc);

            var statsDWriter = new MetricSnapshotStatsDStringWriter(
                ms,
                new StatsDPointSampler(_options),
                new MetricsStatsDOptions
            {
                MetricNameFormatter = new DefaultDogStatsDMetricStringSerializer()
            });

            // Act
            statsDWriter.Write(null, "measurement", fields.Keys, fields.Values, MetricTags.Empty, timestamp);
            await statsDWriter.DisposeAsync();

            var result = Encoding.UTF8.GetString(ms.ToArray());

            // Assert
            result.Should().Be(
                "measurement.field1key:0|g|#timestamp:1483232461\n" +
                "measurement.field2key:2|g|#timestamp:1483232461\n" +
                "measurement.field3key:0|g|#timestamp:1483232461");
        }
        public async Task Should_add_context_when_provided()
        {
            // Arrange
            await using var ms = new MemoryStream();
            var fields = new Dictionary <string, object> {
                { "key", "value" }
            };
            var tags      = new MetricTags("tagkey", "tagvalue");
            var timestamp = new DateTime(2017, 1, 1, 1, 1, 1, DateTimeKind.Utc);
            //var point = new DatadogPoint("context", "measurement", fields, tags, new DefaultDatadogMetricJsonWriter(), FlushInterval, timestamp);

            var statsDWriter = new MetricSnapshotStatsDStringWriter(
                ms,
                new StatsDPointSampler(_options),
                new MetricsStatsDOptions
            {
                MetricNameFormatter = new DefaultDogStatsDMetricStringSerializer()
            });

            // Act
            statsDWriter.Write("context", "measurement", fields.Keys, fields.Values, tags, timestamp);
            await statsDWriter.DisposeAsync();

            var result = Encoding.UTF8.GetString(ms.ToArray());

            // Assert
            result.Should().Be(
                "context.measurement.key:0|g|#tagkey:tagvalue",
                "Hosted Metrics request at the moment allow tags array but its not yet used.");
        }