Пример #1
0
        public virtual void TestPutMetrics2()
        {
            GraphiteSink       sink = new GraphiteSink();
            IList <MetricsTag> tags = new AList <MetricsTag>();

            tags.AddItem(new MetricsTag(MsInfo.Context, "all"));
            tags.AddItem(new MetricsTag(MsInfo.Hostname, null));
            ICollection <AbstractMetric> metrics = new HashSet <AbstractMetric>();

            metrics.AddItem(MakeMetric("foo1", 1));
            metrics.AddItem(MakeMetric("foo2", 2));
            MetricsRecord record = new MetricsRecordImpl(MsInfo.Context, (long)10000, tags, metrics
                                                         );
            ArgumentCaptor <string> argument = ArgumentCaptor.ForClass <string>();

            GraphiteSink.Graphite mockGraphite = MakeGraphite();
            Whitebox.SetInternalState(sink, "graphite", mockGraphite);
            sink.PutMetrics(record);
            try
            {
                Org.Mockito.Mockito.Verify(mockGraphite).Write(argument.Capture());
            }
            catch (IOException e)
            {
                Runtime.PrintStackTrace(e);
            }
            string result = argument.GetValue();

            Assert.Equal(true, result.Equals("null.all.Context.Context=all.foo1 1 10\n"
                                             + "null.all.Context.Context=all.foo2 2 10\n") || result.Equals("null.all.Context.Context=all.foo2 2 10\n"
                                                                                                            + "null.all.Context.Context=all.foo1 1 10\n"));
        }
Пример #2
0
        public ConsumerGroupHost Initialize(ILog log, AirlockEnvironmentVariables environmentVariables)
        {
            var environment            = environmentVariables.GetValue("VOSTOK_ENV", "dev");
            var metricRoutingKeyPrefix = RoutingKey.CreatePrefix("vostok", environment, ServiceName);
            var graphiteUri            = GetGraphiteUri(log, environmentVariables);
            var graphiteSinkConfig     = new GraphiteSinkConfig
            {
                GraphiteHost = graphiteUri.Host,
                GraphitePort = graphiteUri.Port
            };

            log.Info($"GraphiteSinkConfig: {graphiteSinkConfig.ToPrettyJson()}");
            graphiteSink = new GraphiteSink(graphiteSinkConfig, log);
            var rootMetricScope = new RootMetricScope(new MetricConfiguration
            {
                Reporter = new GraphiteMetricReporter(graphiteSink, metricRoutingKeyPrefix, log)
            });
            var consumerGroupHostSettings = GetConsumerGroupHostSettings(log, environmentVariables);

            consumerMetrics = new ConsumerMetrics(consumerGroupHostSettings.FlushMetricsInterval, rootMetricScope);

            DoInitialize(log, rootMetricScope, environmentVariables, out var routingKeyFilter, out var processorProvider);

            return(new ConsumerGroupHost(consumerGroupHostSettings, log, consumerMetrics, routingKeyFilter, processorProvider));
        }
Пример #3
0
        public virtual void TestPutMetrics3()
        {
            // setup GraphiteSink
            GraphiteSink sink = new GraphiteSink();

            GraphiteSink.Graphite mockGraphite = MakeGraphite();
            Whitebox.SetInternalState(sink, "graphite", mockGraphite);
            // given two metrics records with timestamps 1000 milliseconds apart.
            IList <MetricsTag>           tags    = Collections.EmptyList();
            ICollection <AbstractMetric> metrics = new HashSet <AbstractMetric>();

            metrics.AddItem(MakeMetric("foo1", 1));
            MetricsRecord record1 = new MetricsRecordImpl(MsInfo.Context, 1000000000000L, tags
                                                          , metrics);
            MetricsRecord record2 = new MetricsRecordImpl(MsInfo.Context, 1000000001000L, tags
                                                          , metrics);

            sink.PutMetrics(record1);
            sink.PutMetrics(record2);
            sink.Flush();
            try
            {
                sink.Close();
            }
            catch (IOException e)
            {
                Runtime.PrintStackTrace(e);
            }
            // then the timestamps in the graphite stream should differ by one second.
            try
            {
                Org.Mockito.Mockito.Verify(mockGraphite).Write(Matchers.Eq("null.default.Context.foo1 1 1000000000\n"
                                                                           ));
                Org.Mockito.Mockito.Verify(mockGraphite).Write(Matchers.Eq("null.default.Context.foo1 1 1000000001\n"
                                                                           ));
            }
            catch (IOException e)
            {
                Runtime.PrintStackTrace(e);
            }
        }
Пример #4
0
        public virtual void TestClose()
        {
            GraphiteSink sink = new GraphiteSink();

            GraphiteSink.Graphite mockGraphite = MakeGraphite();
            Whitebox.SetInternalState(sink, "graphite", mockGraphite);
            try
            {
                sink.Close();
            }
            catch (IOException ioe)
            {
                Runtime.PrintStackTrace(ioe);
            }
            try
            {
                Org.Mockito.Mockito.Verify(mockGraphite).Close();
            }
            catch (IOException ioe)
            {
                Runtime.PrintStackTrace(ioe);
            }
        }
Пример #5
0
        public virtual void TestFailureAndPutMetrics()
        {
            GraphiteSink       sink = new GraphiteSink();
            IList <MetricsTag> tags = new AList <MetricsTag>();

            tags.AddItem(new MetricsTag(MsInfo.Context, "all"));
            tags.AddItem(new MetricsTag(MsInfo.Hostname, "host"));
            ICollection <AbstractMetric> metrics = new HashSet <AbstractMetric>();

            metrics.AddItem(MakeMetric("foo1", 1.25));
            metrics.AddItem(MakeMetric("foo2", 2.25));
            MetricsRecord record = new MetricsRecordImpl(MsInfo.Context, (long)10000, tags, metrics
                                                         );

            GraphiteSink.Graphite mockGraphite = MakeGraphite();
            Whitebox.SetInternalState(sink, "graphite", mockGraphite);
            // throw exception when first try
            Org.Mockito.Mockito.DoThrow(new IOException("IO exception")).When(mockGraphite).Write
                (Matchers.AnyString());
            sink.PutMetrics(record);
            Org.Mockito.Mockito.Verify(mockGraphite).Write(Matchers.AnyString());
            Org.Mockito.Mockito.Verify(mockGraphite).Close();
            // reset mock and try again
            Org.Mockito.Mockito.Reset(mockGraphite);
            Org.Mockito.Mockito.When(mockGraphite.IsConnected()).ThenReturn(false);
            ArgumentCaptor <string> argument = ArgumentCaptor.ForClass <string>();

            sink.PutMetrics(record);
            Org.Mockito.Mockito.Verify(mockGraphite).Write(argument.Capture());
            string result = argument.GetValue();

            Assert.Equal(true, result.Equals("null.all.Context.Context=all.Hostname=host.foo1 1.25 10\n"
                                             + "null.all.Context.Context=all.Hostname=host.foo2 2.25 10\n") || result.Equals
                             ("null.all.Context.Context=all.Hostname=host.foo2 2.25 10\n" + "null.all.Context.Context=all.Hostname=host.foo1 1.25 10\n"
                             ));
        }