Skip to content

Commit

Permalink
MGR-126
Browse files Browse the repository at this point in the history
  • Loading branch information
madness-inc committed Dec 22, 2021
1 parent 5f30481 commit d93367b
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 35 deletions.
Expand Up @@ -25,11 +25,9 @@
import java.util.Map;
import java.util.Map.Entry;

import javax.management.MBeanException;
import javax.management.JMException;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.OperationsException;
import javax.management.ReflectionException;
import javax.management.openmbean.CompositeData;

import org.apache.commons.collections.keyvalue.DefaultMapEntry;
Expand All @@ -45,6 +43,9 @@
import org.appng.tools.ui.StringNormalizer;
import org.springframework.stereotype.Component;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
Expand All @@ -56,16 +57,19 @@ public class Environment implements DataProvider {

public DataContainer getData(Site site, Application app, org.appng.api.Environment env, Options opts,
Request request, FieldProcessor fp) {
String action = opts.getOptionValue("mode", "id");
DataContainer dataContainer = new DataContainer(fp);
String action = opts.getString("mode", "id");
Map<?, ?> entryMap = null;
if ("env".equals(action)) {
boolean paginate = true;

switch (action) {
case "env":
entryMap = System.getenv();
} else if ("props".equals(action)) {
break;
case "props":
entryMap = System.getProperties();
} else if ("jvm".equals(action)) {
break;
case "jvm":
Map<String, String> jvm = new HashMap<String, String>();
entryMap = jvm;
List<String> inputArguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
for (String arg : inputArguments) {
int idx = arg.indexOf('=');
Expand All @@ -77,21 +81,33 @@ public DataContainer getData(Site site, Application app, org.appng.api.Environme
jvm.replace(key, jvm.get(key) + StringUtils.LF + value);
}
}
} else if ("mem".equals(action)) {
entryMap = jvm;
break;
case "mem":
Map<String, LeveledEntry> memory = new HashMap<String, LeveledEntry>();
entryMap = memory;
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
addUsage(memory, mBeanServer, "Heap", "Memory", null, "HeapMemoryUsage");
addUsage(memory, mBeanServer, "Metaspace", "MemoryPool", "Metaspace", "Usage");
} else if ("proc".equals(action)) {
entryMap = memory;
paginate = false;
break;
case "proc":
Map<String, String> proc = new HashMap<String, String>();
entryMap = proc;
OperatingSystemMXBean osMxBean = ManagementFactory.getOperatingSystemMXBean();
proc.put("Processors", Integer.toString(osMxBean.getAvailableProcessors()));
proc.put("Average Load", Double.toString(osMxBean.getSystemLoadAverage()));
entryMap = proc;
paginate = false;
break;
}

dataContainer.setPage(getSortedEntries(entryMap), fp.getPageable());
DataContainer dataContainer = new DataContainer(fp);
List<Entry<String, ?>> sortedEntries = getSortedEntries(entryMap);
if (paginate) {
dataContainer.setPage(sortedEntries, fp.getPageable());
} else {
dataContainer.setItems(sortedEntries);
}
return dataContainer;
}

Expand All @@ -115,7 +131,7 @@ protected void addUsage(Map<String, LeveledEntry> entryMap, MBeanServer mBeanSer
entryMap.put(entryName + " Used (%)",
new LeveledEntry(new DecimalFormat("#0.00 %").format(percentage), level));
}
} catch (OperationsException | ReflectionException | MBeanException e) {
} catch (JMException e) {
log.error("error adding memory usage", e);
}
}
Expand All @@ -140,30 +156,16 @@ protected void addUsage(Map<String, LeveledEntry> entryMap, MBeanServer mBeanSer
return entries;
}

@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public class LeveledEntry {
public static final int LOW = 1;
public static final int MED = 2;
public static final int HIGH = 3;

private String value;
private final String value;
private int level = 0;

public LeveledEntry(String value) {
this.value = value;
}

public LeveledEntry(String value, int level) {
this.value = value;
this.level = level;
}

public String getValue() {
return value;
}

public int getLevel() {
return level;
}
}

}
2 changes: 1 addition & 1 deletion src/test/resources/xml/EnvironmentTest-validateMemory.xml
Expand Up @@ -29,5 +29,5 @@
</link>
</linkpanel>
</config>
<data />
<data paginate="false" />
</datasource>
Expand Up @@ -14,5 +14,5 @@
</field>
</meta-data>
</config>
<data />
<data paginate="false" />
</datasource>

0 comments on commit d93367b

Please sign in to comment.