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")); }
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)); }
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); } }
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); } }
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" )); }