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 2016/07/04 16:55:19 UTC
[5/6] nifi-minifi git commit: MINIFI-38 Removing reliance on
JettyServer in order to add a flow status reporting end point. This also
removes the UI and adds a 'flowstatus' option to minifi.sh to get information
on the current flow from the terminal.
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupHealth.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupHealth.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupHealth.java
new file mode 100644
index 0000000..0994b53
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupHealth.java
@@ -0,0 +1,105 @@
+/*
+ * 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.commons.status.rpg;
+
+public class RemoteProcessGroupHealth implements java.io.Serializable {
+ private String transmissionStatus;
+ private boolean hasBulletins;
+ private boolean hasAuthorizationIssues;
+ private int activePortCount;
+ private int inactivePortCount;
+
+ public RemoteProcessGroupHealth() {
+ }
+
+ public String getTransmissionStatus() {
+ return transmissionStatus;
+ }
+
+ public void setTransmissionStatus(String transmissionStatus) {
+ this.transmissionStatus = transmissionStatus;
+ }
+
+ public boolean isHasBulletins() {
+ return hasBulletins;
+ }
+
+ public void setHasBulletins(boolean hasBulletins) {
+ this.hasBulletins = hasBulletins;
+ }
+
+ public boolean isHasAuthorizationIssues() {
+ return hasAuthorizationIssues;
+ }
+
+ public void setHasAuthorizationIssues(boolean hasAuthorizationIssues) {
+ this.hasAuthorizationIssues = hasAuthorizationIssues;
+ }
+
+ public int getActivePortCount() {
+ return activePortCount;
+ }
+
+ public void setActivePortCount(int activePortCount) {
+ this.activePortCount = activePortCount;
+ }
+
+ public int getInactivePortCount() {
+ return inactivePortCount;
+ }
+
+ public void setInactivePortCount(int inactivePortCount) {
+ this.inactivePortCount = inactivePortCount;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ RemoteProcessGroupHealth that = (RemoteProcessGroupHealth) o;
+
+ if (isHasBulletins() != that.isHasBulletins()) return false;
+ if (isHasAuthorizationIssues() != that.isHasAuthorizationIssues()) return false;
+ if (getActivePortCount() != that.getActivePortCount()) return false;
+ if (getInactivePortCount() != that.getInactivePortCount()) return false;
+ return getTransmissionStatus() != null ? getTransmissionStatus().equals(that.getTransmissionStatus()) : that.getTransmissionStatus() == null;
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getTransmissionStatus() != null ? getTransmissionStatus().hashCode() : 0;
+ result = 31 * result + (isHasBulletins() ? 1 : 0);
+ result = 31 * result + (isHasAuthorizationIssues() ? 1 : 0);
+ result = 31 * result + getActivePortCount();
+ result = 31 * result + getInactivePortCount();
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "transmissionStatus='" + transmissionStatus + '\'' +
+ ", hasBulletins=" + hasBulletins +
+ ", hasAuthorizationIssues=" + hasAuthorizationIssues +
+ ", activePortCount=" + activePortCount +
+ ", inactivePortCount=" + inactivePortCount +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupStats.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupStats.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupStats.java
new file mode 100644
index 0000000..72e7074
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupStats.java
@@ -0,0 +1,81 @@
+/*
+ * 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.commons.status.rpg;
+
+public class RemoteProcessGroupStats implements java.io.Serializable {
+ private int activeThreads;
+ private int sentCount;
+ private long sentContentSize;
+
+ public RemoteProcessGroupStats() {
+ }
+
+ public int getActiveThreads() {
+ return activeThreads;
+ }
+
+ public void setActiveThreads(int activeThreads) {
+ this.activeThreads = activeThreads;
+ }
+
+ public int getSentCount() {
+ return sentCount;
+ }
+
+ public void setSentCount(int sentCount) {
+ this.sentCount = sentCount;
+ }
+
+ public long getSentContentSize() {
+ return sentContentSize;
+ }
+
+ public void setSentContentSize(long sentContentSize) {
+ this.sentContentSize = sentContentSize;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ RemoteProcessGroupStats that = (RemoteProcessGroupStats) o;
+
+ if (getActiveThreads() != that.getActiveThreads()) return false;
+ if (getSentCount() != that.getSentCount()) return false;
+ return getSentContentSize() == that.getSentContentSize();
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getActiveThreads();
+ result = 31 * result + getSentCount();
+ result = 31 * result + (int) (getSentContentSize() ^ (getSentContentSize() >>> 32));
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "activeThreads=" + activeThreads +
+ ", sentCount=" + sentCount +
+ ", sentContentSize=" + sentContentSize +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupStatusBean.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupStatusBean.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupStatusBean.java
new file mode 100644
index 0000000..b4ee5ce
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/rpg/RemoteProcessGroupStatusBean.java
@@ -0,0 +1,121 @@
+/*
+ * 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.commons.status.rpg;
+
+import org.apache.nifi.minifi.commons.status.common.BulletinStatus;
+
+import java.util.List;
+
+public class RemoteProcessGroupStatusBean implements java.io.Serializable {
+ private String name;
+ private RemoteProcessGroupHealth remoteProcessGroupHealth;
+ private List<BulletinStatus> bulletinList;
+ private List<String> authorizationIssues;
+ private List<InputPortStatus> inputPortStatusList;
+ private RemoteProcessGroupStats remoteProcessGroupStats;
+
+ public RemoteProcessGroupStatusBean() {
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public RemoteProcessGroupHealth getRemoteProcessGroupHealth() {
+ return remoteProcessGroupHealth;
+ }
+
+ public void setRemoteProcessGroupHealth(RemoteProcessGroupHealth remoteProcessGroupHealth) {
+ this.remoteProcessGroupHealth = remoteProcessGroupHealth;
+ }
+
+ public List<BulletinStatus> getBulletinList() {
+ return bulletinList;
+ }
+
+ public void setBulletinList(List<BulletinStatus> bulletinList) {
+ this.bulletinList = bulletinList;
+ }
+
+ public List<String> getAuthorizationIssues() {
+ return authorizationIssues;
+ }
+
+ public void setAuthorizationIssues(List<String> authorizationIssues) {
+ this.authorizationIssues = authorizationIssues;
+ }
+
+ public List<InputPortStatus> getInputPortStatusList() {
+ return inputPortStatusList;
+ }
+
+ public void setInputPortStatusList(List<InputPortStatus> inputPortStatusList) {
+ this.inputPortStatusList = inputPortStatusList;
+ }
+
+ public RemoteProcessGroupStats getRemoteProcessGroupStats() {
+ return remoteProcessGroupStats;
+ }
+
+ public void setRemoteProcessGroupStats(RemoteProcessGroupStats remoteProcessGroupStats) {
+ this.remoteProcessGroupStats = remoteProcessGroupStats;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ RemoteProcessGroupStatusBean that = (RemoteProcessGroupStatusBean) o;
+
+ if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
+ if (getRemoteProcessGroupHealth() != null ? !getRemoteProcessGroupHealth().equals(that.getRemoteProcessGroupHealth()) : that.getRemoteProcessGroupHealth() != null) return false;
+ if (getBulletinList() != null ? !getBulletinList().equals(that.getBulletinList()) : that.getBulletinList() != null) return false;
+ if (getAuthorizationIssues() != null ? !getAuthorizationIssues().equals(that.getAuthorizationIssues()) : that.getAuthorizationIssues() != null) return false;
+ if (getInputPortStatusList() != null ? !getInputPortStatusList().equals(that.getInputPortStatusList()) : that.getInputPortStatusList() != null) return false;
+ return getRemoteProcessGroupStats() != null ? getRemoteProcessGroupStats().equals(that.getRemoteProcessGroupStats()) : that.getRemoteProcessGroupStats() == null;
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getName() != null ? getName().hashCode() : 0;
+ result = 31 * result + (getRemoteProcessGroupHealth() != null ? getRemoteProcessGroupHealth().hashCode() : 0);
+ result = 31 * result + (getBulletinList() != null ? getBulletinList().hashCode() : 0);
+ result = 31 * result + (getAuthorizationIssues() != null ? getAuthorizationIssues().hashCode() : 0);
+ result = 31 * result + (getInputPortStatusList() != null ? getInputPortStatusList().hashCode() : 0);
+ result = 31 * result + (getRemoteProcessGroupStats() != null ? getRemoteProcessGroupStats().hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "name='" + name + '\'' +
+ ", remoteProcessGroupHealth=" + remoteProcessGroupHealth +
+ ", bulletinList=" + bulletinList +
+ ", authorizationIssues=" + authorizationIssues +
+ ", inputPortStatusList=" + inputPortStatusList +
+ ", remoteProcessGroupStats=" + remoteProcessGroupStats +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/ContentRepositoryUsage.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/ContentRepositoryUsage.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/ContentRepositoryUsage.java
new file mode 100644
index 0000000..a278974
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/ContentRepositoryUsage.java
@@ -0,0 +1,107 @@
+/*
+ * 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.commons.status.system;
+
+public class ContentRepositoryUsage implements java.io.Serializable {
+
+ private String name;
+ private long freeSpace;
+ private long totalSpace;
+ private long usedSpace;
+ private int diskUtilization;
+
+ public ContentRepositoryUsage() {
+
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public long getFreeSpace() {
+ return freeSpace;
+ }
+
+ public void setFreeSpace(long freeSpace) {
+ this.freeSpace = freeSpace;
+ }
+
+ public long getTotalSpace() {
+ return totalSpace;
+ }
+
+ public void setTotalSpace(long totalSpace) {
+ this.totalSpace = totalSpace;
+ }
+
+ public long getUsedSpace() {
+ return usedSpace;
+ }
+
+ public void setUsedSpace(long usedSpace) {
+ this.usedSpace = usedSpace;
+ }
+
+ public int getDiskUtilization() {
+ return diskUtilization;
+ }
+
+ public void setDiskUtilization(int diskUtilization) {
+ this.diskUtilization = diskUtilization;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ ContentRepositoryUsage that = (ContentRepositoryUsage) o;
+
+ if (getFreeSpace() != that.getFreeSpace()) return false;
+ if (getTotalSpace() != that.getTotalSpace()) return false;
+ if (getUsedSpace() != that.getUsedSpace()) return false;
+ if (getDiskUtilization() != that.getDiskUtilization()) return false;
+ return getName() != null ? getName().equals(that.getName()) : that.getName() == null;
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getName() != null ? getName().hashCode() : 0;
+ result = 31 * result + (int) (getFreeSpace() ^ (getFreeSpace() >>> 32));
+ result = 31 * result + (int) (getTotalSpace() ^ (getTotalSpace() >>> 32));
+ result = 31 * result + (int) (getUsedSpace() ^ (getUsedSpace() >>> 32));
+ result = 31 * result + getDiskUtilization();
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "name='" + name + '\'' +
+ ", freeSpace=" + freeSpace +
+ ", totalSpace=" + totalSpace +
+ ", usedSpace=" + usedSpace +
+ ", diskUtilization=" + diskUtilization +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/FlowfileRepositoryUsage.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/FlowfileRepositoryUsage.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/FlowfileRepositoryUsage.java
new file mode 100644
index 0000000..2f6474e
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/FlowfileRepositoryUsage.java
@@ -0,0 +1,94 @@
+/*
+ * 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.commons.status.system;
+
+public class FlowfileRepositoryUsage implements java.io.Serializable {
+
+ private long freeSpace;
+ private long totalSpace;
+ private long usedSpace;
+ private int diskUtilization;
+
+ public FlowfileRepositoryUsage() {
+ }
+
+ public long getFreeSpace() {
+ return freeSpace;
+ }
+
+ public void setFreeSpace(long freeSpace) {
+ this.freeSpace = freeSpace;
+ }
+
+ public long getTotalSpace() {
+ return totalSpace;
+ }
+
+ public void setTotalSpace(long totalSpace) {
+ this.totalSpace = totalSpace;
+ }
+
+ public long getUsedSpace() {
+ return usedSpace;
+ }
+
+ public void setUsedSpace(long usedSpace) {
+ this.usedSpace = usedSpace;
+ }
+
+ public int getDiskUtilization() {
+ return diskUtilization;
+ }
+
+ public void setDiskUtilization(int diskUtilization) {
+ this.diskUtilization = diskUtilization;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ FlowfileRepositoryUsage that = (FlowfileRepositoryUsage) o;
+
+ if (getFreeSpace() != that.getFreeSpace()) return false;
+ if (getTotalSpace() != that.getTotalSpace()) return false;
+ if (getUsedSpace() != that.getUsedSpace()) return false;
+ return getDiskUtilization() == that.getDiskUtilization();
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (getFreeSpace() ^ (getFreeSpace() >>> 32));
+ result = 31 * result + (int) (getTotalSpace() ^ (getTotalSpace() >>> 32));
+ result = 31 * result + (int) (getUsedSpace() ^ (getUsedSpace() >>> 32));
+ result = 31 * result + getDiskUtilization();
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "freeSpace=" + freeSpace +
+ ", totalSpace=" + totalSpace +
+ ", usedSpace=" + usedSpace +
+ ", diskUtilization=" + diskUtilization +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/GarbageCollectionStatus.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/GarbageCollectionStatus.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/GarbageCollectionStatus.java
new file mode 100644
index 0000000..0166ade
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/GarbageCollectionStatus.java
@@ -0,0 +1,82 @@
+/*
+ * 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.commons.status.system;
+
+public class GarbageCollectionStatus implements java.io.Serializable {
+
+ private String name;
+ private long collectionCount;
+ private long collectionTime;
+
+ public GarbageCollectionStatus() {
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public long getCollectionCount() {
+ return collectionCount;
+ }
+
+ public void setCollectionCount(long collectionCount) {
+ this.collectionCount = collectionCount;
+ }
+
+ public long getCollectionTime() {
+ return collectionTime;
+ }
+
+ public void setCollectionTime(long collectionTime) {
+ this.collectionTime = collectionTime;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ GarbageCollectionStatus that = (GarbageCollectionStatus) o;
+
+ if (getCollectionCount() != that.getCollectionCount()) return false;
+ if (getCollectionTime() != that.getCollectionTime()) return false;
+ return getName() != null ? getName().equals(that.getName()) : that.getName() == null;
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getName() != null ? getName().hashCode() : 0;
+ result = 31 * result + (int) (getCollectionCount() ^ (getCollectionCount() >>> 32));
+ result = 31 * result + (int) (getCollectionTime() ^ (getCollectionTime() >>> 32));
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "name='" + name + '\'' +
+ ", collectionCount=" + collectionCount +
+ ", collectionTime=" + collectionTime +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/HeapStatus.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/HeapStatus.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/HeapStatus.java
new file mode 100644
index 0000000..95debfe
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/HeapStatus.java
@@ -0,0 +1,166 @@
+/*
+ * 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.commons.status.system;
+
+public class HeapStatus implements java.io.Serializable {
+
+ private long totalHeap;
+ private long maxHeap;
+ private long freeHeap;
+ private long usedHeap;
+ private int heapUtilization;
+ private long totalNonHeap;
+ private long maxNonHeap;
+ private long freeNonHeap;
+ private long usedNonHeap;
+ private int nonHeapUtilization;
+
+ public HeapStatus() {
+ }
+
+ public long getTotalHeap() {
+ return totalHeap;
+ }
+
+ public void setTotalHeap(long totalHeap) {
+ this.totalHeap = totalHeap;
+ }
+
+ public long getMaxHeap() {
+ return maxHeap;
+ }
+
+ public void setMaxHeap(long maxHeap) {
+ this.maxHeap = maxHeap;
+ }
+
+ public long getFreeHeap() {
+ return freeHeap;
+ }
+
+ public void setFreeHeap(long freeHeap) {
+ this.freeHeap = freeHeap;
+ }
+
+ public long getUsedHeap() {
+ return usedHeap;
+ }
+
+ public void setUsedHeap(long usedHeap) {
+ this.usedHeap = usedHeap;
+ }
+
+ public int getHeapUtilization() {
+ return heapUtilization;
+ }
+
+ public void setHeapUtilization(int heapUtilization) {
+ this.heapUtilization = heapUtilization;
+ }
+
+ public long getTotalNonHeap() {
+ return totalNonHeap;
+ }
+
+ public void setTotalNonHeap(long totalNonHeap) {
+ this.totalNonHeap = totalNonHeap;
+ }
+
+ public long getMaxNonHeap() {
+ return maxNonHeap;
+ }
+
+ public void setMaxNonHeap(long maxNonHeap) {
+ this.maxNonHeap = maxNonHeap;
+ }
+
+ public long getFreeNonHeap() {
+ return freeNonHeap;
+ }
+
+ public void setFreeNonHeap(long freeNonHeap) {
+ this.freeNonHeap = freeNonHeap;
+ }
+
+ public long getUsedNonHeap() {
+ return usedNonHeap;
+ }
+
+ public void setUsedNonHeap(long usedNonHeap) {
+ this.usedNonHeap = usedNonHeap;
+ }
+
+ public int getNonHeapUtilization() {
+ return nonHeapUtilization;
+ }
+
+ public void setNonHeapUtilization(int nonHeapUtilization) {
+ this.nonHeapUtilization = nonHeapUtilization;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ HeapStatus that = (HeapStatus) o;
+
+ if (getTotalHeap() != that.getTotalHeap()) return false;
+ if (getMaxHeap() != that.getMaxHeap()) return false;
+ if (getFreeHeap() != that.getFreeHeap()) return false;
+ if (getUsedHeap() != that.getUsedHeap()) return false;
+ if (getHeapUtilization() != that.getHeapUtilization()) return false;
+ if (getTotalNonHeap() != that.getTotalNonHeap()) return false;
+ if (getMaxNonHeap() != that.getMaxNonHeap()) return false;
+ if (getFreeNonHeap() != that.getFreeNonHeap()) return false;
+ if (getUsedNonHeap() != that.getUsedNonHeap()) return false;
+ return getNonHeapUtilization() == that.getNonHeapUtilization();
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (getTotalHeap() ^ (getTotalHeap() >>> 32));
+ result = 31 * result + (int) (getMaxHeap() ^ (getMaxHeap() >>> 32));
+ result = 31 * result + (int) (getFreeHeap() ^ (getFreeHeap() >>> 32));
+ result = 31 * result + (int) (getUsedHeap() ^ (getUsedHeap() >>> 32));
+ result = 31 * result + getHeapUtilization();
+ result = 31 * result + (int) (getTotalNonHeap() ^ (getTotalNonHeap() >>> 32));
+ result = 31 * result + (int) (getMaxNonHeap() ^ (getMaxNonHeap() >>> 32));
+ result = 31 * result + (int) (getFreeNonHeap() ^ (getFreeNonHeap() >>> 32));
+ result = 31 * result + (int) (getUsedNonHeap() ^ (getUsedNonHeap() >>> 32));
+ result = 31 * result + getNonHeapUtilization();
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "totalHeap=" + totalHeap +
+ ", maxHeap=" + maxHeap +
+ ", freeHeap=" + freeHeap +
+ ", usedHeap=" + usedHeap +
+ ", heapUtilization=" + heapUtilization +
+ ", totalNonHeap=" + totalNonHeap +
+ ", maxNonHeap=" + maxNonHeap +
+ ", freeNonHeap=" + freeNonHeap +
+ ", usedNonHeap=" + usedNonHeap +
+ ", nonHeapUtilization=" + nonHeapUtilization +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/SystemDiagnosticsStatus.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/SystemDiagnosticsStatus.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/SystemDiagnosticsStatus.java
new file mode 100644
index 0000000..4f3892f
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/SystemDiagnosticsStatus.java
@@ -0,0 +1,107 @@
+/*
+ * 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.commons.status.system;
+
+import java.util.List;
+
+public class SystemDiagnosticsStatus implements java.io.Serializable {
+ private List<GarbageCollectionStatus> garbageCollectionStatusList;
+ private HeapStatus heapStatus;
+ private SystemProcessorStats systemProcessorStats;
+ private List<ContentRepositoryUsage> contentRepositoryUsageList;
+ private FlowfileRepositoryUsage flowfileRepositoryUsage;
+
+ public SystemDiagnosticsStatus() {
+ }
+
+ public List<GarbageCollectionStatus> getGarbageCollectionStatusList() {
+ return garbageCollectionStatusList;
+ }
+
+ public void setGarbageCollectionStatusList(List<GarbageCollectionStatus> garbageCollectionStatusList) {
+ this.garbageCollectionStatusList = garbageCollectionStatusList;
+ }
+
+ public HeapStatus getHeapStatus() {
+ return heapStatus;
+ }
+
+ public void setHeapStatus(HeapStatus heapStatus) {
+ this.heapStatus = heapStatus;
+ }
+
+ public SystemProcessorStats getProcessorStatus() {
+ return systemProcessorStats;
+ }
+
+ public void setProcessorStatus(SystemProcessorStats processorStatus) {
+ this.systemProcessorStats = processorStatus;
+ }
+
+ public List<ContentRepositoryUsage> getContentRepositoryUsageList() {
+ return contentRepositoryUsageList;
+ }
+
+ public void setContentRepositoryUsageList(List<ContentRepositoryUsage> contentRepositoryUsageList) {
+ this.contentRepositoryUsageList = contentRepositoryUsageList;
+ }
+
+ public FlowfileRepositoryUsage getFlowfileRepositoryUsage() {
+ return flowfileRepositoryUsage;
+ }
+
+ public void setFlowfileRepositoryUsage(FlowfileRepositoryUsage flowfileRepositoryUsage) {
+ this.flowfileRepositoryUsage = flowfileRepositoryUsage;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ SystemDiagnosticsStatus that = (SystemDiagnosticsStatus) o;
+
+ if (getGarbageCollectionStatusList() != null ? !getGarbageCollectionStatusList().equals(that.getGarbageCollectionStatusList()) : that.getGarbageCollectionStatusList() != null) return false;
+ if (getHeapStatus() != null ? !getHeapStatus().equals(that.getHeapStatus()) : that.getHeapStatus() != null) return false;
+ if (systemProcessorStats != null ? !systemProcessorStats.equals(that.systemProcessorStats) : that.systemProcessorStats != null) return false;
+ if (getContentRepositoryUsageList() != null ? !getContentRepositoryUsageList().equals(that.getContentRepositoryUsageList()) : that.getContentRepositoryUsageList() != null) return false;
+ return getFlowfileRepositoryUsage() != null ? getFlowfileRepositoryUsage().equals(that.getFlowfileRepositoryUsage()) : that.getFlowfileRepositoryUsage() == null;
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getGarbageCollectionStatusList() != null ? getGarbageCollectionStatusList().hashCode() : 0;
+ result = 31 * result + (getHeapStatus() != null ? getHeapStatus().hashCode() : 0);
+ result = 31 * result + (systemProcessorStats != null ? systemProcessorStats.hashCode() : 0);
+ result = 31 * result + (getContentRepositoryUsageList() != null ? getContentRepositoryUsageList().hashCode() : 0);
+ result = 31 * result + (getFlowfileRepositoryUsage() != null ? getFlowfileRepositoryUsage().hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "garbageCollectionStatusList=" + garbageCollectionStatusList +
+ ", heapStatus=" + heapStatus +
+ ", systemProcessorStats=" + systemProcessorStats +
+ ", contentRepositoryUsageList=" + contentRepositoryUsageList +
+ ", flowfileRepositoryUsage=" + flowfileRepositoryUsage +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/SystemProcessorStats.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/SystemProcessorStats.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/SystemProcessorStats.java
new file mode 100644
index 0000000..5b0cfb3
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/system/SystemProcessorStats.java
@@ -0,0 +1,73 @@
+/*
+ * 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.commons.status.system;
+
+public class SystemProcessorStats implements java.io.Serializable {
+
+ private double loadAverage;
+ private int availableProcessors;
+
+ public SystemProcessorStats() {
+ }
+
+ public double getLoadAverage() {
+ return loadAverage;
+ }
+
+ public void setLoadAverage(double loadAverage) {
+ this.loadAverage = loadAverage;
+ }
+
+ public int getAvailableProcessors() {
+ return availableProcessors;
+ }
+
+ public void setAvailableProcessors(int availableProcessors) {
+ this.availableProcessors = availableProcessors;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ SystemProcessorStats that = (SystemProcessorStats) o;
+
+ if (Double.compare(that.getLoadAverage(), getLoadAverage()) != 0) return false;
+ return getAvailableProcessors() == that.getAvailableProcessors();
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result;
+ long temp;
+ temp = Double.doubleToLongBits(getLoadAverage());
+ result = (int) (temp ^ (temp >>> 32));
+ result = 31 * result + getAvailableProcessors();
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "loadAverage=" + loadAverage +
+ ", availableProcessors=" + availableProcessors +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/util/StatusReportPopulator.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/util/StatusReportPopulator.java b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/util/StatusReportPopulator.java
new file mode 100644
index 0000000..ff3d2cc
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/main/java/org/apache/nifi/minifi/commons/status/util/StatusReportPopulator.java
@@ -0,0 +1,375 @@
+/*
+ * 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.commons.status.util;
+
+import org.apache.nifi.minifi.commons.status.FlowStatusReport;
+import org.apache.nifi.minifi.commons.status.common.BulletinStatus;
+import org.apache.nifi.minifi.commons.status.common.ValidationError;
+import org.apache.nifi.minifi.commons.status.connection.ConnectionHealth;
+import org.apache.nifi.minifi.commons.status.connection.ConnectionStats;
+import org.apache.nifi.minifi.commons.status.connection.ConnectionStatusBean;
+import org.apache.nifi.minifi.commons.status.controllerservice.ControllerServiceHealth;
+import org.apache.nifi.minifi.commons.status.controllerservice.ControllerServiceStatus;
+import org.apache.nifi.minifi.commons.status.instance.InstanceHealth;
+import org.apache.nifi.minifi.commons.status.instance.InstanceStats;
+import org.apache.nifi.minifi.commons.status.instance.InstanceStatus;
+import org.apache.nifi.minifi.commons.status.processor.ProcessorHealth;
+import org.apache.nifi.minifi.commons.status.processor.ProcessorStats;
+import org.apache.nifi.minifi.commons.status.processor.ProcessorStatusBean;
+import org.apache.nifi.minifi.commons.status.reportingTask.ReportingTaskHealth;
+import org.apache.nifi.minifi.commons.status.reportingTask.ReportingTaskStatus;
+import org.apache.nifi.minifi.commons.status.rpg.InputPortStatus;
+import org.apache.nifi.minifi.commons.status.rpg.RemoteProcessGroupHealth;
+import org.apache.nifi.minifi.commons.status.rpg.RemoteProcessGroupStats;
+import org.apache.nifi.minifi.commons.status.rpg.RemoteProcessGroupStatusBean;
+import org.apache.nifi.minifi.commons.status.system.ContentRepositoryUsage;
+import org.apache.nifi.minifi.commons.status.system.FlowfileRepositoryUsage;
+import org.apache.nifi.minifi.commons.status.system.GarbageCollectionStatus;
+import org.apache.nifi.minifi.commons.status.system.HeapStatus;
+import org.apache.nifi.minifi.commons.status.system.SystemDiagnosticsStatus;
+import org.apache.nifi.minifi.commons.status.system.SystemProcessorStats;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+public class StatusReportPopulator {
+ private StatusReportPopulator() {
+ }
+
+ public static void addProcessorStatus(FlowStatusReport flowStatusReport, boolean addHealth, boolean validationErrors, boolean addStats, boolean addBulletins, boolean populateBulletins) {
+ ProcessorStatusBean expectedProcessorStatus = new ProcessorStatusBean();
+ expectedProcessorStatus.setName("UpdateAttributeProcessorId");
+
+ if (addHealth) {
+ ProcessorHealth processorHealth = new ProcessorHealth();
+ processorHealth.setHasBulletins(populateBulletins);
+ processorHealth.setRunStatus("Stopped");
+ if (validationErrors) {
+ List<ValidationError> validationErrorList = new LinkedList<>();
+ ValidationError validationError1 = new ValidationError();
+ validationError1.setInput("input");
+ validationError1.setSubject("subject");
+ validationError1.setReason("is not valid");
+ validationErrorList.add(validationError1);
+
+ ValidationError validationError2 = new ValidationError();
+ validationError2.setInput("input2");
+ validationError2.setSubject("subject2");
+ validationError2.setReason("is not valid too");
+ validationErrorList.add(validationError2);
+
+ processorHealth.setValidationErrorList(validationErrorList);
+ } else {
+ processorHealth.setValidationErrorList(Collections.EMPTY_LIST);
+ }
+ expectedProcessorStatus.setProcessorHealth(processorHealth);
+ }
+
+ if (addStats) {
+ ProcessorStats expectedProcessorStats = new ProcessorStats();
+
+ expectedProcessorStats.setActiveThreads(1);
+ expectedProcessorStats.setFlowfilesReceived(2);
+ expectedProcessorStats.setBytesRead(3);
+ expectedProcessorStats.setBytesWritten(4);
+ expectedProcessorStats.setFlowfilesSent(5);
+ expectedProcessorStats.setInvocations(6);
+ expectedProcessorStats.setProcessingNanos(7);
+
+ expectedProcessorStatus.setProcessorStats(expectedProcessorStats);
+ }
+
+ if (addBulletins) {
+ if (populateBulletins) {
+ BulletinStatus bulletinStatus = new BulletinStatus();
+ bulletinStatus.setMessage("Bulletin message");
+ bulletinStatus.setTimestamp(new Date(1464019245000L));
+
+ expectedProcessorStatus.setBulletinList(Collections.singletonList(bulletinStatus));
+ } else {
+ expectedProcessorStatus.setBulletinList(Collections.EMPTY_LIST);
+ }
+ }
+ flowStatusReport.setProcessorStatusList(Collections.singletonList(expectedProcessorStatus));
+ }
+
+ public static void addConnectionStatus(FlowStatusReport flowStatusReport, boolean addHealth, boolean addStats) {
+
+ ConnectionStatusBean expectedConnectionStatus = new ConnectionStatusBean();
+
+ expectedConnectionStatus.setName("connectionId");
+ if (addHealth) {
+ ConnectionHealth connectionHealth = new ConnectionHealth();
+ connectionHealth.setQueuedCount(10);
+ connectionHealth.setQueuedBytes(100);
+ expectedConnectionStatus.setConnectionHealth(connectionHealth);
+ }
+
+ if (addStats) {
+ ConnectionStats expectedConnectionStats = new ConnectionStats();
+ expectedConnectionStats.setInputCount(1);
+ expectedConnectionStats.setInputBytes(2);
+ expectedConnectionStats.setOutputCount(3);
+ expectedConnectionStats.setOutputBytes(4);
+ expectedConnectionStatus.setConnectionStats(expectedConnectionStats);
+ }
+
+ flowStatusReport.setConnectionStatusList(Collections.singletonList(expectedConnectionStatus));
+ }
+
+ public static void addExpectedRemoteProcessGroupStatus(FlowStatusReport flowStatusReport, boolean addHealth, boolean addAuthorizationIssues, boolean addInputPort,
+ boolean addStats, boolean addBulletins, boolean populateBulletins) {
+ RemoteProcessGroupStatusBean expectedRemoteProcessGroupStatus = new RemoteProcessGroupStatusBean();
+ expectedRemoteProcessGroupStatus.setName("rpg1");
+ if (addAuthorizationIssues) {
+ expectedRemoteProcessGroupStatus.setAuthorizationIssues(Collections.singletonList("auth issue"));
+ }
+
+ if (addHealth) {
+ RemoteProcessGroupHealth remoteProcessGroupHealth = new RemoteProcessGroupHealth();
+ remoteProcessGroupHealth.setTransmissionStatus("Transmitting");
+ remoteProcessGroupHealth.setHasBulletins(populateBulletins);
+ remoteProcessGroupHealth.setHasAuthorizationIssues(addAuthorizationIssues);
+ remoteProcessGroupHealth.setActivePortCount(1);
+ remoteProcessGroupHealth.setInactivePortCount(2);
+ expectedRemoteProcessGroupStatus.setRemoteProcessGroupHealth(remoteProcessGroupHealth);
+ }
+
+ if (addBulletins) {
+ if (populateBulletins) {
+ BulletinStatus bulletinStatus = new BulletinStatus();
+ bulletinStatus.setMessage("Bulletin message");
+ bulletinStatus.setTimestamp(new Date(1464019245000L));
+ expectedRemoteProcessGroupStatus.setBulletinList(Collections.singletonList(bulletinStatus));
+ } else {
+ expectedRemoteProcessGroupStatus.setBulletinList(Collections.EMPTY_LIST);
+ }
+ }
+
+ if (addInputPort) {
+ InputPortStatus expectedInputPortStatus = new InputPortStatus();
+ expectedInputPortStatus.setName("inputPort");
+ expectedInputPortStatus.setTargetExists(true);
+ expectedInputPortStatus.setTargetRunning(false);
+ expectedRemoteProcessGroupStatus.setInputPortStatusList(Collections.singletonList(expectedInputPortStatus));
+ }
+
+ if (addStats) {
+ RemoteProcessGroupStats remoteProcessGroupStats = new RemoteProcessGroupStats();
+ remoteProcessGroupStats.setActiveThreads(3);
+ remoteProcessGroupStats.setSentContentSize(4L);
+ remoteProcessGroupStats.setSentCount(5);
+ expectedRemoteProcessGroupStatus.setRemoteProcessGroupStats(remoteProcessGroupStats);
+ }
+
+ flowStatusReport.setRemoteProcessGroupStatusList(Collections.singletonList(expectedRemoteProcessGroupStatus));
+ }
+
+ public static void addControllerServiceStatus(FlowStatusReport flowStatusReport, boolean addHealth, boolean addValidationErrors, boolean addBulletins, boolean populateBulletins) {
+ ControllerServiceStatus controllerServiceStatus = new ControllerServiceStatus();
+ controllerServiceStatus.setName("mockControllerService");
+
+ if (addBulletins) {
+ if (populateBulletins) {
+ BulletinStatus bulletinStatus = new BulletinStatus();
+ bulletinStatus.setMessage("Bulletin message");
+ bulletinStatus.setTimestamp(new Date(1464019245000L));
+ controllerServiceStatus.setBulletinList(Collections.singletonList(bulletinStatus));
+ } else {
+ controllerServiceStatus.setBulletinList(Collections.EMPTY_LIST);
+ }
+ }
+
+ if (addHealth) {
+ ControllerServiceHealth controllerServiceHealth = new ControllerServiceHealth();
+ controllerServiceHealth.setState("ENABLED");
+ controllerServiceHealth.setHasBulletins(populateBulletins);
+ controllerServiceStatus.setControllerServiceHealth(controllerServiceHealth);
+
+ if (addValidationErrors) {
+ List<ValidationError> validationErrorList = new LinkedList<>();
+ ValidationError validationError1 = new ValidationError();
+ validationError1.setInput("input");
+ validationError1.setSubject("subject");
+ validationError1.setReason("is not valid");
+ validationErrorList.add(validationError1);
+
+ ValidationError validationError2 = new ValidationError();
+ validationError2.setInput("input2");
+ validationError2.setSubject("subject2");
+ validationError2.setReason("is not valid too");
+ validationErrorList.add(validationError2);
+
+ controllerServiceHealth.setValidationErrorList(validationErrorList);
+ } else {
+ controllerServiceHealth.setValidationErrorList(Collections.EMPTY_LIST);
+ }
+ }
+
+ flowStatusReport.setControllerServiceStatusList(Collections.singletonList(controllerServiceStatus));
+ }
+
+ public static void addInstanceStatus(FlowStatusReport flowStatusReport, boolean addHealth, boolean addStats, boolean addBulletins, boolean populateBulletins) {
+ InstanceStatus instanceStatus = new InstanceStatus();
+
+ if (addHealth) {
+ InstanceHealth instanceHealth = new InstanceHealth();
+ instanceHealth.setQueuedContentSize(1L);
+ instanceHealth.setQueuedCount(2);
+ instanceHealth.setActiveThreads(3);
+ instanceHealth.setHasBulletins(populateBulletins);
+ instanceStatus.setInstanceHealth(instanceHealth);
+ }
+
+ if (addBulletins) {
+ if (populateBulletins) {
+ BulletinStatus bulletinStatus = new BulletinStatus();
+ bulletinStatus.setMessage("Bulletin message");
+ bulletinStatus.setTimestamp(new Date(1464019245000L));
+ instanceStatus.setBulletinList(Collections.singletonList(bulletinStatus));
+ } else {
+ instanceStatus.setBulletinList(Collections.EMPTY_LIST);
+ }
+ }
+
+ if (addStats) {
+ InstanceStats instanceStats = new InstanceStats();
+ instanceStats.setBytesRead(1L);
+ instanceStats.setBytesWritten(2L);
+ instanceStats.setBytesSent(3L);
+ instanceStats.setFlowfilesSent(4);
+ instanceStats.setBytesTransferred(5L);
+ instanceStats.setFlowfilesTransferred(6);
+ instanceStats.setBytesReceived(7L);
+ instanceStats.setFlowfilesReceived(8);
+ instanceStatus.setInstanceStats(instanceStats);
+ }
+
+ flowStatusReport.setInstanceStatus(instanceStatus);
+ }
+
+ public static void addSystemDiagnosticStatus(FlowStatusReport flowStatusReport, boolean addHeap, boolean addProcessorStats, boolean addFlowFileRepoUsage, boolean addContentRepoUsage,
+ boolean addGarbageCollectionStatus) {
+
+ SystemDiagnosticsStatus expectedSystemDiagnosticStatus = new SystemDiagnosticsStatus();
+
+ if (addHeap) {
+ HeapStatus heapStatus = new HeapStatus();
+ heapStatus.setMaxHeap(5);
+ heapStatus.setTotalHeap(3);
+ heapStatus.setUsedHeap(2);
+ heapStatus.setFreeHeap(1);
+ heapStatus.setHeapUtilization(40);
+ heapStatus.setMaxNonHeap(9);
+ heapStatus.setTotalNonHeap(8);
+ heapStatus.setUsedNonHeap(6);
+ heapStatus.setFreeNonHeap(2);
+ heapStatus.setNonHeapUtilization(67);
+ expectedSystemDiagnosticStatus.setHeapStatus(heapStatus);
+ }
+
+ if (addProcessorStats) {
+ SystemProcessorStats systemProcessorStats = new SystemProcessorStats();
+ systemProcessorStats.setLoadAverage(80.9);
+ systemProcessorStats.setAvailableProcessors(5);
+ expectedSystemDiagnosticStatus.setProcessorStatus(systemProcessorStats);
+ }
+
+ if (addFlowFileRepoUsage) {
+ FlowfileRepositoryUsage flowfileRepositoryUsage = new FlowfileRepositoryUsage();
+ flowfileRepositoryUsage.setFreeSpace(30);
+ flowfileRepositoryUsage.setTotalSpace(100);
+ flowfileRepositoryUsage.setUsedSpace(70);
+ flowfileRepositoryUsage.setDiskUtilization(70);
+ expectedSystemDiagnosticStatus.setFlowfileRepositoryUsage(flowfileRepositoryUsage);
+ }
+
+ if (addContentRepoUsage) {
+ List<ContentRepositoryUsage> contentRepositoryUsageList = new LinkedList<>();
+ ContentRepositoryUsage contentRepositoryUsage = new ContentRepositoryUsage();
+ contentRepositoryUsage.setFreeSpace(30);
+ contentRepositoryUsage.setTotalSpace(100);
+ contentRepositoryUsage.setName("Content repo1");
+ contentRepositoryUsage.setUsedSpace(70);
+ contentRepositoryUsage.setDiskUtilization(70);
+ contentRepositoryUsageList.add(contentRepositoryUsage);
+ expectedSystemDiagnosticStatus.setContentRepositoryUsageList(contentRepositoryUsageList);
+ }
+
+ if (addGarbageCollectionStatus) {
+ List<GarbageCollectionStatus> garbageCollectionStatusList = new LinkedList<>();
+ GarbageCollectionStatus garbageCollectionStatus1 = new GarbageCollectionStatus();
+ garbageCollectionStatus1.setCollectionCount(1);
+ garbageCollectionStatus1.setCollectionTime(10);
+ garbageCollectionStatus1.setName("garbage 1");
+ garbageCollectionStatusList.add(garbageCollectionStatus1);
+ expectedSystemDiagnosticStatus.setGarbageCollectionStatusList(garbageCollectionStatusList);
+ }
+
+ flowStatusReport.setSystemDiagnosticsStatus(expectedSystemDiagnosticStatus);
+ }
+
+ public static void addReportingTaskStatus(FlowStatusReport flowStatusReport, boolean addHealth, boolean addValidationErrors, boolean addBulletins, boolean populateBulletins) {
+ ReportingTaskStatus reportingTaskStatus = new ReportingTaskStatus();
+
+ reportingTaskStatus.setName("ReportProvenance");
+
+ if (addHealth) {
+ ReportingTaskHealth reportingTaskHealth = new ReportingTaskHealth();
+
+ reportingTaskHealth.setActiveThreads(1);
+ reportingTaskHealth.setScheduledState("RUNNING");
+ reportingTaskHealth.setHasBulletins(populateBulletins);
+
+ if (addValidationErrors) {
+ List<ValidationError> validationErrorList = new LinkedList<>();
+ ValidationError validationError1 = new ValidationError();
+ validationError1.setInput("input");
+ validationError1.setSubject("subject");
+ validationError1.setReason("is not valid");
+ validationErrorList.add(validationError1);
+
+ ValidationError validationError2 = new ValidationError();
+ validationError2.setInput("input2");
+ validationError2.setSubject("subject2");
+ validationError2.setReason("is not valid too");
+ validationErrorList.add(validationError2);
+
+ reportingTaskHealth.setValidationErrorList(validationErrorList);
+ } else {
+ reportingTaskHealth.setValidationErrorList(Collections.EMPTY_LIST);
+ }
+ reportingTaskStatus.setReportingTaskHealth(reportingTaskHealth);
+ }
+
+ if (addBulletins) {
+ if (populateBulletins) {
+ BulletinStatus bulletinStatus = new BulletinStatus();
+ bulletinStatus.setMessage("Bulletin message");
+ bulletinStatus.setTimestamp(new Date(1464019245000L));
+ reportingTaskStatus.setBulletinList(Collections.singletonList(bulletinStatus));
+ } else {
+ reportingTaskStatus.setBulletinList(Collections.EMPTY_LIST);
+ }
+ }
+
+ flowStatusReport.setReportingTaskStatusList(Collections.singletonList(reportingTaskStatus));
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/99820519/minifi-commons/minifi-utils/src/test/java/org/apache/nifi/minifi/commons/status/TestStatusReport.java
----------------------------------------------------------------------
diff --git a/minifi-commons/minifi-utils/src/test/java/org/apache/nifi/minifi/commons/status/TestStatusReport.java b/minifi-commons/minifi-utils/src/test/java/org/apache/nifi/minifi/commons/status/TestStatusReport.java
new file mode 100644
index 0000000..fc697e3
--- /dev/null
+++ b/minifi-commons/minifi-utils/src/test/java/org/apache/nifi/minifi/commons/status/TestStatusReport.java
@@ -0,0 +1,88 @@
+/*
+ * 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.commons.status;
+
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
+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;
+
+public class TestStatusReport {
+
+ @Test
+ public void verifySerializableFullyPopulated() throws IOException, ClassNotFoundException {
+ FlowStatusReport original = new FlowStatusReport();
+
+ addControllerServiceStatus(original, true, true, true, true);
+ addInstanceStatus(original, true, true, true, true);
+ addSystemDiagnosticStatus(original, true, true, true, true, true);
+ addReportingTaskStatus(original, true, true, true, true);
+ addConnectionStatus(original, true, true);
+ addProcessorStatus(original, true, true, true, true, true);
+ addExpectedRemoteProcessGroupStatus(original, true, true, true, true, true, true);
+
+ byte[] byteArrayCopy = serialize(original);
+ FlowStatusReport copy = unSerialize(byteArrayCopy, FlowStatusReport.class);
+
+ assertEquals(original, copy);
+ }
+
+ @Test
+ public void verifySerializableSomeNull() throws IOException, ClassNotFoundException {
+ FlowStatusReport original = new FlowStatusReport();
+
+ addControllerServiceStatus(original, true, true, true, true);
+ addInstanceStatus(original, true, true, true, true);
+ addSystemDiagnosticStatus(original, true, true, true, true, true);
+ addProcessorStatus(original, true, true, true, true, true);
+ addExpectedRemoteProcessGroupStatus(original, true, true, true, true, true, true);
+
+ byte[] byteArrayCopy = serialize(original);
+ FlowStatusReport copy = unSerialize(byteArrayCopy, FlowStatusReport.class);
+
+ assertEquals(original, copy);
+ }
+
+ private static <T extends Serializable> byte[] serialize(T obj) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(obj);
+ oos.close();
+ return baos.toByteArray();
+ }
+
+ private static <T extends Serializable> T unSerialize(byte[] b, Class<T> cl) throws IOException, ClassNotFoundException {
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ Object o = ois.readObject();
+ return cl.cast(o);
+ }
+}