You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ex...@apache.org on 2025/12/10 18:56:15 UTC
(nifi) 02/03: NIFI-15297 Support setting configuredForClustering in mock contexts
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 <ad...@gmail.com>
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 <ex...@apache.org>
(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;
+ }
+ }
}