package com.outbrain.gruffalo.publish;
import com.outbrain.gruffalo.netty.GraphiteChannelInboundHandler;
import com.outbrain.gruffalo.netty.GraphiteClientChannelInitializer;
import com.outbrain.gruffalo.netty.NettyGraphiteClient;
import com.outbrain.gruffalo.netty.Throttler;
import com.outbrain.swinfra.metrics.api.MetricFactory;
import com.outbrain.swinfra.metrics.api.Counter;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.handler.codec.string.StringDecoder;
import io.netty.handler.codec.string.StringEncoder;
import org.apache.commons.lang3.time.StopWatch;
import org.mockito.Mockito;
import java.util.concurrent.TimeUnit;
/**
* Time: 7/29/13 11:27 AM
*
* @author Eran Harel
*/
public class GraphiteMetricsPublisherTest {
public static void main(String[] args) throws InterruptedException {
final MetricFactory metricFactoryMock = Mockito.mock(MetricFactory.class);
final Counter counterMock = Mockito.mock(Counter.class);
Mockito.when(metricFactoryMock.createCounter(Mockito.anyString(), Mockito.anyString())).thenReturn(counterMock);
NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup(2);
final Throttler throttler = Mockito.mock(Throttler.class);
NettyGraphiteClient client = new NettyGraphiteClient(throttler, 1000, metricFactoryMock, "localhost:666");
String host = "localhost";
int port = 3003;
GraphiteClientChannelInitializer channelInitializer = new GraphiteClientChannelInitializer(host, port, eventLoopGroup, new StringDecoder(), new StringEncoder(), new GraphiteChannelInboundHandler(client, host + ":" + port, throttler));
client.setChannelInitializer(channelInitializer);
client.connect();
// Thread.sleep(20000);
System.out.println("Begin bombardment...");
StopWatch time = new StopWatch();
time.start();
for (int i = 0; i < 10000000; i++) {
client.publishMetrics(i + " - 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
if(i % 10000 == 0) {
Thread.sleep(100);
}
if (i % 100000 == 0) {
System.out.println(i);
Thread.sleep(300);
}
}
time.stop();
System.out.println("sent all data: " + time +"; shutting down...");
Thread.sleep(1000000);
eventLoopGroup.shutdownGracefully(10, 20, TimeUnit.SECONDS);
}
}