Пример #1
0
        public void TimingIsCorrect()
        {
            // Arrange
            var target = new StatsDMessageFormatter();

            // Act
            string actual = target.Timing(_value, _statBucket);

            // Assert
            actual.ShouldBe(string.Format(CultureInfo.InvariantCulture, "{0}:{1}|ms", _statBucket, _value));
        }
        public static void TimingMetricsAreFormattedCorrectly()
        {
            string statBucket   = "timing-bucket";
            long   milliseconds = new Random().Next(1000);

            var target = new StatsDMessageFormatter();

            string actual = target.Timing(milliseconds, statBucket);

            actual.ShouldBe(string.Format(CultureInfo.InvariantCulture, "{0}:{1:d}|ms", statBucket, milliseconds));
        }
Пример #3
0
        public void IncrementingCounterIsCorrect()
        {
            // Arrange
            var target = new StatsDMessageFormatter(_culture);

            // Act
            string actual = target.Increment(_statBucket);

            // Assert
            actual.ShouldBe(string.Format(_culture, "{0}:{1}|c", _statBucket, 1));
        }
Пример #4
0
        public StatsDPublisher(StatsDConfiguration configuration, IStatsDTransport transport)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            _transport = transport ?? throw new ArgumentNullException(nameof(transport));

            _formatter = new StatsDMessageFormatter(configuration.Culture, configuration.Prefix);
        }
Пример #5
0
        public static void GaugeMetricsAreFormattedCorrectly()
        {
            string statBucket = "gauge-bucket";
            long   magnitude  = new Random().Next(100);

            var target = new StatsDMessageFormatter();

            string actual = target.Gauge(magnitude, statBucket);

            actual.ShouldBe(string.Format(CultureInfo.InvariantCulture, "{0}:{1}|g", statBucket, magnitude));
        }
Пример #6
0
        public void IncrementingCounterWithValueIsCorrect()
        {
            // Arrange
            var target = new StatsDMessageFormatter();

            // Act
            string actual = target.Increment(_value, _statBucket);

            // Assert
            actual.ShouldBe(string.Format(CultureInfo.InvariantCulture, "{0}:{1}|c", _statBucket, _value));
        }
Пример #7
0
        public void RaisingEventIsCorrect()
        {
            // Arrange
            var target = new StatsDMessageFormatter();

            // Act
            string actual = target.Event("foo");

            // Assert
            actual.ShouldEndWith("|c");
        }
Пример #8
0
        public void GaugeIsCorrect()
        {
            // Arrange
            var target = new StatsDMessageFormatter(_culture);

            // Act
            string actual = target.Gauge(_value, _statBucket);

            // Assert
            actual.ShouldBe(string.Format(_culture, "{0}:{1}|g", _statBucket, _value));
        }
Пример #9
0
        public static void GaugeMetricsAreFormattedCorrectlyUsingDouble()
        {
            string statBucket = "gauge-bucket";
            //generate a random double value between 0.1 and 100
            double magnitude = new Random().NextDouble() * (100 - 0.1) + 0.1;

            var target = new StatsDMessageFormatter();

            string actual = target.Gauge(magnitude, statBucket);

            actual.ShouldBe(string.Format(CultureInfo.InvariantCulture, "{0}:{1}|g", statBucket, magnitude));
        }
Пример #10
0
        public static void GaugeMetricsAreFormattedCorrectlyWhenTheyContainATimestampUsingDouble()
        {
            string statBucket = "gauge-bucket";
            long   magnitude  = new Random().Next(100);

            var target = new StatsDMessageFormatter();

            var timestamp = DateTime.Now;

            string actual = target.Gauge(magnitude, statBucket, timestamp);

            actual.ShouldBe(string.Format(CultureInfo.InvariantCulture, "{0}:{1}|g|@{2}", statBucket, magnitude, timestamp.AsUnixTime()));
        }
