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;
+        }
+    }
 }

Reply via email to