private static void CheckReconnection(StatsdConfig config)
        {
            SocketServer server = null;

            try
            {
                server = new SocketServer(config);
                using (var service = new DogStatsdService())
                {
                    service.Configure(config);
                    service.Increment("test1");
                    Assert.AreEqual("test1:1|c", server.Stop().Single());
                    server.Dispose();

                    // Send a metric when the server is not running.
                    service.Increment("test2");
                    Task.Delay(TimeSpan.FromMilliseconds(500)).Wait();

                    // Restart the server
                    server = new SocketServer(config, removeUDSFileBeforeStarting: true);
                    service.Increment("test3");
                    service.Dispose();
                    Assert.AreEqual("test3:1|c", server.Stop().Last());
                }
            }
            finally
            {
                server?.Dispose();
            }
        }
        public void SampleRate()
        {
            var config = new StatsdConfig
            {
                StatsdServerName = "127.0.0.1",
                StatsdPort       = 1234,
            };

            config.ClientSideAggregation = new ClientSideAggregationConfig {
            };

            using (var server = new SocketServer(config))
            {
                using (var service = new DogStatsdService())
                {
                    service.Configure(config);
                    for (int i = 0; i < 500; i++)
                    {
                        service.Increment("test1", 1, 0.5);
                        service.Increment("test1", 1, 0.3);
                        service.Increment("test1", 1, 0.8);
                    }
                }

                var metric = server.Stop().Single();
                var match  = Regex.Match(metric, @"^test1:(.*)\|c$");
                Assert.True(match.Success);
                var metricValue = double.Parse(match.Groups[1].Value);

                Assert.AreEqual(500.0 * 3, metricValue, delta: 100);
            }
        }
        private static void CheckReconnection(
            Func <StatsdConfig, AbstractServer> serverFactory,
            StatsdConfig config)
        {
            AbstractServer server = null;

            try
            {
                server = serverFactory(config);
                using (var service = new DogStatsdService())
                {
                    service.Configure(config);
                    service.Increment("test1");
                    Assert.AreEqual("test1:1|c", server.Stop().Single());
                    server.Dispose();

                    // Send a metric when the server is not running.
                    service.Increment("test2");
                    Task.Delay(TimeSpan.FromMilliseconds(500)).Wait();

                    // Restart the server
                    server = serverFactory(config);
                    service.Increment("test3");
                    service.Dispose();
                    Assert.AreEqual("test3:1|c", server.Stop().Last());
                }
            }
            finally
            {
                server?.Dispose();
            }
        }
 public void IncrementMetric(string name)
 {
     if (ShouldRecord(name))
     {
         _service.Increment(FormatMetricName(name));
     }
 }
        public void MetricsSent()
        {
            _service.Configure(_config);

            _service.Counter("test", 1);
            _service.Increment("test");
            _service.Decrement("test");

            Assert.AreEqual(3, _service.TelemetryCounters.MetricsSent);
        }
        public void Setting_entity_id_with_env_arg()
        {
            Environment.SetEnvironmentVariable("DD_ENTITY_ID", "foobar");
            using (var nonStaticServiceInstance = new DogStatsdService())
            {
                var metricsConfig = new StatsdConfig
                {
                    StatsdServerName = "127.0.0.1",
                    StatsdPort       = 8132,
                };

                nonStaticServiceInstance.Configure(metricsConfig);
                var receivedData = ReceiveData(
                    nonStaticServiceInstance,
                    "127.0.0.1",
                    8132,
                    () => { nonStaticServiceInstance.Increment("test"); });

                Assert.AreEqual(new List <string> {
                    "test:1|c|#dd.internal.entity_id:foobar"
                }, receivedData);
            }

            Environment.SetEnvironmentVariable("DD_ENTITY_ID", null);
        }
        public void Setting_tag_with_env_arg(string envVar, string tag)
        {
            Environment.SetEnvironmentVariable(envVar, "foobar");

            try
            {
                using (var nonStaticServiceInstance = new DogStatsdService())
                {
                    var metricsConfig = new StatsdConfig
                    {
                        StatsdServerName = "127.0.0.1",
                        StatsdPort       = 8132,
                    };

                    nonStaticServiceInstance.Configure(metricsConfig);
                    var receivedData = ReceiveData(
                        nonStaticServiceInstance,
                        "127.0.0.1",
                        8132,
                        () => { nonStaticServiceInstance.Increment("test"); });

                    Assert.AreEqual(new List <string> {
                        $"test:1|c|#{tag}:foobar"
                    }, receivedData);
                }
            }
            finally
            {
                Environment.SetEnvironmentVariable(envVar, null);
            }
        }
Exemplo n.º 8
0
        private void testReceive(string testServerName, int testPort, string testCounterName,
                                 string expectedOutput, DogStatsdService dogStatsdService)
        {
            UdpListener udpListener  = new UdpListener(testServerName, testPort);
            Thread      listenThread = new Thread(new ParameterizedThreadStart(udpListener.Listen));

            listenThread.Start();
            dogStatsdService.Increment(testCounterName);
            while (listenThread.IsAlive)
            {
                ;
            }
            Assert.AreEqual(expectedOutput, udpListener.GetAndClearLastMessages()[0]);
            udpListener.Dispose();
        }
