Skip to content
This repository has been archived by the owner on Oct 15, 2019. It is now read-only.

Commit

Permalink
Configure load tester netty logging to go to SLF4J
Browse files Browse the repository at this point in the history
Netty is configured by default to send its logging messages through JDK logging, but nifty-load-tester uses SLF4J
  • Loading branch information
andrewcox committed May 15, 2013
1 parent d84a2c0 commit 4abb19a
Showing 1 changed file with 115 additions and 95 deletions.
Expand Up @@ -33,123 +33,143 @@
import io.airlift.configuration.ConfigurationModule;
import io.airlift.configuration.ConfigurationValidator;
import io.airlift.configuration.ValidationErrorModule;
import org.jboss.netty.logging.InternalLoggerFactory;
import org.jboss.netty.logging.Slf4JLoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.concurrent.Executors;

public class NiftyLoadTester {

public static void main(String[] args) throws Exception {
ConfigurationFactory cf = new ConfigurationFactory(new ConfigurationLoader().loadProperties());
AbstractModule exampleModule = new AbstractModule() {
@Override
public void configure() {
ConfigurationModule.bindConfig(binder()).to(LoadTesterConfig.class);
binder().bind(NiftyBootstrap.class).in(Singleton.class);
}
};
Guice.createInjector
(
Stage.PRODUCTION,
new ConfigurationModule(cf),
new ValidationErrorModule(new ConfigurationValidator(cf, null).validate(exampleModule)),
new LifeCycleModule(),
exampleModule,
new NiftyModule() {
@Override
protected void configureNifty() {
bind().toProvider(LoadTestServerProvider.class);
withNettyConfig(LoadTesterNettyConfigProvider.class);
}
}
)
.getInstance(LifeCycleManager.class)
.start();
}
public class NiftyLoadTester
{
public static void main(String[] args) throws Exception
{
// Configure netty logs to go to SLF4J
InternalLoggerFactory.setDefaultFactory(new Slf4JLoggerFactory());

ConfigurationFactory cf = new ConfigurationFactory(new ConfigurationLoader().loadProperties());
AbstractModule exampleModule = new AbstractModule()
{
@Override
public void configure()
{
ConfigurationModule.bindConfig(binder()).to(LoadTesterConfig.class);
binder().bind(NiftyBootstrap.class).in(Singleton.class);
}
};
Guice.createInjector(Stage.PRODUCTION,
new ConfigurationModule(cf),
new ValidationErrorModule(new ConfigurationValidator(cf, null).validate(exampleModule)),
new LifeCycleModule(),
exampleModule,
new NiftyModule()
{
@Override
protected void configureNifty()
{
bind().toProvider(LoadTestServerProvider.class);
withNettyConfig(LoadTesterNettyConfigProvider.class);
}
})
.getInstance(LifeCycleManager.class)
.start();
}

private static class LoadTestServerProvider implements Provider<ThriftServerDef> {
private static class LoadTestServerProvider implements Provider<ThriftServerDef>
{

private static final Logger log = LoggerFactory.getLogger(
LoadTestServerProvider.class
);
private static final Logger log = LoggerFactory.getLogger(
LoadTestServerProvider.class
);

private final LoadTesterConfig config;
private final LifeCycleManager lifeCycleManager;
private final LoadTesterConfig config;
private final LifeCycleManager lifeCycleManager;

@Inject
private LoadTestServerProvider(LoadTesterConfig config, LifeCycleManager lifeCycleManager) {
this.config = config;
this.lifeCycleManager = lifeCycleManager;
}
@Inject
private LoadTestServerProvider(LoadTesterConfig config, LifeCycleManager lifeCycleManager)
{
this.config = config;
this.lifeCycleManager = lifeCycleManager;
}

@Override
public ThriftServerDef get() {
ThriftServerDefBuilder builder = new ThriftServerDefBuilder()
.listen(config.getServerPort())
.limitFrameSizeTo(config.getMaxFrameSize())
.limitQueuedResponsesPerConnection(config.getQueuedResponseLimit())
.withProcessor(new LoadTest.Processor<LoadTest.Iface>(new LoadTestHandler()));
@Override
public ThriftServerDef get()
{
ThriftServerDefBuilder builder = new ThriftServerDefBuilder()
.listen(config.getServerPort())
.limitFrameSizeTo(config.getMaxFrameSize())
.limitQueuedResponsesPerConnection(config.getQueuedResponseLimit())
.withProcessor(new LoadTest.Processor<LoadTest.Iface>(new LoadTestHandler()));

if (config.getUseTaskQueue()) {
builder.using(Executors.newFixedThreadPool(config.getNumTaskThreads()));
}
if (config.getUseTaskQueue()) {
builder.using(Executors.newFixedThreadPool(config.getNumTaskThreads()));
}

return builder.build();
return builder.build();
}
}
}

public static class LoadTesterConfig {
private int serverPort = 1234;
private int maxFrameSize = 1048576;
private boolean useTaskQueue = false;
private int numTaskThreads = 8;
private int queuedResponseLimit = 500;

public int getServerPort() {
return serverPort;
}
public static class LoadTesterConfig
{
private int serverPort = 1234;
private int maxFrameSize = 1048576;
private boolean useTaskQueue = false;
private int numTaskThreads = 8;
private int queuedResponseLimit = 500;

public int getServerPort()
{
return serverPort;
}

@Config("serverPort")
public void setServerPort(int serverPort) {
this.serverPort = serverPort;
}
@Config("serverPort")
public void setServerPort(int serverPort)
{
this.serverPort = serverPort;
}

public int getMaxFrameSize() {
return maxFrameSize;
}
public int getMaxFrameSize()
{
return maxFrameSize;
}

@Config("maxFrameSize")
public void setMaxFrameSize(int maxFrameSize) {
this.maxFrameSize = maxFrameSize;
}
@Config("maxFrameSize")
public void setMaxFrameSize(int maxFrameSize)
{
this.maxFrameSize = maxFrameSize;
}

public boolean getUseTaskQueue() {
return useTaskQueue;
}
public boolean getUseTaskQueue()
{
return useTaskQueue;
}

@Config("useTaskQueue")
public void setUseTaskQueue(boolean useTaskQueue) {
this.useTaskQueue = useTaskQueue;
}
@Config("useTaskQueue")
public void setUseTaskQueue(boolean useTaskQueue)
{
this.useTaskQueue = useTaskQueue;
}

public int getNumTaskThreads() {
return numTaskThreads;
}
public int getNumTaskThreads()
{
return numTaskThreads;
}

@Config("numTaskThreads")
public void setNumTaskThreads(int numTaskThreads) {
this.numTaskThreads = numTaskThreads;
}
@Config("numTaskThreads")
public void setNumTaskThreads(int numTaskThreads)
{
this.numTaskThreads = numTaskThreads;
}

public int getQueuedResponseLimit()
{
return queuedResponseLimit;
}
public int getQueuedResponseLimit()
{
return queuedResponseLimit;
}

@Config("queuedResponseLimit")
public void setQueuedResponseLimit(int queuedResponseLimit) {
this.queuedResponseLimit = queuedResponseLimit;
@Config("queuedResponseLimit")
public void setQueuedResponseLimit(int queuedResponseLimit)
{
this.queuedResponseLimit = queuedResponseLimit;
}
}
}
}

0 comments on commit 4abb19a

Please sign in to comment.