This is an automated email from the ASF dual-hosted git repository. exceptionfactory pushed a commit to branch NIFI-15318-1 in repository https://gitbox.apache.org/repos/asf/nifi.git
commit eeec3c4f24222c9dae128c614261604ba92d3205 Author: Adela Jaworowska-Nowak <[email protected]> AuthorDate: Mon Dec 8 09:27:15 2025 +0100 NIFI-15297 Support setting configuredForClustering in mock contexts This closes #10615 Signed-off-by: David Handermann <[email protected]> (cherry picked from commit 40b343ff0876b18f0e66cd701c8db54814aca37e) --- ...MockControllerServiceInitializationContext.java | 10 ++++++++ .../nifi/util/StandardProcessorTestRunner.java | 1 + .../nifi/util/TestStandardProcessorTestRunner.java | 29 ++++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java b/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java index 021bdc2459..ba3beda870 100644 --- a/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java +++ b/nifi-mock/src/main/java/org/apache/nifi/util/MockControllerServiceInitializationContext.java @@ -33,6 +33,7 @@ public class MockControllerServiceInitializationContext extends MockControllerSe private final ComponentLog logger; private final StateManager stateManager; private volatile boolean isClustered; + private volatile boolean isConfiguredForClustering = false; private volatile boolean isPrimaryNode; private final KerberosContext kerberosContext; @@ -107,6 +108,11 @@ public class MockControllerServiceInitializationContext extends MockControllerSe return isClustered; } + @Override + public boolean isConfiguredForClustering() { + return isConfiguredForClustering; + } + @Override public boolean isPrimary() { return isPrimaryNode; @@ -116,6 +122,10 @@ public class MockControllerServiceInitializationContext extends MockControllerSe isClustered = clustered; } + public void setConfiguredForClustering(final boolean configuredForClustering) { + this.isConfiguredForClustering = configuredForClustering; + } + public void setPrimaryNode(boolean primaryNode) { if (!isClustered && primaryNode) { throw new IllegalArgumentException("Primary node is only available in cluster. Use setClustered(true) first."); 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 a8b69a2277..433c52172c 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 @@ -692,6 +692,7 @@ public class StandardProcessorTestRunner implements TestRunner { final MockControllerServiceInitializationContext initContext = new MockControllerServiceInitializationContext( Objects.requireNonNull(service), Objects.requireNonNull(identifier), mockComponentLog, serviceStateManager, kerberosContext); controllerServiceStateManagers.put(identifier, serviceStateManager); + initContext.setConfiguredForClustering(context.isConfiguredForClustering()); initContext.addControllerServices(context); service.initialize(initContext); 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 11b9dc0b27..2befa6a280 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 @@ -21,6 +21,7 @@ import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.components.ValidationResult; import org.apache.nifi.controller.AbstractControllerService; import org.apache.nifi.controller.ControllerService; +import org.apache.nifi.controller.ControllerServiceInitializationContext; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; @@ -376,4 +377,32 @@ public class TestStandardProcessorTestRunner { assertTrue(msg.getMsg().contains("expected test error")); assertNotNull(msg.getThrowable()); } + + @Test + public void testControllerServiceReceivesConfiguredForClusteringSetting() throws InitializationException { + final ClusterAwareTestService testService = new ClusterAwareTestService(); + final AddAttributeProcessor proc = new AddAttributeProcessor(); + final TestRunner runner = TestRunners.newTestRunner(proc); + + assertFalse(testService.isConfiguredForClustering()); + + runner.setIsConfiguredForClustering(true); + runner.addControllerService("clusterService", testService); + + assertTrue(testService.isConfiguredForClustering()); + } + + private static class ClusterAwareTestService extends AbstractControllerService { + private boolean configuredForClustering = false; + + @Override + protected void init(final ControllerServiceInitializationContext context) { + // Capture the value during initialization + this.configuredForClustering = context.getNodeTypeProvider().isConfiguredForClustering(); + } + + public boolean isConfiguredForClustering() { + return configuredForClustering; + } + } }