Exemplo n.º 9
0
 public async Task IncrementCounterAsync(string metricName, string[] tags)
 {
     if (dogStatsdService == null)
     {
         return;
     }
     try
     {
         dogStatsdService.Increment($"{metricName}.increment", tags: TelemetryConfig.CoreTags.Concat(tags).ToArray());
     }
     catch (Exception ex)
     {
         logger.LogError(ex, $"Error sending telemetry to Datadog {ex.Message}");
     }
 }
        public void setting_port_listen_on_other_port_should_return_no_data()
        {
            using (var nonStaticServiceInstance = new DogStatsdService())
            {
                var metricsConfig = new StatsdConfig
                {
                    StatsdServerName = "127.0.0.1",
                    StatsdPort       = 8126
                };
                nonStaticServiceInstance.Configure(metricsConfig);
                var receivedData = ReceiveData(nonStaticServiceInstance, "127.0.0.1", 8125,
                                               () => { nonStaticServiceInstance.Increment("test"); });

                Assert.AreEqual(0, receivedData.Count);
            }
        }
        public void default_port_is_8125()
        {
            using (var nonStaticServiceInstance = new DogStatsdService())
            {
                var metricsConfig = new StatsdConfig
                {
                    StatsdServerName = "127.0.0.1"
                };

                nonStaticServiceInstance.Configure(metricsConfig);
                var receivedData = ReceiveData(nonStaticServiceInstance, "127.0.0.1", 8125,
                                               () => { nonStaticServiceInstance.Increment("test"); });

                Assert.AreEqual(new List <string> {
                    "test:1|c"
                }, receivedData);
            }
        }
        public void setting_prefix()
        {
            using (var nonStaticServiceInstance = new DogStatsdService())
            {
                var metricsConfig = new StatsdConfig
                {
                    StatsdServerName = "127.0.0.1",
                    StatsdPort       = 8129,
                    Prefix           = "prefix"
                };
                nonStaticServiceInstance.Configure(metricsConfig);
                var receivedData = ReceiveData(nonStaticServiceInstance, "127.0.0.1", 8129,
                                               () => { nonStaticServiceInstance.Increment("test"); });

                Assert.AreEqual(new List <string> {
                    "prefix.test:1|c"
                }, receivedData);
            }
        }
        public void setting_with_env_arg()
        {
            Environment.SetEnvironmentVariable("DD_DOGSTATSD_PORT", "8131");
            Environment.SetEnvironmentVariable("DD_AGENT_HOST", "127.0.0.1");
            using (var nonStaticServiceInstance = new DogStatsdService())
            {
                var metricsConfig = new StatsdConfig {
                };

                nonStaticServiceInstance.Configure(metricsConfig);
                var receivedData = ReceiveData(nonStaticServiceInstance, "127.0.0.1", 8131,
                                               () => { nonStaticServiceInstance.Increment("test"); });

                Assert.AreEqual(new List <string> {
                    "test:1|c"
                }, receivedData);
            }
            Environment.SetEnvironmentVariable("DD_DOGSTATSD_PORT", null);
            Environment.SetEnvironmentVariable("DD_AGENT_HOST", null);
        }
        private void TestReceive(
            string testServerName,
            int testPort,
            string testCounterName,
            string expectedOutput,
            DogStatsdService dogStatsdService)
        {
            using (UdpListener udpListener = new UdpListener(testServerName, testPort))
            {
                Thread listenThread = new Thread(udpListener.ListenAndWait);
                listenThread.Start();

                dogStatsdService.Increment(testCounterName);

                dogStatsdService.Dispose();
                udpListener.Shutdown();
                listenThread.Join();

                Assert.AreEqual(expectedOutput, udpListener.GetAndClearLastMessages()[0]);
            }
        }
Exemplo n.º 15
0
        private static void SendAndCheckMetricsAreReceived(StatsdConfig config, int metricToSendCount)
        {
            using (var service = new DogStatsdService())
            {
                using (var server = new SocketServer(config))
                {
                    service.Configure(config);
                    for (int i = 0; i < metricToSendCount; ++i)
                    {
                        service.Increment($"test{i}", tags: new[] { "KEY:VALUE" });
                    }

                    service.Dispose();
                    var metricsReceived = server.Stop();
                    Assert.AreEqual(metricToSendCount, metricsReceived.Count);
                    for (int i = 0; i < metricToSendCount; ++i)
                    {
                        Assert.AreEqual($"test{i}:1|c|#KEY:VALUE", metricsReceived[i]);
                    }
                }
            }
        }
Exemplo n.º 16
0
 public void Increment()
 {
     _dogStatsdService.Increment("increment");
     AssertWasReceived("increment:1|c");
 }