You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2017/04/27 21:03:34 UTC

[2/4] nifi-minifi git commit: MINIFI-279: Makes test classes naming consistent.

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/b059afef/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/status/StatusConfigReporterTest.java
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/status/StatusConfigReporterTest.java b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/status/StatusConfigReporterTest.java
new file mode 100644
index 0000000..171400a
--- /dev/null
+++ b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/status/StatusConfigReporterTest.java
@@ -0,0 +1,875 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.minifi.status;
+
+import org.apache.nifi.components.ValidationResult;
+import org.apache.nifi.controller.ConfiguredComponent;
+import org.apache.nifi.controller.FlowController;
+import org.apache.nifi.controller.ProcessorNode;
+import org.apache.nifi.controller.ReportingTaskNode;
+import org.apache.nifi.controller.ScheduledState;
+import org.apache.nifi.controller.service.ControllerServiceNode;
+import org.apache.nifi.controller.service.ControllerServiceState;
+import org.apache.nifi.controller.status.ConnectionStatus;
+import org.apache.nifi.controller.status.ProcessGroupStatus;
+import org.apache.nifi.controller.status.ProcessorStatus;
+import org.apache.nifi.controller.status.RemoteProcessGroupStatus;
+import org.apache.nifi.controller.status.RunStatus;
+import org.apache.nifi.controller.status.TransmissionStatus;
+import org.apache.nifi.diagnostics.GarbageCollection;
+import org.apache.nifi.diagnostics.StorageUsage;
+import org.apache.nifi.diagnostics.SystemDiagnostics;
+import org.apache.nifi.groups.ProcessGroup;
+import org.apache.nifi.groups.RemoteProcessGroup;
+import org.apache.nifi.minifi.commons.status.FlowStatusReport;
+import org.apache.nifi.remote.RemoteGroupPort;
+import org.apache.nifi.reporting.Bulletin;
+import org.apache.nifi.reporting.BulletinQuery;
+import org.apache.nifi.reporting.BulletinRepository;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addConnectionStatus;
+import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addControllerServiceStatus;
+import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addExpectedRemoteProcessGroupStatus;
+import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addInstanceStatus;
+import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addProcessorStatus;
+import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addReportingTaskStatus;
+import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addSystemDiagnosticStatus;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class StatusConfigReporterTest {
+    private FlowController mockFlowController;
+    private ProcessGroupStatus rootGroupStatus;
+    private BulletinRepository bulletinRepo;
+    private ProcessGroup processGroup;
+
+    @Before
+    public void setup() {
+        mockFlowController = mock(FlowController.class);
+        rootGroupStatus = mock(ProcessGroupStatus.class);
+        bulletinRepo = mock(BulletinRepository.class);
+        processGroup = mock(ProcessGroup.class);
+
+        when(mockFlowController.getRootGroupId()).thenReturn("root");
+        when(mockFlowController.getGroupStatus("root")).thenReturn(rootGroupStatus);
+        when(mockFlowController.getControllerStatus()).thenReturn(rootGroupStatus);
+        when(mockFlowController.getBulletinRepository()).thenReturn(bulletinRepo);
+        when(mockFlowController.getGroup(mockFlowController.getRootGroupId())).thenReturn(processGroup);
+    }
+
+    @Test
+    public void processorStatusHealth() throws Exception {
+        populateProcessor(false, false);
+
+        String statusRequest = "processor:all:health";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addProcessorStatus(expected, true, false, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void processorStatusWithValidationErrors() throws Exception {
+        populateProcessor(true, false);
+
+        String statusRequest = "processor:all:health";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addProcessorStatus(expected, true, true, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void processorStatusAll() throws Exception {
+        populateProcessor(true, true);
+
+        String statusRequest = "processor:all:health, stats, bulletins";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addProcessorStatus(expected, true, true, true, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void connectionStatusHealth() throws Exception {
+        populateConnection();
+
+        String statusRequest = "connection:all:health";
+        FlowStatusReport status = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addConnectionStatus(expected, true, false);
+
+        assertEquals(expected, status);
+    }
+
+
+    @Test
+    public void connectionStatusAll() throws Exception {
+        populateConnection();
+
+        String statusRequest = "connection:all:health, stats";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+        addConnectionStatus(expected, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void connectionAndProcessorStatusHealth() throws Exception {
+
+        populateConnection();
+
+        populateProcessor(false, false);
+
+        String statusRequest = "connection:connectionId:health; processor:UpdateAttributeProcessorId:health";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        addConnectionStatus(expected, true, false);
+
+        addProcessorStatus(expected, true, false, false, false, false);
+
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void provenanceReportingTaskStatusHealth() throws Exception {
+        populateReportingTask(false, false);
+
+        String statusRequest = "provenanceReporting:health";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+        addReportingTaskStatus(expected, true, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+
+    @Test
+    public void provenanceReportingTaskStatusBulletins() throws Exception {
+        populateReportingTask(true, false);
+
+        String statusRequest = "provenanceReporting:bulletins";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addReportingTaskStatus(expected, false, false, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void provenanceReportingTaskStatusAll() throws Exception {
+        populateReportingTask(true, true);
+
+        String statusRequest = "provenanceReporting:health,bulletins";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addReportingTaskStatus(expected, true, true, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void systemDiagnosticHeap() throws Exception {
+        populateSystemDiagnostics();
+
+        String statusRequest = "systemDiagnostics:heap";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addSystemDiagnosticStatus(expected, true, false, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void systemDiagnosticProcessorStats() throws Exception {
+        populateSystemDiagnostics();
+
+        String statusRequest = "systemDiagnostics:processorStats";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addSystemDiagnosticStatus(expected, false, true, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void systemDiagnosticFlowFileRepo() throws Exception {
+        populateSystemDiagnostics();
+
+        String statusRequest = "systemDiagnostics:flowfilerepositoryusage";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addSystemDiagnosticStatus(expected, false, false, true, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void systemDiagnosticContentRepo() throws Exception {
+        populateSystemDiagnostics();
+
+        String statusRequest = "systemDiagnostics:contentrepositoryusage";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addSystemDiagnosticStatus(expected, false, false, false, true, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void systemDiagnosticGarbageCollection() throws Exception {
+        populateSystemDiagnostics();
+
+        String statusRequest = "systemDiagnostics:garbagecollection";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addSystemDiagnosticStatus(expected, false, false, false, false, true);
+
+        assertEquals(expected, actual);
+    }
+
+
+    @Test
+    public void systemDiagnosticAll() throws Exception {
+        populateSystemDiagnostics();
+
+        String statusRequest = "systemDiagnostics:garbagecollection, heap, processorstats, contentrepositoryusage, flowfilerepositoryusage";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addSystemDiagnosticStatus(expected, true, true, true, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void instanceStatusHealth() throws Exception {
+        populateInstance(false);
+
+        String statusRequest = "instance:health";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+        addInstanceStatus(expected, true, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void instanceStatusBulletins() throws Exception {
+        populateInstance(true);
+
+        String statusRequest = "instance:bulletins";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addInstanceStatus(expected, false, false, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void instanceStatusStats() throws Exception {
+        populateInstance(false);
+
+        String statusRequest = "instance:stats";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addInstanceStatus(expected, false, true, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void instanceStatusAll() throws Exception {
+        populateInstance(true);
+
+        String statusRequest = "instance:stats, bulletins, health";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addInstanceStatus(expected, true, true, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void controllerServiceStatusHealth() throws Exception {
+        populateControllerService(false, false);
+
+        String statusRequest = "controllerServices:health";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addControllerServiceStatus(expected, true, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void controllerServiceStatusBulletins() throws Exception {
+        populateControllerService(false, true);
+
+        String statusRequest = "controllerServices:bulletins";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addControllerServiceStatus(expected, false, false, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void controllerServiceStatusAll() throws Exception {
+        populateControllerService(true, true);
+
+        String statusRequest = "controllerServices:bulletins, health";
+
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addControllerServiceStatus(expected, true, true, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void remoteProcessGroupStatusHealth() throws Exception {
+        populateRemoteProcessGroup(false, false);
+
+        String statusRequest = "remoteProcessGroup:all:health";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addExpectedRemoteProcessGroupStatus(expected, true, false, false, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void remoteProcessGroupStatusBulletins() throws Exception {
+        populateRemoteProcessGroup(true, false);
+
+        String statusRequest = "remoteProcessGroup:all:bulletins";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addExpectedRemoteProcessGroupStatus(expected, false, false, false, false, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void remoteProcessGroupStatusInputPorts() throws Exception {
+        populateRemoteProcessGroup(false, false);
+
+        String statusRequest = "remoteProcessGroup:all:inputPorts";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addExpectedRemoteProcessGroupStatus(expected, false, true, false, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void remoteProcessGroupStatusOutputPorts() throws Exception {
+        populateRemoteProcessGroup(false, false);
+
+        String statusRequest = "remoteProcessGroup:all:outputPorts";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addExpectedRemoteProcessGroupStatus(expected, false, false, true, false, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void remoteProcessGroupStatusStats() throws Exception {
+        populateRemoteProcessGroup(false, false);
+
+        String statusRequest = "remoteProcessGroup:all:stats";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addExpectedRemoteProcessGroupStatus(expected, false, false, false, true, false, false);
+
+        assertEquals(expected, actual);
+    }
+
+
+    @Test
+    public void remoteProcessGroupStatusAll() throws Exception {
+        populateRemoteProcessGroup(true, true);
+
+        String statusRequest = "remoteProcessGroup:all:health, bulletins, inputPorts, outputPorts, stats";
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addExpectedRemoteProcessGroupStatus(expected, true, true, true, true, true, true);
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void statusEverything() throws Exception {
+        when(bulletinRepo.findBulletins(anyObject())).thenReturn(Collections.emptyList());
+
+        populateControllerService(true, false);
+        populateInstance(true);
+        populateSystemDiagnostics();
+        populateReportingTask(false, true);
+        populateConnection();
+        populateProcessor(true, false);
+        populateRemoteProcessGroup(false, true);
+
+        String statusRequest = "controllerServices:bulletins,health; processor:all:health,stats,bulletins; instance:bulletins,health,stats ; systemDiagnostics:garbagecollection, heap, " +
+                "processorstats, contentrepositoryusage, flowfilerepositoryusage; connection:all:health,stats; provenanceReporting:health,bulletins; remoteProcessGroup:all:health, " +
+                "bulletins, inputPorts, outputPorts, stats";
+
+        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(StatusConfigReporterTest.class));
+
+        FlowStatusReport expected = new FlowStatusReport();
+        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
+
+        addControllerServiceStatus(expected, true, true, true, false);
+        addInstanceStatus(expected, true, true, true, true);
+        addSystemDiagnosticStatus(expected, true, true, true, true, true);
+        addReportingTaskStatus(expected, true, true, true, false);
+        addConnectionStatus(expected, true, true);
+        addProcessorStatus(expected, true, true, true, true, false);
+        addExpectedRemoteProcessGroupStatus(expected, true, true, true, true, true, false);
+
+        assertEquals(expected, actual);
+    }
+
+
+    /***************************
+     * Populator methods
+     *************************/
+
+    private void addBulletinsToInstance() {
+        Bulletin bulletin = mock(Bulletin.class);
+        when(bulletin.getTimestamp()).thenReturn(new Date(1464019245000L));
+        when(bulletin.getMessage()).thenReturn("Bulletin message");
+
+        List<Bulletin> bulletinList = new ArrayList<>();
+        bulletinList.add(bulletin);
+
+        when(bulletinRepo.findBulletinsForController()).thenReturn(bulletinList);
+    }
+
+    private void populateSystemDiagnostics() {
+        SystemDiagnostics systemDiagnostics = new SystemDiagnostics();
+        addGarbageCollectionToSystemDiagnostics(systemDiagnostics);
+        addHeapSystemDiagnostics(systemDiagnostics);
+        addContentRepoToSystemDiagnostics(systemDiagnostics);
+        addFlowFileRepoToSystemDiagnostics(systemDiagnostics);
+        addProcessorInfoToSystemDiagnostics(systemDiagnostics);
+        when(mockFlowController.getSystemDiagnostics()).thenReturn(systemDiagnostics);
+    }
+
+    private void populateControllerService(boolean validationErrors, boolean addBulletins) {
+        ControllerServiceNode controllerServiceNode = mock(ControllerServiceNode.class);
+        addControllerServiceHealth(controllerServiceNode);
+        if (validationErrors) {
+            addValidationErrors(controllerServiceNode);
+        }
+
+        if (addBulletins) {
+            addBulletins("Bulletin message", controllerServiceNode.getIdentifier());
+        }
+        HashSet<ControllerServiceNode> controllerServiceNodes = new HashSet<>();
+        controllerServiceNodes.add(controllerServiceNode);
+        when(mockFlowController.getAllControllerServices()).thenReturn(controllerServiceNodes);
+    }
+
+    private void populateInstance(boolean addBulletins) {
+        setRootGroupStatusVariables();
+        if (addBulletins) {
+            addBulletinsToInstance();
+        }
+    }
+
+    private void populateReportingTask(boolean addBulletins, boolean validationErrors) {
+        if (addBulletins) {
+            addBulletins("Bulletin message", "ReportProvenance");
+        }
+
+        ReportingTaskNode reportingTaskNode = mock(ReportingTaskNode.class);
+        addReportingTaskNodeVariables(reportingTaskNode);
+
+        HashSet<ReportingTaskNode> reportingTaskNodes = new HashSet<>();
+        reportingTaskNodes.add(reportingTaskNode);
+
+        when(mockFlowController.getAllReportingTasks()).thenReturn(reportingTaskNodes);
+
+        if (validationErrors) {
+            ValidationResult validationResult = new ValidationResult.Builder()
+                    .input("input")
+                    .subject("subject")
+                    .explanation("is not valid")
+                    .build();
+
+            ValidationResult validationResult2 = new ValidationResult.Builder()
+                    .input("input2")
+                    .subject("subject2")
+                    .explanation("is not valid too")
+                    .build();
+
+            List<ValidationResult> validationResultList = new ArrayList<>();
+            validationResultList.add(validationResult);
+            validationResultList.add(validationResult2);
+
+            when(reportingTaskNode.getValidationErrors()).thenReturn(validationResultList);
+        } else {
+            when(reportingTaskNode.getValidationErrors()).thenReturn(Collections.EMPTY_LIST);
+        }
+    }
+
+    private void populateConnection() {
+        ConnectionStatus connectionStatus = new ConnectionStatus();
+        connectionStatus.setQueuedBytes(100);
+        connectionStatus.setId("connectionId");
+        connectionStatus.setName("connectionId");
+        connectionStatus.setQueuedCount(10);
+        connectionStatus.setInputCount(1);
+        connectionStatus.setInputBytes(2);
+        connectionStatus.setOutputCount(3);
+        connectionStatus.setOutputBytes(4);
+
+        Collection<ConnectionStatus> statusCollection = new ArrayList<>();
+        statusCollection.add(connectionStatus);
+
+        when(rootGroupStatus.getConnectionStatus()).thenReturn(statusCollection);
+    }
+
+    private void populateProcessor(boolean validationErrors, boolean addBulletins) {
+        if (addBulletins) {
+            addBulletins("Bulletin message", "UpdateAttributeProcessorId");
+        }
+
+        ProcessorStatus processorStatus = new ProcessorStatus();
+        processorStatus.setType("org.apache.nifi.processors.attributes.UpdateAttribute");
+        processorStatus.setId("UpdateAttributeProcessorId");
+        processorStatus.setName("UpdateAttributeProcessorId");
+        processorStatus.setRunStatus(RunStatus.Stopped);
+        processorStatus.setActiveThreadCount(1);
+        processorStatus.setFlowFilesReceived(2);
+        processorStatus.setBytesRead(3);
+        processorStatus.setBytesWritten(4);
+        processorStatus.setFlowFilesSent(5);
+        processorStatus.setInvocations(6);
+        processorStatus.setProcessingNanos(7);
+
+        Collection<ProcessorStatus> statusCollection = new ArrayList<>();
+        statusCollection.add(processorStatus);
+
+        mockProcessorEmptyValidation(processorStatus.getId(), processGroup);
+        when(rootGroupStatus.getProcessorStatus()).thenReturn(statusCollection);
+
+        ProcessorNode processorNode = mock(ProcessorNode.class);
+        when(processGroup.getProcessor(processorStatus.getId())).thenReturn(processorNode);
+
+        if (validationErrors) {
+            ValidationResult validationResult = new ValidationResult.Builder()
+                    .input("input")
+                    .subject("subject")
+                    .explanation("is not valid")
+                    .build();
+
+            ValidationResult validationResult2 = new ValidationResult.Builder()
+                    .input("input2")
+                    .subject("subject2")
+                    .explanation("is not valid too")
+                    .build();
+
+            List<ValidationResult> validationResultList = new ArrayList<>();
+            validationResultList.add(validationResult);
+            validationResultList.add(validationResult2);
+
+            when(processorNode.getValidationErrors()).thenReturn(validationResultList);
+        } else {
+            when(processorNode.getValidationErrors()).thenReturn(Collections.EMPTY_LIST);
+        }
+    }
+
+    private void populateRemoteProcessGroup(boolean addBulletins, boolean addAuthIssues) {
+        when(mockFlowController.getGroup(mockFlowController.getRootGroupId())).thenReturn(processGroup);
+
+        RemoteProcessGroup remoteProcessGroup = mock(RemoteProcessGroup.class);
+        when(processGroup.getRemoteProcessGroup(any())).thenReturn(remoteProcessGroup);
+
+        RemoteGroupPort remoteGroupPort = mock(RemoteGroupPort.class);
+        when(remoteGroupPort.getName()).thenReturn("inputPort");
+        when(remoteGroupPort.getTargetExists()).thenReturn(true);
+        when(remoteGroupPort.isTargetRunning()).thenReturn(false);
+
+        when(remoteProcessGroup.getInputPorts()).thenReturn(Collections.singleton(remoteGroupPort));
+
+        remoteGroupPort = mock(RemoteGroupPort.class);
+        when(remoteGroupPort.getName()).thenReturn("outputPort");
+        when(remoteGroupPort.getTargetExists()).thenReturn(true);
+        when(remoteGroupPort.isTargetRunning()).thenReturn(false);
+
+        when(remoteProcessGroup.getOutputPorts()).thenReturn(Collections.singleton(remoteGroupPort));
+
+        RemoteProcessGroupStatus remoteProcessGroupStatus = new RemoteProcessGroupStatus();
+        addRemoteProcessGroupStatus(remoteProcessGroupStatus);
+        if (addBulletins) {
+            addBulletins("Bulletin message", remoteProcessGroupStatus.getId());
+        }
+        when(rootGroupStatus.getRemoteProcessGroupStatus()).thenReturn(Collections.singletonList(remoteProcessGroupStatus));
+    }
+
+
+    private void setRootGroupStatusVariables() {
+        when(rootGroupStatus.getQueuedContentSize()).thenReturn(1L);
+        when(rootGroupStatus.getQueuedCount()).thenReturn(2);
+        when(rootGroupStatus.getActiveThreadCount()).thenReturn(3);
+        when(rootGroupStatus.getBytesRead()).thenReturn(1L);
+        when(rootGroupStatus.getBytesWritten()).thenReturn(2L);
+        when(rootGroupStatus.getBytesSent()).thenReturn(3L);
+        when(rootGroupStatus.getFlowFilesSent()).thenReturn(4);
+        when(rootGroupStatus.getBytesTransferred()).thenReturn(5L);
+        when(rootGroupStatus.getFlowFilesTransferred()).thenReturn(6);
+        when(rootGroupStatus.getBytesReceived()).thenReturn(7L);
+        when(rootGroupStatus.getFlowFilesReceived()).thenReturn(8);
+    }
+
+    private void addGarbageCollectionToSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
+        Map<String, GarbageCollection> garbageCollectionMap = new HashMap<>();
+
+        GarbageCollection garbageCollection1 = new GarbageCollection();
+        garbageCollection1.setCollectionCount(1);
+        garbageCollection1.setCollectionTime(10);
+        garbageCollection1.setName("garbage 1");
+        garbageCollectionMap.put(garbageCollection1.getName(), garbageCollection1);
+
+        systemDiagnostics.setGarbageCollection(garbageCollectionMap);
+    }
+
+    private void addContentRepoToSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
+        Map<String, StorageUsage> stringStorageUsageMap = new HashMap<>();
+
+        StorageUsage repoUsage1 = new StorageUsage();
+        repoUsage1.setFreeSpace(30);
+        repoUsage1.setTotalSpace(100);
+        repoUsage1.setIdentifier("Content repo1");
+        stringStorageUsageMap.put(repoUsage1.getIdentifier(), repoUsage1);
+
+        systemDiagnostics.setContentRepositoryStorageUsage(stringStorageUsageMap);
+    }
+
+    private void addFlowFileRepoToSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
+        StorageUsage repoUsage = new StorageUsage();
+        repoUsage.setFreeSpace(30);
+        repoUsage.setTotalSpace(100);
+        repoUsage.setIdentifier("FlowFile repo");
+        systemDiagnostics.setFlowFileRepositoryStorageUsage(repoUsage);
+    }
+
+    private void addHeapSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
+        systemDiagnostics.setMaxHeap(5);
+        systemDiagnostics.setTotalHeap(3);
+        systemDiagnostics.setUsedHeap(2);
+        systemDiagnostics.setMaxNonHeap(9);
+        systemDiagnostics.setTotalNonHeap(8);
+        systemDiagnostics.setUsedNonHeap(6);
+    }
+
+    private void addProcessorInfoToSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
+        systemDiagnostics.setProcessorLoadAverage(80.9);
+        systemDiagnostics.setAvailableProcessors(5);
+    }
+
+    private void mockProcessorEmptyValidation(String id, ProcessGroup processGroup) {
+        ProcessorNode processorNode = mock(ProcessorNode.class);
+        when(processGroup.getProcessor(id)).thenReturn(processorNode);
+        when(processorNode.getValidationErrors()).thenReturn(Collections.emptyList());
+    }
+
+    private void addControllerServiceHealth(ControllerServiceNode controllerServiceNode) {
+        when(controllerServiceNode.getName()).thenReturn("mockControllerService");
+        when(controllerServiceNode.getIdentifier()).thenReturn("mockControllerService");
+        when(controllerServiceNode.getState()).thenReturn(ControllerServiceState.ENABLED);
+        when(controllerServiceNode.getValidationErrors()).thenReturn(Collections.emptyList());
+    }
+
+    private void addReportingTaskNodeVariables(ReportingTaskNode reportingTaskNode) {
+        when(reportingTaskNode.getValidationErrors()).thenReturn(Collections.emptyList());
+        when(reportingTaskNode.getActiveThreadCount()).thenReturn(1);
+        when(reportingTaskNode.getScheduledState()).thenReturn(ScheduledState.RUNNING);
+        when(reportingTaskNode.getIdentifier()).thenReturn("ReportProvenance");
+        when(reportingTaskNode.getName()).thenReturn("ReportProvenance");
+
+    }
+
+    private void addRemoteProcessGroupStatus(RemoteProcessGroupStatus remoteProcessGroupStatus) {
+        remoteProcessGroupStatus.setName("rpg1");
+        remoteProcessGroupStatus.setId("rpg1");
+        remoteProcessGroupStatus.setTransmissionStatus(TransmissionStatus.Transmitting);
+        remoteProcessGroupStatus.setActiveRemotePortCount(1);
+        remoteProcessGroupStatus.setInactiveRemotePortCount(2);
+
+        remoteProcessGroupStatus.setActiveThreadCount(3);
+        remoteProcessGroupStatus.setSentContentSize(4L);
+        remoteProcessGroupStatus.setSentCount(5);
+    }
+
+    private void addBulletins(String message, String sourceId) {
+        Bulletin bulletin = mock(Bulletin.class);
+        when(bulletin.getTimestamp()).thenReturn(new Date(1464019245000L));
+        when(bulletin.getMessage()).thenReturn(message);
+
+        List<Bulletin> bulletinList = new ArrayList<>();
+        bulletinList.add(bulletin);
+
+        BulletinQueryAnswer bulletinQueryAnswer = new BulletinQueryAnswer(sourceId, bulletinList);
+        when(bulletinRepo.findBulletins(anyObject())).then(bulletinQueryAnswer);
+    }
+
+    private void addValidationErrors(ConfiguredComponent connectable) {
+        ValidationResult validationResult = new ValidationResult.Builder()
+                .input("input")
+                .subject("subject")
+                .explanation("is not valid")
+                .build();
+
+        ValidationResult validationResult2 = new ValidationResult.Builder()
+                .input("input2")
+                .subject("subject2")
+                .explanation("is not valid too")
+                .build();
+
+        List<ValidationResult> validationResultList = new ArrayList<>();
+        validationResultList.add(validationResult);
+        validationResultList.add(validationResult2);
+        when(connectable.getValidationErrors()).thenReturn(validationResultList);
+    }
+
+    private class BulletinQueryAnswer implements Answer {
+
+        final List<Bulletin> bulletinList;
+        String idToMatch = "";
+
+        private BulletinQueryAnswer(String idToMatch, List<Bulletin> bulletinList) {
+            this.idToMatch = idToMatch;
+            this.bulletinList = bulletinList;
+        }
+
+        @Override
+        public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+            BulletinQuery bulletinQuery = (BulletinQuery) invocationOnMock.getArguments()[0];
+            if (idToMatch.equals(bulletinQuery.getSourceIdPattern().toString())) {
+                return bulletinList;
+            }
+            return Collections.emptyList();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/b059afef/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/status/TestStatusConfigReporter.java
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/status/TestStatusConfigReporter.java b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/status/TestStatusConfigReporter.java
deleted file mode 100644
index ee2f115..0000000
--- a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/status/TestStatusConfigReporter.java
+++ /dev/null
@@ -1,875 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nifi.minifi.status;
-
-import org.apache.nifi.components.ValidationResult;
-import org.apache.nifi.controller.ConfiguredComponent;
-import org.apache.nifi.controller.FlowController;
-import org.apache.nifi.controller.ProcessorNode;
-import org.apache.nifi.controller.ReportingTaskNode;
-import org.apache.nifi.controller.ScheduledState;
-import org.apache.nifi.controller.service.ControllerServiceNode;
-import org.apache.nifi.controller.service.ControllerServiceState;
-import org.apache.nifi.controller.status.ConnectionStatus;
-import org.apache.nifi.controller.status.ProcessGroupStatus;
-import org.apache.nifi.controller.status.ProcessorStatus;
-import org.apache.nifi.controller.status.RemoteProcessGroupStatus;
-import org.apache.nifi.controller.status.RunStatus;
-import org.apache.nifi.controller.status.TransmissionStatus;
-import org.apache.nifi.diagnostics.GarbageCollection;
-import org.apache.nifi.diagnostics.StorageUsage;
-import org.apache.nifi.diagnostics.SystemDiagnostics;
-import org.apache.nifi.groups.ProcessGroup;
-import org.apache.nifi.groups.RemoteProcessGroup;
-import org.apache.nifi.minifi.commons.status.FlowStatusReport;
-import org.apache.nifi.remote.RemoteGroupPort;
-import org.apache.nifi.reporting.Bulletin;
-import org.apache.nifi.reporting.BulletinQuery;
-import org.apache.nifi.reporting.BulletinRepository;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addConnectionStatus;
-import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addControllerServiceStatus;
-import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addExpectedRemoteProcessGroupStatus;
-import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addInstanceStatus;
-import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addProcessorStatus;
-import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addReportingTaskStatus;
-import static org.apache.nifi.minifi.commons.status.util.StatusReportPopulator.addSystemDiagnosticStatus;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class TestStatusConfigReporter {
-    private FlowController mockFlowController;
-    private ProcessGroupStatus rootGroupStatus;
-    private BulletinRepository bulletinRepo;
-    private ProcessGroup processGroup;
-
-    @Before
-    public void setup() {
-        mockFlowController = mock(FlowController.class);
-        rootGroupStatus = mock(ProcessGroupStatus.class);
-        bulletinRepo = mock(BulletinRepository.class);
-        processGroup = mock(ProcessGroup.class);
-
-        when(mockFlowController.getRootGroupId()).thenReturn("root");
-        when(mockFlowController.getGroupStatus("root")).thenReturn(rootGroupStatus);
-        when(mockFlowController.getControllerStatus()).thenReturn(rootGroupStatus);
-        when(mockFlowController.getBulletinRepository()).thenReturn(bulletinRepo);
-        when(mockFlowController.getGroup(mockFlowController.getRootGroupId())).thenReturn(processGroup);
-    }
-
-    @Test
-    public void processorStatusHealth() throws Exception {
-        populateProcessor(false, false);
-
-        String statusRequest = "processor:all:health";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addProcessorStatus(expected, true, false, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void processorStatusWithValidationErrors() throws Exception {
-        populateProcessor(true, false);
-
-        String statusRequest = "processor:all:health";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addProcessorStatus(expected, true, true, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void processorStatusAll() throws Exception {
-        populateProcessor(true, true);
-
-        String statusRequest = "processor:all:health, stats, bulletins";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addProcessorStatus(expected, true, true, true, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void connectionStatusHealth() throws Exception {
-        populateConnection();
-
-        String statusRequest = "connection:all:health";
-        FlowStatusReport status = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addConnectionStatus(expected, true, false);
-
-        assertEquals(expected, status);
-    }
-
-
-    @Test
-    public void connectionStatusAll() throws Exception {
-        populateConnection();
-
-        String statusRequest = "connection:all:health, stats";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-        addConnectionStatus(expected, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void connectionAndProcessorStatusHealth() throws Exception {
-
-        populateConnection();
-
-        populateProcessor(false, false);
-
-        String statusRequest = "connection:connectionId:health; processor:UpdateAttributeProcessorId:health";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        addConnectionStatus(expected, true, false);
-
-        addProcessorStatus(expected, true, false, false, false, false);
-
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void provenanceReportingTaskStatusHealth() throws Exception {
-        populateReportingTask(false, false);
-
-        String statusRequest = "provenanceReporting:health";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-        addReportingTaskStatus(expected, true, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-
-    @Test
-    public void provenanceReportingTaskStatusBulletins() throws Exception {
-        populateReportingTask(true, false);
-
-        String statusRequest = "provenanceReporting:bulletins";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addReportingTaskStatus(expected, false, false, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void provenanceReportingTaskStatusAll() throws Exception {
-        populateReportingTask(true, true);
-
-        String statusRequest = "provenanceReporting:health,bulletins";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addReportingTaskStatus(expected, true, true, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void systemDiagnosticHeap() throws Exception {
-        populateSystemDiagnostics();
-
-        String statusRequest = "systemDiagnostics:heap";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addSystemDiagnosticStatus(expected, true, false, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void systemDiagnosticProcessorStats() throws Exception {
-        populateSystemDiagnostics();
-
-        String statusRequest = "systemDiagnostics:processorStats";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addSystemDiagnosticStatus(expected, false, true, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void systemDiagnosticFlowFileRepo() throws Exception {
-        populateSystemDiagnostics();
-
-        String statusRequest = "systemDiagnostics:flowfilerepositoryusage";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addSystemDiagnosticStatus(expected, false, false, true, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void systemDiagnosticContentRepo() throws Exception {
-        populateSystemDiagnostics();
-
-        String statusRequest = "systemDiagnostics:contentrepositoryusage";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addSystemDiagnosticStatus(expected, false, false, false, true, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void systemDiagnosticGarbageCollection() throws Exception {
-        populateSystemDiagnostics();
-
-        String statusRequest = "systemDiagnostics:garbagecollection";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addSystemDiagnosticStatus(expected, false, false, false, false, true);
-
-        assertEquals(expected, actual);
-    }
-
-
-    @Test
-    public void systemDiagnosticAll() throws Exception {
-        populateSystemDiagnostics();
-
-        String statusRequest = "systemDiagnostics:garbagecollection, heap, processorstats, contentrepositoryusage, flowfilerepositoryusage";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addSystemDiagnosticStatus(expected, true, true, true, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void instanceStatusHealth() throws Exception {
-        populateInstance(false);
-
-        String statusRequest = "instance:health";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-        addInstanceStatus(expected, true, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void instanceStatusBulletins() throws Exception {
-        populateInstance(true);
-
-        String statusRequest = "instance:bulletins";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addInstanceStatus(expected, false, false, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void instanceStatusStats() throws Exception {
-        populateInstance(false);
-
-        String statusRequest = "instance:stats";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addInstanceStatus(expected, false, true, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void instanceStatusAll() throws Exception {
-        populateInstance(true);
-
-        String statusRequest = "instance:stats, bulletins, health";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addInstanceStatus(expected, true, true, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void controllerServiceStatusHealth() throws Exception {
-        populateControllerService(false, false);
-
-        String statusRequest = "controllerServices:health";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addControllerServiceStatus(expected, true, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void controllerServiceStatusBulletins() throws Exception {
-        populateControllerService(false, true);
-
-        String statusRequest = "controllerServices:bulletins";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addControllerServiceStatus(expected, false, false, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void controllerServiceStatusAll() throws Exception {
-        populateControllerService(true, true);
-
-        String statusRequest = "controllerServices:bulletins, health";
-
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addControllerServiceStatus(expected, true, true, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void remoteProcessGroupStatusHealth() throws Exception {
-        populateRemoteProcessGroup(false, false);
-
-        String statusRequest = "remoteProcessGroup:all:health";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addExpectedRemoteProcessGroupStatus(expected, true, false, false, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void remoteProcessGroupStatusBulletins() throws Exception {
-        populateRemoteProcessGroup(true, false);
-
-        String statusRequest = "remoteProcessGroup:all:bulletins";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addExpectedRemoteProcessGroupStatus(expected, false, false, false, false, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void remoteProcessGroupStatusInputPorts() throws Exception {
-        populateRemoteProcessGroup(false, false);
-
-        String statusRequest = "remoteProcessGroup:all:inputPorts";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addExpectedRemoteProcessGroupStatus(expected, false, true, false, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void remoteProcessGroupStatusOutputPorts() throws Exception {
-        populateRemoteProcessGroup(false, false);
-
-        String statusRequest = "remoteProcessGroup:all:outputPorts";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addExpectedRemoteProcessGroupStatus(expected, false, false, true, false, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void remoteProcessGroupStatusStats() throws Exception {
-        populateRemoteProcessGroup(false, false);
-
-        String statusRequest = "remoteProcessGroup:all:stats";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addExpectedRemoteProcessGroupStatus(expected, false, false, false, true, false, false);
-
-        assertEquals(expected, actual);
-    }
-
-
-    @Test
-    public void remoteProcessGroupStatusAll() throws Exception {
-        populateRemoteProcessGroup(true, true);
-
-        String statusRequest = "remoteProcessGroup:all:health, bulletins, inputPorts, outputPorts, stats";
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addExpectedRemoteProcessGroupStatus(expected, true, true, true, true, true, true);
-
-        assertEquals(expected, actual);
-    }
-
-    @Test
-    public void statusEverything() throws Exception {
-        when(bulletinRepo.findBulletins(anyObject())).thenReturn(Collections.emptyList());
-
-        populateControllerService(true, false);
-        populateInstance(true);
-        populateSystemDiagnostics();
-        populateReportingTask(false, true);
-        populateConnection();
-        populateProcessor(true, false);
-        populateRemoteProcessGroup(false, true);
-
-        String statusRequest = "controllerServices:bulletins,health; processor:all:health,stats,bulletins; instance:bulletins,health,stats ; systemDiagnostics:garbagecollection, heap, " +
-                "processorstats, contentrepositoryusage, flowfilerepositoryusage; connection:all:health,stats; provenanceReporting:health,bulletins; remoteProcessGroup:all:health, " +
-                "bulletins, inputPorts, outputPorts, stats";
-
-        FlowStatusReport actual = StatusConfigReporter.getStatus(mockFlowController, statusRequest, LoggerFactory.getLogger(TestStatusConfigReporter.class));
-
-        FlowStatusReport expected = new FlowStatusReport();
-        expected.setErrorsGeneratingReport(Collections.EMPTY_LIST);
-
-        addControllerServiceStatus(expected, true, true, true, false);
-        addInstanceStatus(expected, true, true, true, true);
-        addSystemDiagnosticStatus(expected, true, true, true, true, true);
-        addReportingTaskStatus(expected, true, true, true, false);
-        addConnectionStatus(expected, true, true);
-        addProcessorStatus(expected, true, true, true, true, false);
-        addExpectedRemoteProcessGroupStatus(expected, true, true, true, true, true, false);
-
-        assertEquals(expected, actual);
-    }
-
-
-    /***************************
-     * Populator methods
-     *************************/
-
-    private void addBulletinsToInstance() {
-        Bulletin bulletin = mock(Bulletin.class);
-        when(bulletin.getTimestamp()).thenReturn(new Date(1464019245000L));
-        when(bulletin.getMessage()).thenReturn("Bulletin message");
-
-        List<Bulletin> bulletinList = new ArrayList<>();
-        bulletinList.add(bulletin);
-
-        when(bulletinRepo.findBulletinsForController()).thenReturn(bulletinList);
-    }
-
-    private void populateSystemDiagnostics() {
-        SystemDiagnostics systemDiagnostics = new SystemDiagnostics();
-        addGarbageCollectionToSystemDiagnostics(systemDiagnostics);
-        addHeapSystemDiagnostics(systemDiagnostics);
-        addContentRepoToSystemDiagnostics(systemDiagnostics);
-        addFlowFileRepoToSystemDiagnostics(systemDiagnostics);
-        addProcessorInfoToSystemDiagnostics(systemDiagnostics);
-        when(mockFlowController.getSystemDiagnostics()).thenReturn(systemDiagnostics);
-    }
-
-    private void populateControllerService(boolean validationErrors, boolean addBulletins) {
-        ControllerServiceNode controllerServiceNode = mock(ControllerServiceNode.class);
-        addControllerServiceHealth(controllerServiceNode);
-        if (validationErrors) {
-            addValidationErrors(controllerServiceNode);
-        }
-
-        if (addBulletins) {
-            addBulletins("Bulletin message", controllerServiceNode.getIdentifier());
-        }
-        HashSet<ControllerServiceNode> controllerServiceNodes = new HashSet<>();
-        controllerServiceNodes.add(controllerServiceNode);
-        when(mockFlowController.getAllControllerServices()).thenReturn(controllerServiceNodes);
-    }
-
-    private void populateInstance(boolean addBulletins) {
-        setRootGroupStatusVariables();
-        if (addBulletins) {
-            addBulletinsToInstance();
-        }
-    }
-
-    private void populateReportingTask(boolean addBulletins, boolean validationErrors) {
-        if (addBulletins) {
-            addBulletins("Bulletin message", "ReportProvenance");
-        }
-
-        ReportingTaskNode reportingTaskNode = mock(ReportingTaskNode.class);
-        addReportingTaskNodeVariables(reportingTaskNode);
-
-        HashSet<ReportingTaskNode> reportingTaskNodes = new HashSet<>();
-        reportingTaskNodes.add(reportingTaskNode);
-
-        when(mockFlowController.getAllReportingTasks()).thenReturn(reportingTaskNodes);
-
-        if (validationErrors) {
-            ValidationResult validationResult = new ValidationResult.Builder()
-                    .input("input")
-                    .subject("subject")
-                    .explanation("is not valid")
-                    .build();
-
-            ValidationResult validationResult2 = new ValidationResult.Builder()
-                    .input("input2")
-                    .subject("subject2")
-                    .explanation("is not valid too")
-                    .build();
-
-            List<ValidationResult> validationResultList = new ArrayList<>();
-            validationResultList.add(validationResult);
-            validationResultList.add(validationResult2);
-
-            when(reportingTaskNode.getValidationErrors()).thenReturn(validationResultList);
-        } else {
-            when(reportingTaskNode.getValidationErrors()).thenReturn(Collections.EMPTY_LIST);
-        }
-    }
-
-    private void populateConnection() {
-        ConnectionStatus connectionStatus = new ConnectionStatus();
-        connectionStatus.setQueuedBytes(100);
-        connectionStatus.setId("connectionId");
-        connectionStatus.setName("connectionId");
-        connectionStatus.setQueuedCount(10);
-        connectionStatus.setInputCount(1);
-        connectionStatus.setInputBytes(2);
-        connectionStatus.setOutputCount(3);
-        connectionStatus.setOutputBytes(4);
-
-        Collection<ConnectionStatus> statusCollection = new ArrayList<>();
-        statusCollection.add(connectionStatus);
-
-        when(rootGroupStatus.getConnectionStatus()).thenReturn(statusCollection);
-    }
-
-    private void populateProcessor(boolean validationErrors, boolean addBulletins) {
-        if (addBulletins) {
-            addBulletins("Bulletin message", "UpdateAttributeProcessorId");
-        }
-
-        ProcessorStatus processorStatus = new ProcessorStatus();
-        processorStatus.setType("org.apache.nifi.processors.attributes.UpdateAttribute");
-        processorStatus.setId("UpdateAttributeProcessorId");
-        processorStatus.setName("UpdateAttributeProcessorId");
-        processorStatus.setRunStatus(RunStatus.Stopped);
-        processorStatus.setActiveThreadCount(1);
-        processorStatus.setFlowFilesReceived(2);
-        processorStatus.setBytesRead(3);
-        processorStatus.setBytesWritten(4);
-        processorStatus.setFlowFilesSent(5);
-        processorStatus.setInvocations(6);
-        processorStatus.setProcessingNanos(7);
-
-        Collection<ProcessorStatus> statusCollection = new ArrayList<>();
-        statusCollection.add(processorStatus);
-
-        mockProcessorEmptyValidation(processorStatus.getId(), processGroup);
-        when(rootGroupStatus.getProcessorStatus()).thenReturn(statusCollection);
-
-        ProcessorNode processorNode = mock(ProcessorNode.class);
-        when(processGroup.getProcessor(processorStatus.getId())).thenReturn(processorNode);
-
-        if (validationErrors) {
-            ValidationResult validationResult = new ValidationResult.Builder()
-                    .input("input")
-                    .subject("subject")
-                    .explanation("is not valid")
-                    .build();
-
-            ValidationResult validationResult2 = new ValidationResult.Builder()
-                    .input("input2")
-                    .subject("subject2")
-                    .explanation("is not valid too")
-                    .build();
-
-            List<ValidationResult> validationResultList = new ArrayList<>();
-            validationResultList.add(validationResult);
-            validationResultList.add(validationResult2);
-
-            when(processorNode.getValidationErrors()).thenReturn(validationResultList);
-        } else {
-            when(processorNode.getValidationErrors()).thenReturn(Collections.EMPTY_LIST);
-        }
-    }
-
-    private void populateRemoteProcessGroup(boolean addBulletins, boolean addAuthIssues) {
-        when(mockFlowController.getGroup(mockFlowController.getRootGroupId())).thenReturn(processGroup);
-
-        RemoteProcessGroup remoteProcessGroup = mock(RemoteProcessGroup.class);
-        when(processGroup.getRemoteProcessGroup(any())).thenReturn(remoteProcessGroup);
-
-        RemoteGroupPort remoteGroupPort = mock(RemoteGroupPort.class);
-        when(remoteGroupPort.getName()).thenReturn("inputPort");
-        when(remoteGroupPort.getTargetExists()).thenReturn(true);
-        when(remoteGroupPort.isTargetRunning()).thenReturn(false);
-
-        when(remoteProcessGroup.getInputPorts()).thenReturn(Collections.singleton(remoteGroupPort));
-
-        remoteGroupPort = mock(RemoteGroupPort.class);
-        when(remoteGroupPort.getName()).thenReturn("outputPort");
-        when(remoteGroupPort.getTargetExists()).thenReturn(true);
-        when(remoteGroupPort.isTargetRunning()).thenReturn(false);
-
-        when(remoteProcessGroup.getOutputPorts()).thenReturn(Collections.singleton(remoteGroupPort));
-
-        RemoteProcessGroupStatus remoteProcessGroupStatus = new RemoteProcessGroupStatus();
-        addRemoteProcessGroupStatus(remoteProcessGroupStatus);
-        if (addBulletins) {
-            addBulletins("Bulletin message", remoteProcessGroupStatus.getId());
-        }
-        when(rootGroupStatus.getRemoteProcessGroupStatus()).thenReturn(Collections.singletonList(remoteProcessGroupStatus));
-    }
-
-
-    private void setRootGroupStatusVariables() {
-        when(rootGroupStatus.getQueuedContentSize()).thenReturn(1L);
-        when(rootGroupStatus.getQueuedCount()).thenReturn(2);
-        when(rootGroupStatus.getActiveThreadCount()).thenReturn(3);
-        when(rootGroupStatus.getBytesRead()).thenReturn(1L);
-        when(rootGroupStatus.getBytesWritten()).thenReturn(2L);
-        when(rootGroupStatus.getBytesSent()).thenReturn(3L);
-        when(rootGroupStatus.getFlowFilesSent()).thenReturn(4);
-        when(rootGroupStatus.getBytesTransferred()).thenReturn(5L);
-        when(rootGroupStatus.getFlowFilesTransferred()).thenReturn(6);
-        when(rootGroupStatus.getBytesReceived()).thenReturn(7L);
-        when(rootGroupStatus.getFlowFilesReceived()).thenReturn(8);
-    }
-
-    private void addGarbageCollectionToSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
-        Map<String, GarbageCollection> garbageCollectionMap = new HashMap<>();
-
-        GarbageCollection garbageCollection1 = new GarbageCollection();
-        garbageCollection1.setCollectionCount(1);
-        garbageCollection1.setCollectionTime(10);
-        garbageCollection1.setName("garbage 1");
-        garbageCollectionMap.put(garbageCollection1.getName(), garbageCollection1);
-
-        systemDiagnostics.setGarbageCollection(garbageCollectionMap);
-    }
-
-    private void addContentRepoToSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
-        Map<String, StorageUsage> stringStorageUsageMap = new HashMap<>();
-
-        StorageUsage repoUsage1 = new StorageUsage();
-        repoUsage1.setFreeSpace(30);
-        repoUsage1.setTotalSpace(100);
-        repoUsage1.setIdentifier("Content repo1");
-        stringStorageUsageMap.put(repoUsage1.getIdentifier(), repoUsage1);
-
-        systemDiagnostics.setContentRepositoryStorageUsage(stringStorageUsageMap);
-    }
-
-    private void addFlowFileRepoToSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
-        StorageUsage repoUsage = new StorageUsage();
-        repoUsage.setFreeSpace(30);
-        repoUsage.setTotalSpace(100);
-        repoUsage.setIdentifier("FlowFile repo");
-        systemDiagnostics.setFlowFileRepositoryStorageUsage(repoUsage);
-    }
-
-    private void addHeapSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
-        systemDiagnostics.setMaxHeap(5);
-        systemDiagnostics.setTotalHeap(3);
-        systemDiagnostics.setUsedHeap(2);
-        systemDiagnostics.setMaxNonHeap(9);
-        systemDiagnostics.setTotalNonHeap(8);
-        systemDiagnostics.setUsedNonHeap(6);
-    }
-
-    private void addProcessorInfoToSystemDiagnostics(SystemDiagnostics systemDiagnostics) {
-        systemDiagnostics.setProcessorLoadAverage(80.9);
-        systemDiagnostics.setAvailableProcessors(5);
-    }
-
-    private void mockProcessorEmptyValidation(String id, ProcessGroup processGroup) {
-        ProcessorNode processorNode = mock(ProcessorNode.class);
-        when(processGroup.getProcessor(id)).thenReturn(processorNode);
-        when(processorNode.getValidationErrors()).thenReturn(Collections.emptyList());
-    }
-
-    private void addControllerServiceHealth(ControllerServiceNode controllerServiceNode) {
-        when(controllerServiceNode.getName()).thenReturn("mockControllerService");
-        when(controllerServiceNode.getIdentifier()).thenReturn("mockControllerService");
-        when(controllerServiceNode.getState()).thenReturn(ControllerServiceState.ENABLED);
-        when(controllerServiceNode.getValidationErrors()).thenReturn(Collections.emptyList());
-    }
-
-    private void addReportingTaskNodeVariables(ReportingTaskNode reportingTaskNode) {
-        when(reportingTaskNode.getValidationErrors()).thenReturn(Collections.emptyList());
-        when(reportingTaskNode.getActiveThreadCount()).thenReturn(1);
-        when(reportingTaskNode.getScheduledState()).thenReturn(ScheduledState.RUNNING);
-        when(reportingTaskNode.getIdentifier()).thenReturn("ReportProvenance");
-        when(reportingTaskNode.getName()).thenReturn("ReportProvenance");
-
-    }
-
-    private void addRemoteProcessGroupStatus(RemoteProcessGroupStatus remoteProcessGroupStatus) {
-        remoteProcessGroupStatus.setName("rpg1");
-        remoteProcessGroupStatus.setId("rpg1");
-        remoteProcessGroupStatus.setTransmissionStatus(TransmissionStatus.Transmitting);
-        remoteProcessGroupStatus.setActiveRemotePortCount(1);
-        remoteProcessGroupStatus.setInactiveRemotePortCount(2);
-
-        remoteProcessGroupStatus.setActiveThreadCount(3);
-        remoteProcessGroupStatus.setSentContentSize(4L);
-        remoteProcessGroupStatus.setSentCount(5);
-    }
-
-    private void addBulletins(String message, String sourceId) {
-        Bulletin bulletin = mock(Bulletin.class);
-        when(bulletin.getTimestamp()).thenReturn(new Date(1464019245000L));
-        when(bulletin.getMessage()).thenReturn(message);
-
-        List<Bulletin> bulletinList = new ArrayList<>();
-        bulletinList.add(bulletin);
-
-        BulletinQueryAnswer bulletinQueryAnswer = new BulletinQueryAnswer(sourceId, bulletinList);
-        when(bulletinRepo.findBulletins(anyObject())).then(bulletinQueryAnswer);
-    }
-
-    private void addValidationErrors(ConfiguredComponent connectable) {
-        ValidationResult validationResult = new ValidationResult.Builder()
-                .input("input")
-                .subject("subject")
-                .explanation("is not valid")
-                .build();
-
-        ValidationResult validationResult2 = new ValidationResult.Builder()
-                .input("input2")
-                .subject("subject2")
-                .explanation("is not valid too")
-                .build();
-
-        List<ValidationResult> validationResultList = new ArrayList<>();
-        validationResultList.add(validationResult);
-        validationResultList.add(validationResult2);
-        when(connectable.getValidationErrors()).thenReturn(validationResultList);
-    }
-
-    private class BulletinQueryAnswer implements Answer {
-
-        final List<Bulletin> bulletinList;
-        String idToMatch = "";
-
-        private BulletinQueryAnswer(String idToMatch, List<Bulletin> bulletinList) {
-            this.idToMatch = idToMatch;
-            this.bulletinList = bulletinList;
-        }
-
-        @Override
-        public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
-            BulletinQuery bulletinQuery = (BulletinQuery) invocationOnMock.getArguments()[0];
-            if (idToMatch.equals(bulletinQuery.getSourceIdPattern().toString())) {
-                return bulletinList;
-            }
-            return Collections.emptyList();
-        }
-    }
-}