You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2018/07/17 21:42:44 UTC
nifi git commit: NIFI-5436 Add ability to set the processor name in
the ProcessContext when using the TestRunner.
Repository: nifi
Updated Branches:
refs/heads/master 8b9d44611 -> 3746ae258
NIFI-5436 Add ability to set the processor name in the ProcessContext when using the TestRunner.
This closes #2902.
Signed-off-by: Andy LoPresto <al...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/3746ae25
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/3746ae25
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/3746ae25
Branch: refs/heads/master
Commit: 3746ae258d619c38d763c580f1acb6521c6c3bc5
Parents: 8b9d446
Author: Otto Fowler <ot...@gmail.com>
Authored: Tue Jul 17 11:26:32 2018 -0400
Committer: Andy LoPresto <al...@apache.org>
Committed: Tue Jul 17 14:42:37 2018 -0700
----------------------------------------------------------------------
.../src/main/asciidoc/developer-guide.adoc | 7 ++-
.../apache/nifi/util/MockProcessContext.java | 66 +++++++++++++++-----
.../nifi/util/StandardProcessorTestRunner.java | 6 +-
.../java/org/apache/nifi/util/TestRunners.java | 38 ++++++++++-
.../util/TestStandardProcessorTestRunner.java | 7 +++
5 files changed, 101 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/3746ae25/nifi-docs/src/main/asciidoc/developer-guide.adoc
----------------------------------------------------------------------
diff --git a/nifi-docs/src/main/asciidoc/developer-guide.adoc b/nifi-docs/src/main/asciidoc/developer-guide.adoc
index 97ac234..1d77de3 100644
--- a/nifi-docs/src/main/asciidoc/developer-guide.adoc
+++ b/nifi-docs/src/main/asciidoc/developer-guide.adoc
@@ -2144,9 +2144,10 @@ you can use the Maven dependency:
</dependency>
----
-We create a new `TestRunner` by calling the static `newTestRunner` method of the `TestRunners` class
-(located in the `org.apache.nifi.util` package). This method takes a single argument. That argument can
-either be the class of the Processor to test or can be an instance of a Processor.
+We create a new `TestRunner` by calling one of the static `newTestRunner` methods of the `TestRunners` class
+(located in the `org.apache.nifi.util` package). These methods take an argument for the Processor under test (can
+either be the class of the Processor to test or can be an instance of a Processor), and allow the setting of
+the processor name as well.
=== Add ControllerServices
http://git-wip-us.apache.org/repos/asf/nifi/blob/3746ae25/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessContext.java
----------------------------------------------------------------------
diff --git a/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessContext.java b/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessContext.java
index f40de46..281f4a8 100644
--- a/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessContext.java
+++ b/nifi-mock/src/main/java/org/apache/nifi/util/MockProcessContext.java
@@ -16,19 +16,6 @@
*/
package org.apache.nifi.util;
-import static java.util.Objects.requireNonNull;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
import org.apache.nifi.annotation.behavior.InputRequirement;
import org.apache.nifi.attribute.expression.language.Query;
import org.apache.nifi.attribute.expression.language.Query.Range;
@@ -48,9 +35,23 @@ import org.apache.nifi.registry.VariableRegistry;
import org.apache.nifi.state.MockStateManager;
import org.junit.Assert;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+
+import static java.util.Objects.requireNonNull;
+
public class MockProcessContext extends MockControllerServiceLookup implements SchedulingContext, ControllerServiceLookup, NodeTypeProvider {
private final ConfigurableComponent component;
+ private final String componentName;
private final Map<PropertyDescriptor, String> properties = new HashMap<>();
private final StateManager stateManager;
private final VariableRegistry variableRegistry;
@@ -71,7 +72,11 @@ public class MockProcessContext extends MockControllerServiceLookup implements S
private volatile boolean isPrimaryNode;
public MockProcessContext(final ConfigurableComponent component) {
- this(component, new MockStateManager(component), VariableRegistry.EMPTY_REGISTRY);
+ this(component, null);
+ }
+
+ public MockProcessContext(final ConfigurableComponent component, final String componentName) {
+ this(component, componentName, new MockStateManager(component), VariableRegistry.EMPTY_REGISTRY);
}
/**
@@ -82,14 +87,41 @@ public class MockProcessContext extends MockControllerServiceLookup implements S
* @param variableRegistry variableRegistry
*/
public MockProcessContext(final ConfigurableComponent component, final StateManager stateManager, final VariableRegistry variableRegistry) {
+ this(component,null,stateManager,variableRegistry);
+ }
+
+ /**
+ * Creates a new MockProcessContext for the given Processor with given name
+ *
+ * @param component being mocked
+ * @param componentName the name to be given the component;
+ * @param stateManager state manager
+ * @param variableRegistry variableRegistry
+ */
+ public MockProcessContext(final ConfigurableComponent component,
+ final String componentName,
+ final StateManager stateManager,
+ final VariableRegistry variableRegistry) {
this.component = Objects.requireNonNull(component);
+ this.componentName = componentName == null ? "" : componentName;
this.inputRequirement = component.getClass().getAnnotation(InputRequirement.class);
this.stateManager = stateManager;
this.variableRegistry = variableRegistry;
}
- public MockProcessContext(final ControllerService component, final MockProcessContext context, final StateManager stateManager, final VariableRegistry variableRegistry) {
- this(component, stateManager, variableRegistry);
+ public MockProcessContext(final ControllerService component,
+ final MockProcessContext context,
+ final StateManager stateManager,
+ final VariableRegistry variableRegistry) {
+ this(component, null, context, stateManager, variableRegistry);
+ }
+
+ public MockProcessContext(final ControllerService component,
+ final String componentName,
+ final MockProcessContext context,
+ final StateManager stateManager,
+ final VariableRegistry variableRegistry) {
+ this(component, componentName, stateManager, variableRegistry);
try {
annotationData = context.getControllerServiceAnnotationData(component);
@@ -463,7 +495,7 @@ public class MockProcessContext extends MockControllerServiceLookup implements S
@Override
public String getName() {
- return "";
+ return componentName;
}
protected void setMaxConcurrentTasks(int maxConcurrentTasks) {
http://git-wip-us.apache.org/repos/asf/nifi/blob/3746ae25/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
----------------------------------------------------------------------
diff --git a/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java b/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
index 3a9babb..aca9258 100644
--- a/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
+++ b/nifi-mock/src/main/java/org/apache/nifi/util/StandardProcessorTestRunner.java
@@ -95,6 +95,10 @@ public class StandardProcessorTestRunner implements TestRunner {
private boolean enforceReadStreamsClosed = true;
StandardProcessorTestRunner(final Processor processor) {
+ this(processor, null);
+ }
+
+ StandardProcessorTestRunner(final Processor processor, String processorName) {
this.processor = processor;
this.idGenerator = new AtomicLong(0L);
this.sharedState = new SharedSessionState(processor, idGenerator);
@@ -102,7 +106,7 @@ public class StandardProcessorTestRunner implements TestRunner {
this.sessionFactory = new MockSessionFactory(sharedState, processor, enforceReadStreamsClosed);
this.processorStateManager = new MockStateManager(processor);
this.variableRegistry = new MockVariableRegistry();
- this.context = new MockProcessContext(processor, processorStateManager, variableRegistry);
+ this.context = new MockProcessContext(processor, processorName, processorStateManager, variableRegistry);
final MockProcessorInitializationContext mockInitContext = new MockProcessorInitializationContext(processor, context);
processor.initialize(mockInitContext);
http://git-wip-us.apache.org/repos/asf/nifi/blob/3746ae25/nifi-mock/src/main/java/org/apache/nifi/util/TestRunners.java
----------------------------------------------------------------------
diff --git a/nifi-mock/src/main/java/org/apache/nifi/util/TestRunners.java b/nifi-mock/src/main/java/org/apache/nifi/util/TestRunners.java
index f473b05..cff907c 100644
--- a/nifi-mock/src/main/java/org/apache/nifi/util/TestRunners.java
+++ b/nifi-mock/src/main/java/org/apache/nifi/util/TestRunners.java
@@ -20,13 +20,47 @@ import org.apache.nifi.processor.Processor;
public class TestRunners {
+ /**
+ * Returns a {@code TestRunner} for the given {@code Processor}.
+ * The processor name available from {@code TestRunner.getProcessContext().getName()} will have the default name of {@code processor.getClass().getName()}
+ * @param processor the {@code Processor} under test
+ * @return a {@code TestRunner}
+ */
public static TestRunner newTestRunner(final Processor processor) {
- return new StandardProcessorTestRunner(processor);
+ return newTestRunner(processor,processor.getClass().getName());
}
+ /**
+ * Returns a {@code TestRunner} for the given {@code Processor}.
+ * The processor name available from {@code TestRunner.getProcessContext().getName()} will be the passed name.
+ * @param processor the {@code Processor} under test
+ * @param name the name to give the {@code Processor}
+ * @return a {@code TestRunner}
+ */
+ public static TestRunner newTestRunner(final Processor processor, String name) {
+ return new StandardProcessorTestRunner(processor, name);
+ }
+
+ /**
+ * Returns a {@code TestRunner} for the given {@code Processor} class.
+ * The processor name available from {@code TestRunner.getProcessContext().getName()} will have the default name of {@code processor.getClass().getName()}
+ * @param processorClass the {@code Processor} class
+ * @return a {@code TestRunner}
+ */
public static TestRunner newTestRunner(final Class<? extends Processor> processorClass) {
+ return newTestRunner(processorClass, processorClass.getName());
+ }
+
+ /**
+ * Returns a {@code TestRunner} for the given {@code Processor} class.
+ * The processor name available from {@code TestRunner.getProcessContext().getName()} will have the default name of {@code processor.getClass().getName()}
+ * @param processorClass the {@code Processor} class
+ * @param name the name to give the {@code Processor}
+ * @return a {@code TestRunner}
+ */
+ public static TestRunner newTestRunner(final Class<? extends Processor> processorClass, String name) {
try {
- return newTestRunner(processorClass.newInstance());
+ return newTestRunner(processorClass.newInstance(), name);
} catch (final Exception e) {
System.err.println("Could not instantiate instance of class " + processorClass.getName() + " due to: " + e);
throw new RuntimeException(e);
http://git-wip-us.apache.org/repos/asf/nifi/blob/3746ae25/nifi-mock/src/test/java/org/apache/nifi/util/TestStandardProcessorTestRunner.java
----------------------------------------------------------------------
diff --git a/nifi-mock/src/test/java/org/apache/nifi/util/TestStandardProcessorTestRunner.java b/nifi-mock/src/test/java/org/apache/nifi/util/TestStandardProcessorTestRunner.java
index d2572fa..134d2b8 100644
--- a/nifi-mock/src/test/java/org/apache/nifi/util/TestStandardProcessorTestRunner.java
+++ b/nifi-mock/src/test/java/org/apache/nifi/util/TestStandardProcessorTestRunner.java
@@ -208,6 +208,13 @@ public class TestStandardProcessorTestRunner {
}
@Test
+ public void testProcessorNameShouldBeSet() {
+ final AddAttributeProcessor proc = new AddAttributeProcessor();
+ final TestRunner runner = TestRunners.newTestRunner(proc, "TestName");
+ assertEquals("TestName",runner.getProcessContext().getName());
+ }
+
+ @Test
public void testProcessorInvalidWhenControllerServiceDisabled() {
final ControllerService testService = new RequiredPropertyTestService();
final AddAttributeProcessor proc = new AddAttributeProcessor();