From 96c4d5524b3ebdb9b8f2697b694c34a491853cdc Mon Sep 17 00:00:00 2001 From: 314jhj <314jhj@users.noreply.github.com> Date: Fri, 22 Jun 2018 13:11:37 -0400 Subject: [PATCH 01/18] Import from gitlab repo --- .../coreapps/sysmon/api/ChannelInfo.java | 20 ++ .../coreapps/sysmon/api/ConnectionInfo.java | 20 ++ .../coreapps/sysmon/api/DataListener.java | 7 + .../coreapps/sysmon/api/EventListener.java | 4 + .../coreapps/sysmon/api/ISysmon.java | 14 ++ .../openicelite/coreapps/sysmon/api/Info.java | 48 ++++ .../coreapps/sysmon/api/Listener.java | 5 + .../coreapps/sysmon/api/Metric.java | 4 + .../coreapps/sysmon/api/MetricType.java | 7 + core_apps/sysmon/demo/build.gradle | 8 + .../sysmon/demo/ChannelDetailPane.java | 56 +++++ .../sysmon/demo/ConnectionDetailPane.java | 46 ++++ .../openice/coreapps/sysmon/demo/Main.java | 136 +++++++++++ core_apps/sysmon/log4j2.properties | 44 ++++ core_apps/sysmon/mqtt/build.gradle | 10 + .../coreapps/sysmon/mqtt/ConnHandler.java | 223 ++++++++++++++++++ .../coreapps/sysmon/mqtt/DbConn.java | 5 + .../coreapps/sysmon/mqtt/HttpConn.java | 61 +++++ .../coreapps/sysmon/mqtt/MqttMetricType.java | 7 + .../coreapps/sysmon/mqtt/MqttSysmon.java | 104 ++++++++ 20 files changed, 829 insertions(+) create mode 100644 core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ChannelInfo.java create mode 100644 core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ConnectionInfo.java create mode 100644 core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/DataListener.java create mode 100644 core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/EventListener.java create mode 100644 core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ISysmon.java create mode 100644 core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Info.java create mode 100644 core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Listener.java create mode 100644 core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Metric.java create mode 100644 core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/MetricType.java create mode 100644 core_apps/sysmon/demo/build.gradle create mode 100644 core_apps/sysmon/demo/src/main/java/edu/upenn/cis/precise/openice/coreapps/sysmon/demo/ChannelDetailPane.java create mode 100644 core_apps/sysmon/demo/src/main/java/edu/upenn/cis/precise/openice/coreapps/sysmon/demo/ConnectionDetailPane.java create mode 100644 core_apps/sysmon/demo/src/main/java/edu/upenn/cis/precise/openice/coreapps/sysmon/demo/Main.java create mode 100644 core_apps/sysmon/log4j2.properties create mode 100644 core_apps/sysmon/mqtt/build.gradle create mode 100644 core_apps/sysmon/mqtt/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/mqtt/ConnHandler.java create mode 100644 core_apps/sysmon/mqtt/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/mqtt/DbConn.java create mode 100644 core_apps/sysmon/mqtt/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/mqtt/HttpConn.java create mode 100644 core_apps/sysmon/mqtt/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/mqtt/MqttMetricType.java create mode 100644 core_apps/sysmon/mqtt/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/mqtt/MqttSysmon.java diff --git a/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ChannelInfo.java b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ChannelInfo.java new file mode 100644 index 0000000..329ed9d --- /dev/null +++ b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ChannelInfo.java @@ -0,0 +1,20 @@ +package edu.upenn.cis.precise.openicelite.coreapps.sysmon.api; + +public class ChannelInfo extends Info { + + public static final String[] required = + { + "name", "connection_details_name", "recv_rate", "send_rate", + "message_stats_deliver_get_details_rate", + "message_stats_publish_details_rate", "ssl" + }; + + public ChannelInfo() { + super(); + } + + @Override + public String[] requiredFields() { + return required; + } +} diff --git a/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ConnectionInfo.java b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ConnectionInfo.java new file mode 100644 index 0000000..31184d2 --- /dev/null +++ b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ConnectionInfo.java @@ -0,0 +1,20 @@ +package edu.upenn.cis.precise.openicelite.coreapps.sysmon.api; + +public class ConnectionInfo extends Info{ + + public static final String[] required = { + "name", "channels", "recv_oct_details_rate", "send_oct_details_rate", "ssl" + }; + + public ConnectionInfo() { + // TODO Auto-generated constructor stub + } + + @Override + public String[] requiredFields() { + return required; + } + + + +} diff --git a/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/DataListener.java b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/DataListener.java new file mode 100644 index 0000000..596a914 --- /dev/null +++ b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/DataListener.java @@ -0,0 +1,7 @@ +package edu.upenn.cis.precise.openicelite.coreapps.sysmon.api; + +import java.util.List; + +public interface DataListener extends Listener { + void handleData(List data); +} diff --git a/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/EventListener.java b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/EventListener.java new file mode 100644 index 0000000..2bf035c --- /dev/null +++ b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/EventListener.java @@ -0,0 +1,4 @@ +package edu.upenn.cis.precise.openicelite.coreapps.sysmon.api; + +public interface EventListener extends Listener { +} diff --git a/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ISysmon.java b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ISysmon.java new file mode 100644 index 0000000..ae5a082 --- /dev/null +++ b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/ISysmon.java @@ -0,0 +1,14 @@ +package edu.upenn.cis.precise.openicelite.coreapps.sysmon.api; + +public interface ISysmon { + void init(String configFilePath); + void start(); + void stop(); + void setOption(String optionName, Object value); + Object getOption(String optionName); + + void addMonitor(String metric); + void addMonitor(Metric metric); + void addListener(String metric, Listener listener); + void addListener(Metric metric, Listener listener); +} diff --git a/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Info.java b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Info.java new file mode 100644 index 0000000..d357de8 --- /dev/null +++ b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Info.java @@ -0,0 +1,48 @@ +package edu.upenn.cis.precise.openicelite.coreapps.sysmon.api; + +import java.util.HashMap; + +public class Info { + protected HashMap content; + + public Info() { + content = new HashMap<>(); + guarantee(); + } + + private void guarantee() { + for (String s : requiredFields()) { + content.put(s, ""); + } + } + + public String[] requiredFields() { + return new String[0]; + } + + public void add(String field, Object object) { + content.put(field, object); + } + + public String getAsString(String name) { + if (content.containsKey(name)) { + return content.get(name).toString(); + } + return null; + } + + public Long getAsLong(String name) { + if (content.containsKey(name) && (content.get(name) instanceof Long)) { + return (Long) content.get(name); + } + return null; + } + + public Double getAsDouble(String name) { + if (content.containsKey(name) && (content.get(name) instanceof Double)) { + return (Double) content.get(name); + } + return null; + } + +} diff --git a/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Listener.java b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Listener.java new file mode 100644 index 0000000..513ff22 --- /dev/null +++ b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Listener.java @@ -0,0 +1,5 @@ +package edu.upenn.cis.precise.openicelite.coreapps.sysmon.api; + +public interface Listener { + void onNotAvailable(); +} diff --git a/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Metric.java b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Metric.java new file mode 100644 index 0000000..fd2314d --- /dev/null +++ b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/Metric.java @@ -0,0 +1,4 @@ +package edu.upenn.cis.precise.openicelite.coreapps.sysmon.api; + +public interface Metric { +} diff --git a/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/MetricType.java b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/MetricType.java new file mode 100644 index 0000000..4e4613d --- /dev/null +++ b/core_apps/sysmon/api/src/main/java/edu/upenn/cis/precise/openicelite/coreapps/sysmon/api/MetricType.java @@ -0,0 +1,7 @@ +package edu.upenn.cis.precise.openicelite.coreapps.sysmon.api; + +public enum MetricType implements Metric { + CONNECTIONS, + CHANNELS, + TOPICS; +} diff --git a/core_apps/sysmon/demo/build.gradle b/core_apps/sysmon/demo/build.gradle new file mode 100644 index 0000000..590a3d1 --- /dev/null +++ b/core_apps/sysmon/demo/build.gradle @@ -0,0 +1,8 @@ +group 'edu.upenn.cis.precise.openicelite.coreapps.sysmon' + +dependencies { + compile project (':core_apps:sysmon:api') + compile project (':core_apps:sysmon:mqtt') + compile project (':core_apps:sysmon:dds') + testCompile group: 'junit', name: 'junit', version: '4.12' +} diff --git a/core_apps/sysmon/demo/src/main/java/edu/upenn/cis/precise/openice/coreapps/sysmon/demo/ChannelDetailPane.java b/core_apps/sysmon/demo/src/main/java/edu/upenn/cis/precise/openice/coreapps/sysmon/demo/ChannelDetailPane.java new file mode 100644 index 0000000..3bdc4ad --- /dev/null +++ b/core_apps/sysmon/demo/src/main/java/edu/upenn/cis/precise/openice/coreapps/sysmon/demo/ChannelDetailPane.java @@ -0,0 +1,56 @@ +package edu.upenn.cis.precise.openice.coreapps.sysmon.demo; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import edu.upenn.cis.precise.openicelite.coreapps.sysmon.api.ChannelInfo; +import javafx.scene.control.Label; +import javafx.scene.layout.GridPane; + +public class ChannelDetailPane extends GridPane { + + private HashMap fieldIndex; + private List