Removed the deprecated function retrievers and adjusted the

DataMiningActivator and the tests
This commit is contained in:
Lennart Hensler committed 2014-03-27 18:27:14 +01:00
1 parent e31a0d6c95
commit df43564aaa
13 files changed
+105 -364

No files matched your search

@@ -17,10 +17,7 @@ import com.sap.sse.datamining.factories.FunctionFactory;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.functions.FunctionProvider;
import com.sap.sse.datamining.functions.FunctionRegistry;
import com.sap.sse.datamining.functions.ParallelFunctionRetriever;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.functions.PartitionParallelExternalFunctionRetriever;
import com.sap.sse.datamining.impl.functions.PartitioningParallelMarkedFunctionRetriever;
import com.sap.sse.datamining.impl.functions.RegistryFunctionsProvider;
import com.sap.sse.datamining.impl.functions.SimpleFunctionRegistry;
import com.sap.sse.datamining.shared.dto.FunctionDTO;
@@ -32,6 +29,7 @@ import com.sap.sse.datamining.test.function.test_classes.ExtendingInterface;
import com.sap.sse.datamining.test.function.test_classes.ExternalLibraryClass;
import com.sap.sse.datamining.test.function.test_classes.MarkedContainer;
import com.sap.sse.datamining.test.function.test_classes.SimpleClassWithMarkedMethods;
import com.sap.sse.datamining.test.util.ConcurrencyTestsUtil;
import com.sap.sse.datamining.test.util.FunctionTestsUtil;
import com.sap.sse.datamining.test.util.TestsUtil;
@@ -43,22 +41,20 @@ public class TestFunctionProvider {
@Before
public void initializeFunctionRegistry() {
functionRegistry = new SimpleFunctionRegistry();
functionRegistry = new SimpleFunctionRegistry(ConcurrencyTestsUtil.getExecutor());
Collection<Class<?>> classesToScan = new HashSet<>();
classesToScan.add(SimpleClassWithMarkedMethods.class);
classesToScan.add(DataTypeWithContext.class);
classesToScan.add(DataTypeWithContextProcessor.class);
classesToScan.add(ExtendingInterface.class);
classesToScan.add(MarkedContainer.class);
classesToScan.add(ContainerElement.class);
ParallelFunctionRetriever markedFunctionRetriever = new PartitioningParallelMarkedFunctionRetriever(classesToScan, FunctionTestsUtil.getExecutor());
functionRegistry.registerFunctionsRetrievedBy(markedFunctionRetriever);
Collection<Class<?>> internalClassesToScan = new HashSet<>();
internalClassesToScan.add(SimpleClassWithMarkedMethods.class);
internalClassesToScan.add(DataTypeWithContext.class);
internalClassesToScan.add(DataTypeWithContextProcessor.class);
internalClassesToScan.add(ExtendingInterface.class);
internalClassesToScan.add(MarkedContainer.class);
internalClassesToScan.add(ContainerElement.class);
functionRegistry.registerAllWithInternalFunctionPolicy(internalClassesToScan);
Collection<Class<?>> externalClasses = new HashSet<>();
externalClasses.add(ExternalLibraryClass.class);
ParallelFunctionRetriever externalFunctionRetriever = new PartitionParallelExternalFunctionRetriever(externalClasses, FunctionTestsUtil.getExecutor());
functionRegistry.registerFunctionsRetrievedBy(externalFunctionRetriever);
Collection<Class<?>> externalClassesToScan = new HashSet<>();
externalClassesToScan.add(ExternalLibraryClass.class);
functionRegistry.registerAllWithExternalFunctionPolicy(externalClassesToScan);
}
@Test
@@ -1,84 +0,0 @@
package com.sap.sse.datamining.impl.function;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.concurrent.ExecutionException;
import org.junit.Test;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.functions.ParallelFunctionRetriever;
import com.sap.sse.datamining.impl.functions.FunctionRetrievalWorker;
import com.sap.sse.datamining.impl.functions.PartitioningParallelMarkedFunctionRetriever;
import com.sap.sse.datamining.test.function.test_classes.ExternalLibraryClass;
import com.sap.sse.datamining.test.function.test_classes.SimpleClassWithMarkedMethods;
import com.sap.sse.datamining.test.util.FunctionTestsUtil;
import com.sap.sse.datamining.test.util.OpenDataReceiver;
public class TestFunctionRetrievers {
@Test
public void testMarkedFunctionRetrievalWorker() {
Collection<Class<?>> classesToScan = new ArrayList<>();
classesToScan.add(SimpleClassWithMarkedMethods.class);
OpenDataReceiver<Collection<Function<?>>> receiver = new OpenDataReceiver<>();
FunctionRetrievalWorker worker = FunctionRetrievalWorker.Util.createMarkedFunctionRetrievalWorker(classesToScan, receiver);
Collection<Function<?>> expectedFunctions = FunctionTestsUtil.getMarkedMethodsOfSimpleClassWithMarkedMethod();
worker.run();
assertThat(receiver.result, is(expectedFunctions));
}
@Test
public void testExternalFunctionRetrievalWorker() {
Collection<Class<?>> classesToScan = new ArrayList<>();
classesToScan.add(ExternalLibraryClass.class);
OpenDataReceiver<Collection<Function<?>>> receiver = new OpenDataReceiver<>();
FunctionRetrievalWorker worker = FunctionRetrievalWorker.Util.createExternalFunctionRetrievalWorker(classesToScan, receiver);
Collection<Function<?>> expectedFunctions = FunctionTestsUtil.getMethodsOfExternalLibraryClass();
worker.run();
assertThat(receiver.result, is(expectedFunctions));
}
@Test
public void testFunctionRetrievalWithManyClassesToScan() {
Collection<Class<?>> classesToScan = getManyClassesToScan();
classesToScan.add(SimpleClassWithMarkedMethods.class);
assertThat("Not enough classes to scan for this test.", classesToScan.size() >= getMaximumWorkerAmount(), is(true));
ParallelFunctionRetriever functionRetriever = new PartitioningParallelMarkedFunctionRetriever(classesToScan , FunctionTestsUtil.getExecutor());
Collection<Function<?>> expectedFunctions = FunctionTestsUtil.getMarkedMethodsOfSimpleClassWithMarkedMethod();
try {
Collection<Function<?>> retrievedFunctions = new HashSet<>(functionRetriever.start(null).get());
assertThat(retrievedFunctions, is(expectedFunctions));
} catch (InterruptedException | ExecutionException e) {
fail("Error during the function retrieving");
}
}
private int getMaximumWorkerAmount() {
return (int) (FunctionTestsUtil.getExecutor().getCorePoolSize() * 0.5);
}
private Collection<Class<?>> getManyClassesToScan() {
Collection<Class<?>> classesToScan = new ArrayList<>();
classesToScan.add(Math.class);
classesToScan.add(Integer.class);
classesToScan.add(String.class);
classesToScan.add(Double.class);
classesToScan.add(Long.class);
classesToScan.add(Float.class);
classesToScan.add(ExternalLibraryClass.class);
return classesToScan;
}
}
@@ -11,14 +11,12 @@ import org.junit.Test;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.functions.FunctionRegistry;
import com.sap.sse.datamining.functions.ParallelFunctionRetriever;
import com.sap.sse.datamining.impl.functions.PartitionParallelExternalFunctionRetriever;
import com.sap.sse.datamining.impl.functions.PartitioningParallelMarkedFunctionRetriever;
import com.sap.sse.datamining.impl.functions.SimpleFunctionRegistry;
import com.sap.sse.datamining.test.function.test_classes.DataTypeWithContext;
import com.sap.sse.datamining.test.function.test_classes.DataTypeWithContextProcessor;
import com.sap.sse.datamining.test.function.test_classes.ExternalLibraryClass;
import com.sap.sse.datamining.test.function.test_classes.SimpleClassWithMarkedMethods;
import com.sap.sse.datamining.test.util.ConcurrencyTestsUtil;
import com.sap.sse.datamining.test.util.FunctionTestsUtil;
public class TestSimpleFunctionRegistryAccess {
@@ -27,19 +25,17 @@ public class TestSimpleFunctionRegistryAccess {
@Before
public void initializeTheFunctionRegistry() {
functionRegistry = new SimpleFunctionRegistry();
functionRegistry = new SimpleFunctionRegistry(ConcurrencyTestsUtil.getExecutor());
Collection<Class<?>> classesToScan = new HashSet<>();
classesToScan.add(SimpleClassWithMarkedMethods.class);
classesToScan.add(DataTypeWithContext.class);
classesToScan.add(DataTypeWithContextProcessor.class);
ParallelFunctionRetriever markedFunctionRetriever = new PartitioningParallelMarkedFunctionRetriever(classesToScan, FunctionTestsUtil.getExecutor());
functionRegistry.registerFunctionsRetrievedBy(markedFunctionRetriever);
Collection<Class<?>> internalClassesToScan = new HashSet<>();
internalClassesToScan.add(SimpleClassWithMarkedMethods.class);
internalClassesToScan.add(DataTypeWithContext.class);
internalClassesToScan.add(DataTypeWithContextProcessor.class);
functionRegistry.registerAllWithInternalFunctionPolicy(internalClassesToScan);
Collection<Class<?>> externalClasses = new HashSet<>();
externalClasses.add(ExternalLibraryClass.class);
ParallelFunctionRetriever externalFunctionRetriever = new PartitionParallelExternalFunctionRetriever(externalClasses, FunctionTestsUtil.getExecutor());
functionRegistry.registerFunctionsRetrievedBy(externalFunctionRetriever);
Collection<Class<?>> externalClassesToScan = new HashSet<>();
externalClassesToScan.add(ExternalLibraryClass.class);
functionRegistry.registerAllWithExternalFunctionPolicy(externalClassesToScan);
}
@Test
@@ -13,12 +13,10 @@ import org.junit.Test;
import com.sap.sse.datamining.factories.FunctionFactory;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.functions.FunctionRegistry;
import com.sap.sse.datamining.functions.ParallelFunctionRetriever;
import com.sap.sse.datamining.impl.functions.PartitionParallelExternalFunctionRetriever;
import com.sap.sse.datamining.impl.functions.PartitioningParallelMarkedFunctionRetriever;
import com.sap.sse.datamining.impl.functions.SimpleFunctionRegistry;
import com.sap.sse.datamining.test.function.test_classes.ExternalLibraryClass;
import com.sap.sse.datamining.test.function.test_classes.SimpleClassWithMarkedMethods;
import com.sap.sse.datamining.test.util.ConcurrencyTestsUtil;
import com.sap.sse.datamining.test.util.FunctionTestsUtil;
public class TestSimpleFunctionRegistryRegistrations {
@@ -27,7 +25,7 @@ public class TestSimpleFunctionRegistryRegistrations {
public void testSimpleRegistration() {
Method dimension = FunctionTestsUtil.getMethodFromSimpleClassWithMarkedMethod("dimension");
FunctionRegistry registry = new SimpleFunctionRegistry();
FunctionRegistry registry = new SimpleFunctionRegistry(ConcurrencyTestsUtil.getExecutor());
registry.register(dimension);
Set<Function<?>> expectedRegisteredFunctionsAsSet = new HashSet<>();
@@ -39,8 +37,8 @@ public class TestSimpleFunctionRegistryRegistrations {
@Test
public void testRegistrationByFunctionRetrievers() {
FunctionRegistry registry = new SimpleFunctionRegistry();
registerMethodsOfTestClassesViaFunctionRetrieversTo(registry);
FunctionRegistry registry = new SimpleFunctionRegistry(ConcurrencyTestsUtil.getExecutor());
registerMethodsOfTestClasses(registry);
Set<Function<?>> expectedRegisteredFunctionsAsSet = new HashSet<>();
expectedRegisteredFunctionsAsSet.addAll(FunctionTestsUtil.getMarkedMethodsOfSimpleClassWithMarkedMethod());
@@ -49,23 +47,21 @@ public class TestSimpleFunctionRegistryRegistrations {
assertThat(registry.getAllFunctions(), is(expectedRegisteredFunctions));
}
private void registerMethodsOfTestClassesViaFunctionRetrieversTo(FunctionRegistry registry) {
Collection<Class<?>> classesToScan = new HashSet<>();
classesToScan.add(SimpleClassWithMarkedMethods.class);
ParallelFunctionRetriever markedFunctionRetriever = new PartitioningParallelMarkedFunctionRetriever(classesToScan, FunctionTestsUtil.getExecutor());
registry.registerFunctionsRetrievedBy(markedFunctionRetriever);
private void registerMethodsOfTestClasses(FunctionRegistry registry) {
Collection<Class<?>> internalClassesToScan = new HashSet<>();
internalClassesToScan.add(SimpleClassWithMarkedMethods.class);
registry.registerAllWithInternalFunctionPolicy(internalClassesToScan);
Collection<Class<?>> externalClasses = new HashSet<>();
externalClasses.add(ExternalLibraryClass.class);
ParallelFunctionRetriever externalFunctionRetriever = new PartitionParallelExternalFunctionRetriever(externalClasses, FunctionTestsUtil.getExecutor());
registry.registerFunctionsRetrievedBy(externalFunctionRetriever);
Collection<Class<?>> externalClassesToScan = new HashSet<>();
externalClassesToScan.add(ExternalLibraryClass.class);
registry.registerAllWithExternalFunctionPolicy(externalClassesToScan);
}
@Test
public void testTheMultipleRegistrationOfTheSameFunction() {
Method dimension = FunctionTestsUtil.getMethodFromSimpleClassWithMarkedMethod("dimension");
FunctionRegistry registry = new SimpleFunctionRegistry();
FunctionRegistry registry = new SimpleFunctionRegistry(ConcurrencyTestsUtil.getExecutor());
registry.register(dimension);
registry.register(dimension);
registry.register(dimension);