package org.webpieces.nio.test.tcp;
import java.util.HashMap;
import java.util.Map;
import org.webpieces.nio.api.deprecated.ChannelManagerOld;
import org.webpieces.nio.api.deprecated.ChannelService;
import org.webpieces.nio.api.deprecated.ChannelServiceFactory;
import org.webpieces.nio.api.deprecated.Settings;
import org.webpieces.nio.api.libs.FactoryCreator;
import org.webpieces.nio.api.libs.PacketProcessorFactory;
import org.webpieces.nio.api.libs.SSLEngineFactory;
import org.webpieces.nio.api.libs.StartableExecutorService;
import org.webpieces.nio.api.testutil.MockSSLEngineFactory;
public class PerfTestZSecure extends ZPerformanceSuper {
private ChannelServiceFactory secureFactory;
private SSLEngineFactory sslEngineFactory;
private Settings clientFactoryHolder;
private Settings serverFactoryHolder;
private StartableExecutorService clientExecFactory;
private StartableExecutorService serverExecFactory;
public PerfTestZSecure(String name) {
super(name);
FactoryCreator creator = FactoryCreator.createFactory(null);
Map<String, Object> map = new HashMap<String, Object>();
map.put(FactoryCreator.KEY_NUM_THREADS, 1);
clientExecFactory = creator.createExecSvcFactory(map);
serverExecFactory = creator.createExecSvcFactory(map);
ChannelServiceFactory basic = ChannelServiceFactory.createFactory(null);
Map<String, Object> threadedProps = new HashMap<String, Object>();
threadedProps.put(ChannelServiceFactory.KEY_IMPLEMENTATION_CLASS, ChannelServiceFactory.VAL_THREAD_CHANNEL_MGR);
threadedProps.put(ChannelServiceFactory.KEY_CHILD_CHANNELMGR_FACTORY, basic);
ChannelServiceFactory threaded = ChannelServiceFactory.createFactory(threadedProps);
Map<String, Object> factoryName = new HashMap<String, Object>();
factoryName.put(ChannelServiceFactory.KEY_IMPLEMENTATION_CLASS, ChannelServiceFactory.VAL_SECURE_CHANNEL_MGR);
factoryName.put(ChannelServiceFactory.KEY_CHILD_CHANNELMGR_FACTORY, threaded);
ChannelServiceFactory sslLayer = ChannelServiceFactory.createFactory(factoryName);
Map<String, Object> props = new HashMap<String, Object>();
props.put(ChannelServiceFactory.KEY_IMPLEMENTATION_CLASS, ChannelServiceFactory.VAL_PACKET_CHANNEL_MGR);
props.put(ChannelServiceFactory.KEY_CHILD_CHANNELMGR_FACTORY, sslLayer);
secureFactory = ChannelServiceFactory.createFactory(props);
sslEngineFactory = new MockSSLEngineFactory();
PacketProcessorFactory procFactory = creator.createPacketProcFactory(null);
clientFactoryHolder = new Settings(sslEngineFactory, procFactory);
serverFactoryHolder = new Settings(sslEngineFactory, procFactory);
}
@Override
protected ChannelService getClientChanMgr() {
Map<String, Object> p = new HashMap<String, Object>();
p.put(ChannelManagerOld.KEY_ID, "client");
p.put(ChannelManagerOld.KEY_BUFFER_FACTORY, getBufFactory());
p.put(ChannelManagerOld.KEY_EXECUTORSVC_FACTORY, clientExecFactory);
ChannelService chanMgr = secureFactory.createChannelManager(p);
return chanMgr;
}
@Override
protected ChannelService getServerChanMgr() {
Map<String, Object> p = new HashMap<String, Object>();
p.put(ChannelManagerOld.KEY_ID, "echoServer");
p.put(ChannelManagerOld.KEY_BUFFER_FACTORY, getBufFactory());
p.put(ChannelManagerOld.KEY_EXECUTORSVC_FACTORY, serverExecFactory);
ChannelService svcChanMgr = secureFactory.createChannelManager(p);
return svcChanMgr;
}
@Override
protected Settings getClientFactoryHolder() {
return clientFactoryHolder;
}
@Override
protected Settings getServerFactoryHolder() {
return serverFactoryHolder;
}
@Override
protected String getChannelImplName() {
return "biz.xsoftware.impl.nio.cm.secure.SecTCPChannel";
}
@Override
protected int getBasicConnectTimeLimit() {
return 300;
}
/**
* Realize this limit is bigger when useing AsynchSSLEngineSynchronized
*/
@Override
protected int getSmallReadWriteTimeLimit() {
return 80;
}
@Override
protected int getLargerReadWriteTimeLimit() {
return 300;
}
}