Commit 5d7c4150 authored by shengnan hu's avatar shengnan hu
Browse files

init

parents
Pipeline #4720 failed with stage
in 31 seconds
package com.taobao.arthas.core.command.model;
/**
* Model of `heapdump` command
* @author gongdewei 2020/4/24
*/
public class HeapDumpModel extends ResultModel {
private String dumpFile;
private boolean live;
public HeapDumpModel() {
}
public HeapDumpModel(String dumpFile, boolean live) {
this.dumpFile = dumpFile;
this.live = live;
}
public String getDumpFile() {
return dumpFile;
}
public void setDumpFile(String dumpFile) {
this.dumpFile = dumpFile;
}
public boolean isLive() {
return live;
}
public void setLive(boolean live) {
this.live = live;
}
@Override
public String getType() {
return "heapdump";
}
}
package com.taobao.arthas.core.command.model;
import java.util.ArrayList;
import java.util.List;
/**
* @author gongdewei 2020/4/3
*/
public class HelpModel extends ResultModel {
//list
private List<CommandVO> commands;
//details
private CommandVO detailCommand;
public HelpModel() {
}
public HelpModel(List<CommandVO> commands) {
this.commands = commands;
}
public HelpModel(CommandVO command) {
this.detailCommand = command;
}
public void addCommandVO(CommandVO commandVO){
if (commands == null) {
commands = new ArrayList<CommandVO>();
}
this.commands.add(commandVO);
}
public List<CommandVO> getCommands() {
return commands;
}
public void setCommands(List<CommandVO> commands) {
this.commands = commands;
}
public CommandVO getDetailCommand() {
return detailCommand;
}
@Override
public String getType() {
return "help";
}
}
package com.taobao.arthas.core.command.model;
import java.util.List;
/**
* @author gongdewei 2020/4/8
*/
public class HistoryModel extends ResultModel {
private List<String> history;
public HistoryModel() {
}
public HistoryModel(List<String> history) {
this.history = history;
}
public List<String> getHistory() {
return history;
}
@Override
public String getType() {
return "history";
}
}
package com.taobao.arthas.core.command.model;
/**
* Command input status for webui
* @author gongdewei 2020/4/14
*/
public enum InputStatus {
/**
* Allow input new commands
*/
ALLOW_INPUT,
/**
* Allow interrupt running job
*/
ALLOW_INTERRUPT,
/**
* Disable input and interrupt
*/
DISABLED
}
package com.taobao.arthas.core.command.model;
/**
* Input status for webui
* @author gongdewei 2020/4/14
*/
public class InputStatusModel extends ResultModel {
private InputStatus inputStatus;
public InputStatusModel(InputStatus inputStatus) {
this.inputStatus = inputStatus;
}
public InputStatus getInputStatus() {
return inputStatus;
}
public void setInputStatus(InputStatus inputStatus) {
this.inputStatus = inputStatus;
}
@Override
public String getType() {
return "input_status";
}
}
package com.taobao.arthas.core.command.model;
import java.util.Collection;
import java.util.NavigableMap;
/**
* @author gongdewei 2020/4/22
* @author hengyunabc 2021-02-23
*/
public class JadModel extends ResultModel {
private ClassVO classInfo;
private String location;
private String source;
private NavigableMap<Integer,Integer> mappings;
private Collection<ClassLoaderVO> matchedClassLoaders;
private String classLoaderClass;
//match multiple classes
private Collection<ClassVO> matchedClasses;
@Override
public String getType() {
return "jad";
}
public JadModel() {
}
public ClassVO getClassInfo() {
return classInfo;
}
public void setClassInfo(ClassVO classInfo) {
this.classInfo = classInfo;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public NavigableMap<Integer, Integer> getMappings() {
return mappings;
}
public void setMappings(NavigableMap<Integer, Integer> mappings) {
this.mappings = mappings;
}
public Collection<ClassVO> getMatchedClasses() {
return matchedClasses;
}
public void setMatchedClasses(Collection<ClassVO> matchedClasses) {
this.matchedClasses = matchedClasses;
}
public String getClassLoaderClass() {
return classLoaderClass;
}
public JadModel setClassLoaderClass(String classLoaderClass) {
this.classLoaderClass = classLoaderClass;
return this;
}
public Collection<ClassLoaderVO> getMatchedClassLoaders() {
return matchedClassLoaders;
}
public JadModel setMatchedClassLoaders(Collection<ClassLoaderVO> matchedClassLoaders) {
this.matchedClassLoaders = matchedClassLoaders;
return this;
}
}
package com.taobao.arthas.core.command.model;
/**
* Key/value/desc
* @author gongdewei 2020/4/24
*/
public class JvmItemVO {
private String name;
private Object value;
private String desc;
public JvmItemVO(String name, Object value, String desc) {
this.name = name;
this.value = value;
this.desc = desc;
}
public JvmItemVO(String name, Object value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
package com.taobao.arthas.core.command.model;
import java.util.*;
/**
* Model of 'jvm' command
*
* @author gongdewei 2020/4/24
*/
public class JvmModel extends ResultModel {
private Map<String, List<JvmItemVO>> jvmInfo;
public JvmModel() {
jvmInfo = Collections.synchronizedMap(new LinkedHashMap<String, List<JvmItemVO>>());
}
@Override
public String getType() {
return "jvm";
}
public JvmModel addItem(String group, String name, Object value) {
this.addItem(group, name, value, null);
return this;
}
public JvmModel addItem(String group, String name, Object value, String desc) {
this.group(group).add(new JvmItemVO(name, value, desc));
return this;
}
public List<JvmItemVO> group(String group) {
synchronized (this) {
List<JvmItemVO> list = jvmInfo.get(group);
if (list == null) {
list = new ArrayList<JvmItemVO>();
jvmInfo.put(group, list);
}
return list;
}
}
public Map<String, List<JvmItemVO>> getJvmInfo() {
return jvmInfo;
}
}
package com.taobao.arthas.core.command.model;
import java.util.Collection;
import java.util.Map;
/**
* Model of logger command
*
* @author gongdewei 2020/4/22
*/
public class LoggerModel extends ResultModel {
private Map<String, Map<String, Object>> loggerInfoMap;
private Collection<ClassLoaderVO> matchedClassLoaders;
private String classLoaderClass;
public LoggerModel() {
}
public LoggerModel(Map<String, Map<String, Object>> loggerInfoMap) {
this.loggerInfoMap = loggerInfoMap;
}
public Map<String, Map<String, Object>> getLoggerInfoMap() {
return loggerInfoMap;
}
public void setLoggerInfoMap(Map<String, Map<String, Object>> loggerInfoMap) {
this.loggerInfoMap = loggerInfoMap;
}
public String getClassLoaderClass() {
return classLoaderClass;
}
public LoggerModel setClassLoaderClass(String classLoaderClass) {
this.classLoaderClass = classLoaderClass;
return this;
}
public Collection<ClassLoaderVO> getMatchedClassLoaders() {
return matchedClassLoaders;
}
public LoggerModel setMatchedClassLoaders(Collection<ClassLoaderVO> matchedClassLoaders) {
this.matchedClassLoaders = matchedClassLoaders;
return this;
}
@Override
public String getType() {
return "logger";
}
}
package com.taobao.arthas.core.command.model;
/**
* MBean attribute
*
* @author gongdewei 2020/4/26
*/
public class MBeanAttributeVO {
private String name;
private Object value;
private String error;
public MBeanAttributeVO(String name, Object value) {
this.name = name;
this.value = value;
}
public MBeanAttributeVO(String name, Object value, String error) {
this.name = name;
this.value = value;
this.error = error;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}
package com.taobao.arthas.core.command.model;
import javax.management.MBeanInfo;
import java.util.List;
import java.util.Map;
/**
* Model of 'mbean'
*
* @author gongdewei 2020/4/26
*/
public class MBeanModel extends ResultModel {
private List<String> mbeanNames;
private Map<String, MBeanInfo> mbeanMetadata;
private Map<String, List<MBeanAttributeVO>> mbeanAttribute;
public MBeanModel() {
}
public MBeanModel(List<String> mbeanNames) {
this.mbeanNames = mbeanNames;
}
@Override
public String getType() {
return "mbean";
}
public List<String> getMbeanNames() {
return mbeanNames;
}
public void setMbeanNames(List<String> mbeanNames) {
this.mbeanNames = mbeanNames;
}
public Map<String, MBeanInfo> getMbeanMetadata() {
return mbeanMetadata;
}
public void setMbeanMetadata(Map<String, MBeanInfo> mbeanMetadata) {
this.mbeanMetadata = mbeanMetadata;
}
public Map<String, List<MBeanAttributeVO>> getMbeanAttribute() {
return mbeanAttribute;
}
public void setMbeanAttribute(Map<String, List<MBeanAttributeVO>> mbeanAttribute) {
this.mbeanAttribute = mbeanAttribute;
}
}
package com.taobao.arthas.core.command.model;
import java.util.Collection;
import java.util.List;
/**
* @author gongdewei 2020/4/20
*/
public class MemoryCompilerModel extends ResultModel {
private List<String> files;
private Collection<ClassLoaderVO> matchedClassLoaders;
private String classLoaderClass;
public MemoryCompilerModel() {
}
public MemoryCompilerModel(List<String> files) {
this.files = files;
}
public void setFiles(List<String> files) {
this.files = files;
}
public List<String> getFiles() {
return files;
}
public String getClassLoaderClass() {
return classLoaderClass;
}
public MemoryCompilerModel setClassLoaderClass(String classLoaderClass) {
this.classLoaderClass = classLoaderClass;
return this;
}
public Collection<ClassLoaderVO> getMatchedClassLoaders() {
return matchedClassLoaders;
}
public MemoryCompilerModel setMatchedClassLoaders(Collection<ClassLoaderVO> matchedClassLoaders) {
this.matchedClassLoaders = matchedClassLoaders;
return this;
}
@Override
public String getType() {
return "mc";
}
}
package com.taobao.arthas.core.command.model;
/**
* Memory info of 'dashboard' command
*
* @author gongdewei 2020/4/22
*/
public class MemoryEntryVO {
public static final String TYPE_HEAP = "heap";
public static final String TYPE_NON_HEAP = "nonheap";
public static final String TYPE_BUFFER_POOL = "buffer_pool";
private String type;
private String name;
private long used;
private long total;
private long max;
public MemoryEntryVO() {
}
public MemoryEntryVO(String type, String name, long used, long total, long max) {
this.type = type;
this.name = name;
this.used = used;
this.total = total;
this.max = max;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getUsed() {
return used;
}
public void setUsed(long used) {
this.used = used;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public long getMax() {
return max;
}
public void setMax(long max) {
this.max = max;
}
}
package com.taobao.arthas.core.command.model;
import java.util.List;
import java.util.Map;
/**
* Model of 'memory' command
* @author hengyunabc 2022-03-01
*/
public class MemoryModel extends ResultModel {
private Map<String, List<MemoryEntryVO>> memoryInfo;
@Override
public String getType() {
return "memory";
}
public Map<String, List<MemoryEntryVO>> getMemoryInfo() {
return memoryInfo;
}
public void setMemoryInfo(Map<String, List<MemoryEntryVO>> memoryInfo) {
this.memoryInfo = memoryInfo;
}
}
package com.taobao.arthas.core.command.model;
/**
* @author gongdewei 2020/4/2
*/
public class MessageModel extends ResultModel {
private String message;
public MessageModel() {
}
public MessageModel(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
@Override
public String getType() {
return "message";
}
}
package com.taobao.arthas.core.command.model;
/**
* Method call node of TraceCommand
* @author gongdewei 2020/4/29
*/
public class MethodNode extends TraceNode {
private String className;
private String methodName;
private int lineNumber;
private Boolean isThrow;
private String throwExp;
/**
* 是否为invoke方法,true为beforeInvoke,false为方法体入口的onBefore
*/
private boolean isInvoking;
/**
* 开始时间戳
*/
private long beginTimestamp;
/**
* 结束时间戳
*/
private long endTimestamp;
/**
* 合并统计相同调用,并计算最小\最大\总耗时
*/
private long minCost = Long.MAX_VALUE;
private long maxCost = Long.MIN_VALUE;
private long totalCost = 0;
private long times = 0;
public MethodNode(String className, String methodName, int lineNumber, boolean isInvoking) {
super("method");
this.className = className;
this.methodName = methodName;
this.lineNumber = lineNumber;
this.isInvoking = isInvoking;
}
public void begin() {
beginTimestamp = System.nanoTime();
}
public void end() {
endTimestamp = System.nanoTime();
long cost = getCost();
if (cost < minCost) {
minCost = cost;
}
if (cost > maxCost) {
maxCost = cost;
}
times++;
totalCost += cost;
}
public long getCost() {
return endTimestamp - beginTimestamp;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public int getLineNumber() {
return lineNumber;
}
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
public Boolean getThrow() {
return isThrow;
}
public void setThrow(Boolean aThrow) {
isThrow = aThrow;
}
public String getThrowExp() {
return throwExp;
}
public void setThrowExp(String throwExp) {
this.throwExp = throwExp;
}
public long getMinCost() {
return minCost;
}
public void setMinCost(long minCost) {
this.minCost = minCost;
}
public long getMaxCost() {
return maxCost;
}
public void setMaxCost(long maxCost) {
this.maxCost = maxCost;
}
public long getTotalCost() {
return totalCost;
}
public void setTotalCost(long totalCost) {
this.totalCost = totalCost;
}
public long getTimes() {
return times;
}
public void setTimes(long times) {
this.times = times;
}
public boolean isInvoking() {
return isInvoking;
}
public void setInvoking(boolean invoking) {
isInvoking = invoking;
}
}
package com.taobao.arthas.core.command.model;
/**
* Method or Constructor VO
* @author gongdewei 2020/4/9
*/
public class MethodVO {
private String declaringClass;
private String methodName;
private String modifier;
private String[] annotations;
private String[] parameters;
private String returnType;
private String[] exceptions;
private String classLoaderHash;
private String descriptor;
private boolean constructor;
public String getDeclaringClass() {
return declaringClass;
}
public void setDeclaringClass(String declaringClass) {
this.declaringClass = declaringClass;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public String getModifier() {
return modifier;
}
public void setModifier(String modifier) {
this.modifier = modifier;
}
public String[] getAnnotations() {
return annotations;
}
public void setAnnotations(String[] annotations) {
this.annotations = annotations;
}
public String[] getParameters() {
return parameters;
}
public void setParameters(String[] parameters) {
this.parameters = parameters;
}
public String getReturnType() {
return returnType;
}
public void setReturnType(String returnType) {
this.returnType = returnType;
}
public String[] getExceptions() {
return exceptions;
}
public void setExceptions(String[] exceptions) {
this.exceptions = exceptions;
}
public String getClassLoaderHash() {
return classLoaderHash;
}
public void setClassLoaderHash(String classLoaderHash) {
this.classLoaderHash = classLoaderHash;
}
public boolean isConstructor() {
return constructor;
}
public void setConstructor(boolean constructor) {
this.constructor = constructor;
}
public String getDescriptor() {
return descriptor;
}
public void setDescriptor(String descriptor) {
this.descriptor = descriptor;
}
}
package com.taobao.arthas.core.command.model;
import com.taobao.arthas.core.command.monitor200.MonitorData;
import java.util.List;
/**
* Data model of MonitorCommand
* @author gongdewei 2020/4/28
*/
public class MonitorModel extends ResultModel {
private List<MonitorData> monitorDataList;
public MonitorModel() {
}
public MonitorModel(List<MonitorData> monitorDataList) {
this.monitorDataList = monitorDataList;
}
@Override
public String getType() {
return "monitor";
}
public List<MonitorData> getMonitorDataList() {
return monitorDataList;
}
public void setMonitorDataList(List<MonitorData> monitorDataList) {
this.monitorDataList = monitorDataList;
}
}
package com.taobao.arthas.core.command.model;
/**
* <pre>
* 包装一层,解决json输出问题
* https://github.com/alibaba/arthas/issues/2261
* </pre>
*
* @author hengyunabc 2022-08-24
*
*/
public class ObjectVO {
private Object object;
private Integer expand;
public ObjectVO(Object object, Integer expand) {
this.object = object;
this.expand = expand;
}
public static ObjectVO[] array(Object[] objects, Integer expand) {
ObjectVO[] result = new ObjectVO[objects.length];
for (int i = 0; i < objects.length; ++i) {
result[i] = new ObjectVO(objects[i], expand);
}
return result;
}
public int expandOrDefault() {
if (expand != null) {
return expand;
}
return 1;
}
public boolean needExpand() {
return null != expand && expand > 0;
}
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
public Integer getExpand() {
return expand;
}
public void setExpand(Integer expand) {
this.expand = expand;
}
}
package com.taobao.arthas.core.command.model;
import java.util.Collection;
/**
* Data model of OgnlCommand
* @author gongdewei 2020/4/29
*/
public class OgnlModel extends ResultModel {
private ObjectVO value;
private Collection<ClassLoaderVO> matchedClassLoaders;
private String classLoaderClass;
@Override
public String getType() {
return "ognl";
}
public ObjectVO getValue() {
return value;
}
public OgnlModel setValue(ObjectVO value) {
this.value = value;
return this;
}
public String getClassLoaderClass() {
return classLoaderClass;
}
public OgnlModel setClassLoaderClass(String classLoaderClass) {
this.classLoaderClass = classLoaderClass;
return this;
}
public Collection<ClassLoaderVO> getMatchedClassLoaders() {
return matchedClassLoaders;
}
public OgnlModel setMatchedClassLoaders(Collection<ClassLoaderVO> matchedClassLoaders) {
this.matchedClassLoaders = matchedClassLoaders;
return this;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment