public async Task SendMetric()
        {
            var client = new GraphiteClient(GraphiteHost);
            await client.SendAsync("usage.unittest.cpu.count", Environment.ProcessorCount);

            Console.WriteLine("done");
        }
        public async Task CanSendToV4OnlyHost()
        {
            var client = new GraphiteClient("test-ipv6.com", new PlaintextGraphiteFormatter(80));
            await client.SendAsync("usage.unittest.cpu.count", 1);

            client.Send("usage.unittest.cpu.count", 1);
        }
        public async Task BrokenPooledConnectionIsDetectedForPickle()
        {
            var server = new TcpListener(new IPEndPoint(IPAddress.Loopback, 33225));

            server.Start();
            var client = new GraphiteClient("localhost", new PickleGraphiteFormatter(33225));

            var send = client.SendAsync("usage.unittest.cpu.count", Environment.ProcessorCount);

            //accept and dispose client connection
            using (var conn = await server.AcceptTcpClientAsync())
                using (var stream = conn.GetStream())
                    using (var reader = new StreamReader(stream))
                    {
                        var   receive = reader.ReadAsync(new char[1], 0, 1);
                        await send;
                        await receive;
                    }
            client = new GraphiteClient("localhost", new PickleGraphiteFormatter(33225));
            var recvTask = ReceiveMetric(server);
            await client.SendAsync("usage.unittest.cpu.count", Environment.ProcessorCount);

            new CarbonConnectionPool("localhost", new PickleGraphiteFormatter(33225)).ClearPool();

            var metric = await recvTask;

            server.Stop();
            Console.WriteLine(metric);
        }
        public async Task CanQueryLongFormulas()
        {
            var client = new GraphiteClient(GraphiteHost)
            {
                UseSsl = false
            };
            var metrics = new SeriesListBase[768];

            for (int i = 0; i < metrics.Length; i++)
            {
                metrics[i] = new GraphitePath("prefix").Dot("path")
                             .Dot(Guid.NewGuid().ToString().Replace("-", String.Empty))
                             .Dot("category")
                             .Dot(Guid.NewGuid().ToString().Replace("-", String.Empty))
                             .Dot("value")
                             .Alias(i.ToString());
            }
            var metric = metrics.Sum();

            Assert.True(metric.ToString().Length > UInt16.MaxValue, "request too short to fail");
            try
            {
                await client.GetMetricsDataAsync(metric);
            }
            catch (UriFormatException)
            {
                throw;
            }
            catch
            {
                // ignored host may be not reachable
            }
        }
        public void ClientHasSaneDefaultValues()
        {
            var client = new GraphiteClient();

            Assert.Equal(2003, client.Formatter.Port);
            Assert.IsType <PlaintextGraphiteFormatter>(client.Formatter);
            Assert.Equal("localhost", client.Host);
        }
        public MetricsAirlockEventProcessor(Uri graphiteUri, ILog log)
        {
            this.log = log;
            var graphiteNameBuidler = new GraphiteNameBuilder();

            metricConverter = new MetricConverter(graphiteNameBuidler, log);
            graphiteClient  = new GraphiteClient(graphiteUri.Host, graphiteUri.Port, log);
        }
        public async Task CanGetAllMetrics()
        {
            var client  = new GraphiteClient(GraphiteHost);
            var metrics = await client.GetAllMetricsAsync();

            Assert.NotNull(metrics);
            Assert.NotEmpty(metrics);
            Assert.False(String.IsNullOrEmpty(metrics[0]));
        }
        public async Task CanFindMetric()
        {
            var client  = new GraphiteClient(GraphiteHost);
            var metrics = await client.FindMetricsAsync("usage.unittest.*");

            Assert.NotNull(metrics);
            Assert.NotEmpty(metrics);
            Assert.True(metrics.All(x => x.Id.StartsWith("usage.unittest.")));
        }
        public void CanCreateClientWithParams()
        {
            var client = new GraphiteClient(GraphiteHost);

            Assert.Equal(GraphiteHost, client.Host);

            client = new GraphiteClient(GraphiteHost, new TestGraphiteFormatter(2004));
            Assert.Equal(GraphiteHost, client.Host);
            Assert.Equal(2004, client.Formatter.Port);
            Assert.IsType <TestGraphiteFormatter>(client.Formatter);
        }
예제 #10
0
 public GraphiteService(string clientUrl = null)
 {
     if (clientUrl == null)
     {
         Enabled = false;
     }
     else
     {
         Client  = new GraphiteClient(clientUrl);
         Enabled = true;
     }
 }
예제 #11
0
        public async Task CanExpandMetrics()
        {
            var client  = new GraphiteClient(GraphiteHost);
            var path1   = new GraphitePath("usage").Dot("unittest").Dot("iaas").DotWildcard().DotWildcard().DotWildcard();
            var path2   = new GraphitePath("usage").Dot("unittest").Dot("license").DotWildcard();
            var metrics = await client.ExpandMetricsAsync(path1, path2);

            Assert.NotNull(metrics);
            Assert.NotEmpty(metrics);
            Assert.True(metrics.All(x => x.StartsWith("usage.unittest.")));
            Assert.Contains(metrics, x => x.StartsWith("usage.unittest.iaas."));
            Assert.Contains(metrics, x => x.StartsWith("usage.unittest.license."));
        }
예제 #12
0
        public void CanSendManyMetrics()
        {
            var random = new Random();

            while (random.Next() > 0)
            {
                var client = new GraphiteClient(GraphiteHost, new PickleGraphiteFormatter());
                client.Send("test.client.random1", random.NextDouble() * 100);
                client = new GraphiteClient(GraphiteHost, new PlaintextGraphiteFormatter());
                client.Send("test.client.random2", random.NextDouble() * 100);
                Thread.Sleep(500);
            }
            CarbonConnectionPool.ClearAllPools();
        }
예제 #13
0
        public async Task CanGetMetricValues()
        {
            var client = new GraphiteClient(GraphiteHost);
            var metric = new GraphitePath("usage").Dot("unittest").Dot("iaas").DotWildcard().Dot("cpu").Dot("max");
            var data   = await client.GetMetricsDataAsync(metric);

            Assert.NotNull(data);
            var series = data.FirstOrDefault();

            Assert.NotNull(series);
            Assert.NotNull(series.Datapoints);
            Assert.NotEmpty(series.Datapoints);
            Assert.Contains(series.Datapoints, x => x.Value.HasValue);
            Assert.True(series.Datapoints.All(x => x.Timestamp < DateTime.Now));
        }
예제 #14
0
        public async Task CanSendMetric()
        {
            var server = new TcpListener(new IPEndPoint(IPAddress.Loopback, 33225));

            server.Start();
            var   client   = new GraphiteClient("localhost", new PlaintextGraphiteFormatter(33225));
            var   recvTask = ReceiveMetric(server);
            var   sendTask = client.SendAsync("usage.unittest.cpu.count", Environment.ProcessorCount);
            await sendTask;
            var   metric = await recvTask;

            Assert.Contains("usage.unittest.cpu.count", metric);
            server.Stop();
            Console.WriteLine(metric);
        }
예제 #15
0
        public async Task CanSendManyMetricsAsync()
        {
            var random = new Random();

            while (random.Next() > 0)
            {
                var client = new GraphiteClient(GraphiteHost, new PickleGraphiteFormatter());
                await client.SendAsync("test.client.random1", random.NextDouble() * 100);

                client = new GraphiteClient(GraphiteHost, new PlaintextGraphiteFormatter());
                await client.SendAsync("test.client.random2", random.NextDouble() * 100);

                await Task.Delay(500);
            }
            CarbonConnectionPool.ClearAllPools();
        }
예제 #16
0
        public IMetricReporter CreateMetricReporter(string name, ILoggerFactory loggerFactory)
        {
            var graphtieClient = new GraphiteClient(
                loggerFactory,
                _settings.GraphiteSettings,
                _settings.HttpPolicy);
            var payloadBuilder = new GraphitePayloadBuilder(_settings.GraphiteSettings.MetricNameFormatter, _settings.DataKeys);

            return(new ReportRunner <GraphitePayload>(
                       async p =>
            {
                var result = await graphtieClient.WriteAsync(p.Payload());
                return result.Success;
            },
                       payloadBuilder,
                       _settings.ReportInterval,
                       name,
                       loggerFactory));
        }
예제 #17
0
        public async Task CanReusePooledConnectionMetric()
        {
            var server = new TcpListener(new IPEndPoint(IPAddress.Loopback, 33225));

            server.Start();
            var client   = new GraphiteClient("localhost", new PlaintextGraphiteFormatter(33225));
            var recvTask = ReceiveMetric(server);
            await client.SendAsync("usage.unittest.cpu.count", Environment.ProcessorCount);

            client = new GraphiteClient("localhost", new PlaintextGraphiteFormatter(33225));
            await client.SendAsync("usage.unittest.ram.count", Environment.ProcessorCount);

            //"kill" all existing tcp connections
            new CarbonConnectionPool("localhost", new PickleGraphiteFormatter(33225)).ClearPool();

            var metric = await recvTask;

            Assert.Contains("usage.unittest.cpu.count", metric);
            Assert.Contains("usage.unittest.ram.count", metric);
            server.Stop();
            Console.WriteLine(metric);
        }
예제 #18
0
 public GraphiteClientWrapper(GraphiteClient client)
 {
     _client = client;
 }
예제 #19
0
 public void CanCreateClient()
 {
     var client = new GraphiteClient();
 }
예제 #20
0
 public async Task SendPickledMetric()
 {
     var client = new GraphiteClient(GraphiteHost, new PickleGraphiteFormatter());
     await client.SendAsync("usage.unittest.pickled.cpu.count", Environment.ProcessorCount);
 }