mirror of
https://github.com/alibaba/arthas.git
synced 2024-04-21 10:21:39 +00:00
init
This commit is contained in:
@@ -0,0 +1,267 @@
|
||||
package com.taobao.arthas.core.view;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ralf0131 2018-07-10 10:55.
|
||||
*/
|
||||
public class ObjectViewTest {
|
||||
|
||||
@Test
|
||||
public void testNull() {
|
||||
ObjectView objectView = new ObjectView(null, 3);
|
||||
Assert.assertEquals("null", objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInteger() {
|
||||
ObjectView objectView = new ObjectView(new Integer(1), 3);
|
||||
Assert.assertEquals("@Integer[1]", objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChar() {
|
||||
ObjectView objectView = new ObjectView(new Character('中'), 3);
|
||||
Assert.assertEquals("@Character[中]", objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testString() {
|
||||
ObjectView objectView = new ObjectView("hello\nworld!", 3);
|
||||
Assert.assertEquals("@String[hello\\nworld!]", objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testList() {
|
||||
List<String> data = new ArrayList<String>();
|
||||
data.add("aaa");
|
||||
data.add("bbb");
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@ArrayList[\n" +
|
||||
" @String[aaa],\n" +
|
||||
" @String[bbb],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMap() {
|
||||
Map<String, String> data = new LinkedHashMap<String, String>();
|
||||
data.put("key1", "value1");
|
||||
data.put("key2", "value2");
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@LinkedHashMap[\n" +
|
||||
" @String[key1]:@String[value1],\n" +
|
||||
" @String[key2]:@String[value2],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIntArray() {
|
||||
int[] data = {1,3,4,5};
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@int[][\n" +
|
||||
" @Integer[1],\n" +
|
||||
" @Integer[3],\n" +
|
||||
" @Integer[4],\n" +
|
||||
" @Integer[5],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLongArray() {
|
||||
long[] data = {1L,3L,4L,5L};
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@long[][\n" +
|
||||
" @Long[1],\n" +
|
||||
" @Long[3],\n" +
|
||||
" @Long[4],\n" +
|
||||
" @Long[5],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShortArray() {
|
||||
short[] data = {1,3,4,5};
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@short[][\n" +
|
||||
" @Short[1],\n" +
|
||||
" @Short[3],\n" +
|
||||
" @Short[4],\n" +
|
||||
" @Short[5],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFloatArray() {
|
||||
float[] data = {1.0f, 3.0f, 4.2f, 5.3f};
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@float[][\n" +
|
||||
" @Float[1.0],\n" +
|
||||
" @Float[3.0],\n" +
|
||||
" @Float[4.2],\n" +
|
||||
" @Float[5.3],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDoubleArray() {
|
||||
double[] data = {1.0d, 3.0d, 4.2d, 5.3d};
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@double[][\n" +
|
||||
" @Double[1.0],\n" +
|
||||
" @Double[3.0],\n" +
|
||||
" @Double[4.2],\n" +
|
||||
" @Double[5.3],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBooleanArray() {
|
||||
boolean[] data = {true, false, true, true};
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@boolean[][\n" +
|
||||
" @Boolean[true],\n" +
|
||||
" @Boolean[false],\n" +
|
||||
" @Boolean[true],\n" +
|
||||
" @Boolean[true],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCharArray() {
|
||||
char[] data = {'a', 'b', 'c', 'd'};
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@char[][\n" +
|
||||
" @Character[a],\n" +
|
||||
" @Character[b],\n" +
|
||||
" @Character[c],\n" +
|
||||
" @Character[d],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testByteArray() {
|
||||
byte[] data = {'a', 'b', 'c', 'd'};
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@byte[][\n" +
|
||||
" @Byte[97],\n" +
|
||||
" @Byte[98],\n" +
|
||||
" @Byte[99],\n" +
|
||||
" @Byte[100],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testObjectArray() {
|
||||
String[] data = {"111", "222", "333", "444"};
|
||||
ObjectView objectView = new ObjectView(data, 3);
|
||||
String expected = "@String[][\n" +
|
||||
" @String[111],\n" +
|
||||
" @String[222],\n" +
|
||||
" @String[333],\n" +
|
||||
" @String[444],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testThrowable() {
|
||||
Exception t = new Exception("test");
|
||||
ObjectView objectView = new ObjectView(t, 3);
|
||||
Assert.assertTrue(objectView.draw().startsWith("java.lang.Exception: test"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDate() {
|
||||
Date d = new Date(1531204354961L);
|
||||
ObjectView objectView = new ObjectView(d, 3);
|
||||
String expected = "@Date[2018-07-10 14:32:34,961]";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNestedClass() {
|
||||
ObjectView objectView = new ObjectView(new NestedClass(100), 3);
|
||||
|
||||
String expected = "@NestedClass[\n" +
|
||||
" code=@Integer[100],\n" +
|
||||
" c1=@NestedClass[\n" +
|
||||
" code=@Integer[1],\n" +
|
||||
" c1=@NestedClass[\n" +
|
||||
" code=@Integer[1],\n" +
|
||||
" c1=@NestedClass[com.taobao.arthas.core.view.ObjectViewTest$NestedClass@ffffffff],\n" +
|
||||
" c2=@NestedClass[com.taobao.arthas.core.view.ObjectViewTest$NestedClass@ffffffff],\n" +
|
||||
" ],\n" +
|
||||
" c2=@NestedClass[\n" +
|
||||
" code=@Integer[2],\n" +
|
||||
" c1=@NestedClass[com.taobao.arthas.core.view.ObjectViewTest$NestedClass@ffffffff],\n" +
|
||||
" c2=@NestedClass[com.taobao.arthas.core.view.ObjectViewTest$NestedClass@ffffffff],\n" +
|
||||
" ],\n" +
|
||||
" ],\n" +
|
||||
" c2=@NestedClass[\n" +
|
||||
" code=@Integer[2],\n" +
|
||||
" c1=@NestedClass[\n" +
|
||||
" code=@Integer[1],\n" +
|
||||
" c1=@NestedClass[com.taobao.arthas.core.view.ObjectViewTest$NestedClass@ffffffff],\n" +
|
||||
" c2=@NestedClass[com.taobao.arthas.core.view.ObjectViewTest$NestedClass@ffffffff],\n" +
|
||||
" ],\n" +
|
||||
" c2=@NestedClass[\n" +
|
||||
" code=@Integer[2],\n" +
|
||||
" c1=@NestedClass[com.taobao.arthas.core.view.ObjectViewTest$NestedClass@ffffffff],\n" +
|
||||
" c2=@NestedClass[com.taobao.arthas.core.view.ObjectViewTest$NestedClass@ffffffff],\n" +
|
||||
" ],\n" +
|
||||
" ],\n" +
|
||||
"]";
|
||||
Assert.assertEquals(expected, replaceHashCode(objectView.draw()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testObjectTooLarge() {
|
||||
ObjectView objectView = new ObjectView(new NestedClass(100), 3, 100);
|
||||
String expected = "@NestedClass[\n" +
|
||||
" code=@Integer[100],\n" +
|
||||
" c1=@NestedClass[\n" +
|
||||
" code=@Integer[1],\n" +
|
||||
" c1=...\n" +
|
||||
"... Object size exceeds size limit:100";
|
||||
Assert.assertEquals(expected, objectView.draw());
|
||||
}
|
||||
|
||||
private String replaceHashCode(String input) {
|
||||
return input.replaceAll("@[0-9a-f]+", "@ffffffff");
|
||||
}
|
||||
|
||||
|
||||
private static class NestedClass {
|
||||
|
||||
private int code;
|
||||
|
||||
private static NestedClass c1 = get(1);
|
||||
private static NestedClass c2 = get(2);
|
||||
|
||||
public NestedClass(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
private static NestedClass get(int code) {
|
||||
return new NestedClass(code);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user