/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.test;
import java.util.concurrent.Executors;
import org.springframework.context.Lifecycle;
import com.opengamma.core.position.impl.MockPositionSource;
import com.opengamma.core.security.impl.test.MockSecuritySource;
import com.opengamma.engine.DefaultComputationTargetResolver;
import com.opengamma.engine.cache.InMemoryViewComputationCacheSource;
import com.opengamma.engine.calcnode.CalculationNodeLogEventListener;
import com.opengamma.engine.calcnode.SimpleCalculationNode;
import com.opengamma.engine.calcnode.stats.DiscardingInvocationStatisticsGatherer;
import com.opengamma.engine.function.CachingFunctionRepositoryCompiler;
import com.opengamma.engine.function.CompiledFunctionService;
import com.opengamma.engine.function.FunctionCompilationContext;
import com.opengamma.engine.function.FunctionExecutionContext;
import com.opengamma.engine.function.InMemoryFunctionRepository;
import com.opengamma.engine.function.config.FunctionRepositoryFactory;
import com.opengamma.util.InetAddressUtils;
import com.opengamma.util.fudgemsg.OpenGammaFudgeContext;
import com.opengamma.util.log.ThreadLocalLogEventListener;
public class TestCalculationNode extends SimpleCalculationNode implements Lifecycle {
private static FunctionCompilationContext compilationContext() {
final FunctionCompilationContext context = new FunctionCompilationContext();
context.setSecuritySource(new MockSecuritySource());
context.setRawComputationTargetResolver(new DefaultComputationTargetResolver(context.getSecuritySource(), new MockPositionSource()));
return context;
}
private static CompiledFunctionService initializedCFS() {
final InMemoryFunctionRepository repository = new InMemoryFunctionRepository();
final CompiledFunctionService cfs = new CompiledFunctionService(FunctionRepositoryFactory.constructRepositoryFactory(repository), new CachingFunctionRepositoryCompiler(),
compilationContext());
cfs.initialize();
return cfs;
}
public TestCalculationNode() {
this(new ThreadLocalLogEventListener());
}
public TestCalculationNode(final ThreadLocalLogEventListener logEventListener) {
super(new InMemoryViewComputationCacheSource(OpenGammaFudgeContext.getInstance()), initializedCFS(), new FunctionExecutionContext(), InetAddressUtils.getLocalHostName(), Executors
.newCachedThreadPool(), new DiscardingInvocationStatisticsGatherer(), new CalculationNodeLogEventListener(logEventListener));
}
// Lifecycle
@Override
public void start() {
getFunctionCompilationService().start();
}
@Override
public void stop() {
getFunctionCompilationService().stop();
getExecutorService().shutdown();
}
@Override
public boolean isRunning() {
return getFunctionCompilationService().isRunning();
}
}