Пример #11
0
        public static void GaugeMetricsAreFormattedCorrectlyWhenTheyContainATimestamp()
        {
            string statBucket = "gauge-bucket";
            //generate a random double value between 0.1 and 100
            double magnitude = new Random().NextDouble() * (100 - 0.1) + 0.1;

            var target = new StatsDMessageFormatter();

            var timestamp = DateTime.Now;

            string actual = target.Gauge(magnitude, statBucket, timestamp);

            actual.ShouldBe(string.Format(CultureInfo.InvariantCulture, "{0}:{1}|g|@{2}", statBucket, magnitude, timestamp.AsUnixTime()));
        }
Пример #12
0
        public void ValuesArePrefixed()
        {
            var prefix = "foo";
            var target = new StatsDMessageFormatter(prefix);

            var actualGauge     = target.Gauge(_value, _statBucket);
            var actualDecrement = target.Decrement(_statBucket);
            var actualIncrement = target.Increment(_statBucket);
            var actualTiming    = target.Timing(_value, _statBucket);

            actualGauge.ShouldStartWith($"{prefix}.");
            actualDecrement.ShouldStartWith($"{prefix}.");
            actualIncrement.ShouldStartWith($"{prefix}.");
            actualTiming.ShouldStartWith($"{prefix}.");
        }
        public static void GaugeMetricsAreFormattedCorrectlyIfTheCultureIsIncompatible()
        {
            // Setup a value that will create a value where '.' and ',' have opposite meanings to US/UK English.
            var  culture   = new CultureInfo("da-DK");
            long magnitude = 100000000;

            string statBucket        = "gauge-bucket";
            string incompatibleValue = magnitude.ToString("0.00", culture);

            var target = new StatsDMessageFormatter(culture);

            string actual = target.Gauge(magnitude, statBucket);

            actual.ShouldNotContain(incompatibleValue);
            actual.ShouldBe(string.Format(culture, "{0}:{1}|g", statBucket, magnitude));
        }
Пример #14
0
        public void IncrementingMultipleCountersIsCorrect()
        {
            // Arrange
            var target = new StatsDMessageFormatter();

            // Act
            string actual = target.Increment(_value, _statBuckets);

            // Assert
            var expected = new StringBuilder();

            foreach (var stat in _statBuckets)
            {
                expected.AppendFormat(CultureInfo.InvariantCulture, "{0}:{1}|c", stat, _value);
            }

            actual.ShouldBe(expected.ToString());
        }
Пример #15
0
        private static void Main(string[] args)
        {
            var iterations = Enumerable.Range(1, 500000);
            var client = new StatsDUdpClient(10, "localhost", 3128);
            var formatter = new StatsDMessageFormatter();
            var watch = new Stopwatch();

            Console.WriteLine("To start - hit ENTER.");
            Console.ReadLine();
            Console.WriteLine("start");
            watch.Start();

            Parallel.ForEach(iterations, x => client.Send(formatter.Gauge(x, "bucket_sample" + "number-of-messages-to-be-sent")));

            watch.Stop();
            Console.WriteLine("end - " + watch.ElapsedMilliseconds);
            Console.ReadLine();
        }
Пример #16
0
        public StatsDPublisher(StatsDConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            if (string.IsNullOrWhiteSpace(configuration.Host))
            {
                throw new ArgumentNullException(nameof(configuration.Host));
            }

            _formatter = new StatsDMessageFormatter(configuration.Culture, configuration.Prefix);

            var endpointSource = EndpointParser.MakeEndPointSource(
                configuration.Host, configuration.Port, configuration.DnsLookupInterval);

            _transport = new UdpTransport(endpointSource);
        }
 public StatsDImmediatePublisher(CultureInfo cultureInfo, string hostNameOrAddress, int port = 8125, string prefix = "")
 {
     _formatter = new StatsDMessageFormatter(cultureInfo, prefix);
     _transport = new StatsDUdpClient(hostNameOrAddress, port);
 }
 public StatsDImmediatePublisher(CultureInfo cultureInfo, string hostNameOrAddress, int port = 8125, string prefix = "")
 {
     _formatter = new StatsDMessageFormatter(cultureInfo, prefix);
     _transport = new StatsDUdpClient(hostNameOrAddress, port);
 }