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)); }
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)); }
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); }
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)); }
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)); }
public void RaisingEventIsCorrect() { // Arrange var target = new StatsDMessageFormatter(); // Act string actual = target.Event("foo"); // Assert actual.ShouldEndWith("|c"); }
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)); }
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)); }
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())); }
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())); }
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)); }
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()); }
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(); }
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); }