/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.exec;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertSame;
import net.sf.ehcache.CacheManager;
import org.mockito.Mockito;
import org.testng.annotations.Test;
import com.opengamma.engine.calcnode.stats.FunctionCosts;
import com.opengamma.engine.exec.plan.CachingExecutionPlanner;
import com.opengamma.engine.exec.plan.MultipleNodeExecutionPlanner;
import com.opengamma.util.test.TestGroup;
/**
* Tests the {@link MultipleNodeExecutorFactory} class.
*/
@Test(groups = TestGroup.UNIT)
public class MultipleNodeExecutorFactoryTest {
private MultipleNodeExecutionPlanner planner(final MultipleNodeExecutorFactory factory) {
assertEquals(factory.getPlanner().getClass(), MultipleNodeExecutionPlanner.class);
return (MultipleNodeExecutionPlanner) factory.getPlanner();
}
private CachingExecutionPlanner cachingPlanner(final MultipleNodeExecutorFactory factory) {
assertEquals(factory.getPlanner().getClass(), CachingExecutionPlanner.class);
return (CachingExecutionPlanner) factory.getPlanner();
}
public void testNoCaching() {
final MultipleNodeExecutorFactory factory = new MultipleNodeExecutorFactory();
factory.setCacheManager(null);
factory.afterPropertiesSet();
assertNotNull(planner(factory));
factory.invalidateCache();
}
public void testWithCaching() {
final MultipleNodeExecutorFactory factory = new MultipleNodeExecutorFactory();
factory.setCacheManager(Mockito.mock(CacheManager.class));
factory.afterPropertiesSet();
assertNotNull(cachingPlanner(factory));
factory.invalidateCache();
}
public void testMinimumJobItems() {
final MultipleNodeExecutorFactory factory = new MultipleNodeExecutorFactory();
assertEquals(factory.getMinimumJobItems(), 1);
assertEquals(planner(factory).getMinimumJobItems(), 1);
factory.setMinimumJobItems(50);
assertEquals(factory.getMinimumJobItems(), 50);
assertEquals(planner(factory).getMinimumJobItems(), 50);
}
public void testMaximumJobItems() {
final MultipleNodeExecutorFactory factory = new MultipleNodeExecutorFactory();
assertEquals(factory.getMaximumJobItems(), Integer.MAX_VALUE);
assertEquals(planner(factory).getMaximumJobItems(), Integer.MAX_VALUE);
factory.setMaximumJobItems(50);
assertEquals(factory.getMaximumJobItems(), 50);
assertEquals(planner(factory).getMaximumJobItems(), 50);
}
public void testMinimumJobCost() {
final MultipleNodeExecutorFactory factory = new MultipleNodeExecutorFactory();
assertEquals(factory.getMinimumJobCost(), 0);
assertEquals(planner(factory).getMinimumJobCost(), 0);
factory.setMinimumJobCost(50);
assertEquals(factory.getMinimumJobCost(), 50);
assertEquals(planner(factory).getMinimumJobCost(), 50);
}
public void testMaximumJobCost() {
final MultipleNodeExecutorFactory factory = new MultipleNodeExecutorFactory();
assertEquals(factory.getMaximumJobCost(), Long.MAX_VALUE);
assertEquals(planner(factory).getMaximumJobCost(), Long.MAX_VALUE);
factory.setMaximumJobCost(50);
assertEquals(factory.getMaximumJobCost(), 50);
assertEquals(planner(factory).getMaximumJobCost(), 50);
}
public void testMaximumConcurrency() {
final MultipleNodeExecutorFactory factory = new MultipleNodeExecutorFactory();
assertEquals(factory.getMaximumConcurrency(), Integer.MAX_VALUE);
assertEquals(planner(factory).getMaximumConcurrency(), Integer.MAX_VALUE);
factory.setMaximumConcurrency(50);
assertEquals(factory.getMaximumConcurrency(), 50);
assertEquals(planner(factory).getMaximumConcurrency(), 50);
}
public void testFunctionCosts() {
final MultipleNodeExecutorFactory factory = new MultipleNodeExecutorFactory();
FunctionCosts costs = factory.getFunctionCosts();
assertSame(costs, planner(factory).getFunctionCosts());
costs = new FunctionCosts();
factory.setFunctionCosts(costs);
assertSame(factory.getFunctionCosts(), costs);
assertSame(planner(factory).getFunctionCosts(), costs);
}
}