This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 40b343ff08 NIFI-15297 Support setting configuredForClustering in mock
contexts
40b343ff08 is described below
commit 40b343ff0876b18f0e66cd701c8db54814aca37e
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]>
---
...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;
+ }
+ }
}