You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2015/02/19 21:56:39 UTC
incubator-nifi git commit: NIFI-250: Fixed bug that occurred in
refactoring
Repository: incubator-nifi
Updated Branches:
refs/heads/NIFI-250 be00d0caf -> a227fe46b
NIFI-250: Fixed bug that occurred in refactoring
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/a227fe46
Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/a227fe46
Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/a227fe46
Branch: refs/heads/NIFI-250
Commit: a227fe46b542fdcd6dd6fe57f11d678da237bc98
Parents: be00d0c
Author: Mark Payne <ma...@hotmail.com>
Authored: Thu Feb 19 15:56:38 2015 -0500
Committer: Mark Payne <ma...@hotmail.com>
Committed: Thu Feb 19 15:56:38 2015 -0500
----------------------------------------------------------------------
.../StandardControllerServiceProvider.java | 8 ++-
.../TestStandardControllerServiceProvider.java | 51 +++++++++++++++-----
2 files changed, 44 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/a227fe46/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java
index 74f11fb..79132b1 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java
@@ -405,13 +405,17 @@ public class StandardControllerServiceProvider implements ControllerServiceProvi
}
private void enableReferencingServices(final ControllerServiceNode serviceNode, final List<ControllerServiceNode> recursiveReferences) {
- serviceNode.verifyCanEnable(new HashSet<>(recursiveReferences));
+ if ( serviceNode.getState() != ControllerServiceState.ENABLED && serviceNode.getState() != ControllerServiceState.ENABLING ) {
+ serviceNode.verifyCanEnable(new HashSet<>(recursiveReferences));
+ }
+ final Set<ControllerServiceNode> ifEnabled = new HashSet<>();
final List<ControllerServiceNode> toEnable = findRecursiveReferences(serviceNode, ControllerServiceNode.class);
for ( final ControllerServiceNode nodeToEnable : toEnable ) {
final ControllerServiceState state = nodeToEnable.getState();
if ( state != ControllerServiceState.ENABLED && state != ControllerServiceState.ENABLING ) {
- nodeToEnable.verifyCanEnable();
+ nodeToEnable.verifyCanEnable(ifEnabled);
+ ifEnabled.add(nodeToEnable);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/a227fe46/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/service/TestStandardControllerServiceProvider.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/service/TestStandardControllerServiceProvider.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/service/TestStandardControllerServiceProvider.java
index 66abf30..46dd885 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/service/TestStandardControllerServiceProvider.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/service/TestStandardControllerServiceProvider.java
@@ -40,9 +40,34 @@ import org.mockito.stubbing.Answer;
public class TestStandardControllerServiceProvider {
+ private ProcessScheduler createScheduler() {
+ final ProcessScheduler scheduler = Mockito.mock(ProcessScheduler.class);
+ Mockito.doAnswer(new Answer<Object>() {
+ @Override
+ public Object answer(final InvocationOnMock invocation) throws Throwable {
+ final ControllerServiceNode node = (ControllerServiceNode) invocation.getArguments()[0];
+ node.verifyCanEnable();
+ node.setState(ControllerServiceState.ENABLED);
+ return null;
+ }
+ }).when(scheduler).enableControllerService(Mockito.any(ControllerServiceNode.class));
+
+ Mockito.doAnswer(new Answer<Object>() {
+ @Override
+ public Object answer(final InvocationOnMock invocation) throws Throwable {
+ final ControllerServiceNode node = (ControllerServiceNode) invocation.getArguments()[0];
+ node.verifyCanDisable();
+ node.setState(ControllerServiceState.DISABLED);
+ return null;
+ }
+ }).when(scheduler).disableControllerService(Mockito.any(ControllerServiceNode.class));
+
+ return scheduler;
+ }
+
@Test
public void testDisableControllerService() {
- final ProcessScheduler scheduler = Mockito.mock(ProcessScheduler.class);
+ final ProcessScheduler scheduler = createScheduler();
final StandardControllerServiceProvider provider = new StandardControllerServiceProvider(scheduler);
final ControllerServiceNode serviceNode = provider.createControllerService(ServiceB.class.getName(), "B", false);
@@ -52,7 +77,7 @@ public class TestStandardControllerServiceProvider {
@Test
public void testEnableDisableWithReference() {
- final ProcessScheduler scheduler = Mockito.mock(ProcessScheduler.class);
+ final ProcessScheduler scheduler = createScheduler();
final StandardControllerServiceProvider provider = new StandardControllerServiceProvider(scheduler);
final ControllerServiceNode serviceNodeB = provider.createControllerService(ServiceB.class.getName(), "B", false);
@@ -82,7 +107,7 @@ public class TestStandardControllerServiceProvider {
@Test
public void testEnableReferencingServicesGraph() {
- final ProcessScheduler scheduler = Mockito.mock(ProcessScheduler.class);
+ final ProcessScheduler scheduler = createScheduler();
final StandardControllerServiceProvider provider = new StandardControllerServiceProvider(scheduler);
// build a graph of controller services with dependencies as such:
@@ -111,15 +136,15 @@ public class TestStandardControllerServiceProvider {
provider.enableControllerService(serviceNode4);
provider.enableReferencingServices(serviceNode4);
- assertEquals(ControllerServiceState.DISABLED, serviceNode3.getState());
- assertEquals(ControllerServiceState.DISABLED, serviceNode2.getState());
- assertEquals(ControllerServiceState.DISABLED, serviceNode1.getState());
+ assertEquals(ControllerServiceState.ENABLED, serviceNode3.getState());
+ assertEquals(ControllerServiceState.ENABLED, serviceNode2.getState());
+ assertEquals(ControllerServiceState.ENABLED, serviceNode1.getState());
}
@Test
public void testStartStopReferencingComponents() {
- final ProcessScheduler scheduler = Mockito.mock(ProcessScheduler.class);
+ final ProcessScheduler scheduler = createScheduler();
final StandardControllerServiceProvider provider = new StandardControllerServiceProvider(scheduler);
// build a graph of reporting tasks and controller services with dependencies as such:
@@ -184,9 +209,9 @@ public class TestStandardControllerServiceProvider {
provider.enableReferencingServices(serviceNode4);
provider.scheduleReferencingComponents(serviceNode4);
- assertEquals(ControllerServiceState.DISABLED, serviceNode3.getState());
- assertEquals(ControllerServiceState.DISABLED, serviceNode2.getState());
- assertEquals(ControllerServiceState.DISABLED, serviceNode1.getState());
+ assertEquals(ControllerServiceState.ENABLED, serviceNode3.getState());
+ assertEquals(ControllerServiceState.ENABLED, serviceNode2.getState());
+ assertEquals(ControllerServiceState.ENABLED, serviceNode1.getState());
assertTrue(procNodeA.isRunning());
assertTrue(procNodeB.isRunning());
@@ -194,9 +219,9 @@ public class TestStandardControllerServiceProvider {
provider.unscheduleReferencingComponents(serviceNode4);
assertFalse(procNodeA.isRunning());
assertFalse(procNodeB.isRunning());
- assertEquals(ControllerServiceState.DISABLED, serviceNode3.getState());
- assertEquals(ControllerServiceState.DISABLED, serviceNode2.getState());
- assertEquals(ControllerServiceState.DISABLED, serviceNode1.getState());
+ assertEquals(ControllerServiceState.ENABLED, serviceNode3.getState());
+ assertEquals(ControllerServiceState.ENABLED, serviceNode2.getState());
+ assertEquals(ControllerServiceState.ENABLED, serviceNode1.getState());
provider.disableReferencingServices(serviceNode4);
assertEquals(ControllerServiceState.DISABLED, serviceNode3.getState());