Ejemplo n.º 1
0
        public void EventMessageIsTruncated()
        {
            string message           = new string('a', 4001);
            var    serviceCheckBytes = DogStatsDSerializer.SerializeEvent(AlertType.Info, "", message, EventPriority.Normal,
                                                                          Array.Empty <byte>(), null, Array.Empty <byte>(), null);
            string serviceCheckStr = Encoding.UTF8.GetString(serviceCheckBytes.Array !, serviceCheckBytes.Offset, serviceCheckBytes.Count);

            Assert.AreEqual($"_e{{000,4000}}:|{message.Substring(0, 4000)}", serviceCheckStr);
        }
Ejemplo n.º 2
0
        public void EventAggregationKeyIsTruncated()
        {
            string aggregationKey    = new string('a', 101);
            var    serviceCheckBytes = DogStatsDSerializer.SerializeEvent(AlertType.Info, "", "", EventPriority.Normal,
                                                                          Array.Empty <byte>(), aggregationKey, Array.Empty <byte>(), null);
            string serviceCheckStr = Encoding.UTF8.GetString(serviceCheckBytes.Array !, serviceCheckBytes.Offset, serviceCheckBytes.Count);

            Assert.AreEqual($"_e{{000,0000}}:||k:{aggregationKey.Substring(0, 100)}", serviceCheckStr);
        }
Ejemplo n.º 3
0
        public void EventTitleIsTruncated()
        {
            string title             = new string('a', 101);
            var    serviceCheckBytes = DogStatsDSerializer.SerializeEvent(AlertType.Info, title, "", EventPriority.Normal,
                                                                          Array.Empty <byte>(), null, Array.Empty <byte>(), null);
            string serviceCheckStr = Encoding.UTF8.GetString(serviceCheckBytes.Array !, serviceCheckBytes.Offset, serviceCheckBytes.Count);

            Assert.AreEqual($"_e{{100,0000}}:{title.Substring(0, 100)}|", serviceCheckStr);
        }
Ejemplo n.º 4
0
        public void SerializeMetric(string name, double value, MetricType type, double sampleRate, string?tags,
                                    string expected)
        {
            byte[] prefixBytes = DogStatsDSerializer.SerializeMetricPrefix(name);
            byte[] suffixBytes = DogStatsDSerializer.SerializeMetricSuffix(type, sampleRate, TestHelper.ParseTags(tags));
            ArraySegment <byte> metricBytes = DogStatsDSerializer.SerializeMetric(prefixBytes, value, suffixBytes);

            Assert.AreEqual(expected, Encoding.ASCII.GetString(metricBytes.Array !, metricBytes.Offset, metricBytes.Count));
            ArrayPool <byte> .Shared.Return(metricBytes.Array !);
        }
Ejemplo n.º 5
0
        public void SerializeEvent(AlertType alertType, string title, string message, EventPriority priority, string?source,
                                   string?aggregationKey, string?constantTags, string?extraTags, string expected)
        {
            byte[] sourceBytes = source != null?Encoding.ASCII.GetBytes(source) : Array.Empty <byte>();

            byte[] constantTagsBytes = DogStatsDSerializer.ValidateAndSerializeTags(TestHelper.ParseTags(constantTags));
            var    eventBytes        = DogStatsDSerializer.SerializeEvent(alertType, title, message, priority, sourceBytes, aggregationKey, constantTagsBytes, TestHelper.ParseTags(extraTags));
            string eventStr          = Encoding.UTF8.GetString(eventBytes.Array !, eventBytes.Offset, eventBytes.Count);

            Assert.AreEqual(expected, eventStr);
            ArrayPool <byte> .Shared.Return(eventBytes.Array !);
        }
Ejemplo n.º 6
0
        internal Metric(ITransport transport, ITelemetry telemetry, string metricName, MetricType metricType,
                        double sampleRate, IList <KeyValuePair <string, string> >?tags)
        {
            _transport  = transport;
            _telemetry  = telemetry;
            _metricName = metricName;
            _sampleRate = sampleRate;
            _tags       = tags;

            _metricPrefixBytes = DogStatsDSerializer.SerializeMetricPrefix(metricName);
            _metricSuffixBytes = DogStatsDSerializer.SerializeMetricSuffix(metricType, sampleRate, tags);
        }
Ejemplo n.º 7
0
        public void SerializeServiceCheck(string?ns, string name, CheckStatus checkStatus, string?message, string?constantTags,
                                          string?extraTags, string expected)
        {
            byte[] nsBytes = ns != null?Encoding.ASCII.GetBytes(ns) : Array.Empty <byte>();

            message ??= string.Empty;
            byte[] constantTagsBytes = DogStatsDSerializer.ValidateAndSerializeTags(TestHelper.ParseTags(constantTags));
            var    serviceCheckBytes = DogStatsDSerializer.SerializeServiceCheck(nsBytes, name, checkStatus, message, constantTagsBytes, TestHelper.ParseTags(extraTags));
            string serviceCheckStr   = Encoding.UTF8.GetString(serviceCheckBytes.Array !, serviceCheckBytes.Offset, serviceCheckBytes.Count);

            Assert.AreEqual(expected, serviceCheckStr);
            ArrayPool <byte> .Shared.Return(serviceCheckBytes.Array !);
        }
Ejemplo n.º 8
0
        private protected void Submit(double value)
        {
            _telemetry.MetricSent();

            if (!Sampling.Sample(_sampleRate))
            {
                return;
            }

            var metricBytes = DogStatsDSerializer.SerializeMetric(_metricPrefixBytes, value, _metricSuffixBytes);

            _transport.Send(metricBytes);
        }
Ejemplo n.º 9
0
 public void SerializeSampleRateArgumentOutOfRangeException(double sampleRate)
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => DogStatsDSerializer.ValidateAndSerializeSampleRate(sampleRate));
 }
Ejemplo n.º 10
0
 public void SerializeMetricNameArgumentException(string name)
 {
     Assert.Throws <ArgumentException>(() => DogStatsDSerializer.SerializeMetricName(name));
 }