mirror of https://github.com/alibaba/arthas.git
添加单测
parent
b49d35c3b5
commit
a1bf19ca03
@ -0,0 +1,57 @@
|
|||||||
|
package com.taobao.arthas.core.command.express;
|
||||||
|
|
||||||
|
import com.taobao.arthas.core.advisor.Advice;
|
||||||
|
import ognl.OgnlException;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class ArthasObjectPropertyAccessorTest {
|
||||||
|
|
||||||
|
private Express express;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp () {
|
||||||
|
Fetcher fetcher = new Fetcher().add(new Fetcher.Fetch()
|
||||||
|
.add(new FlowContext("aa"))
|
||||||
|
.add(new FlowContext("bb"))
|
||||||
|
).add(new Fetcher.Fetch()
|
||||||
|
.add(new FlowContext("cc"))
|
||||||
|
.add(new FlowContext("dd"))
|
||||||
|
.add(new FlowContext("ee"))
|
||||||
|
);
|
||||||
|
|
||||||
|
Object[] params = new Object[4];
|
||||||
|
params[0] = fetcher;
|
||||||
|
Advice advice = Advice.newForAfterReturning(null, getClass(), null, null, params, null);
|
||||||
|
express = ExpressFactory.unpooledExpress(null).bind(advice);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getPossibleProperty() throws ExpressException {
|
||||||
|
assertInstanceOf(List.class, express.get("params[0].completedFetches"));
|
||||||
|
assertEquals(2, ((List<?>) express.get("params[0].completedFetches")).size());
|
||||||
|
assertThrows(ExpressException.class, () -> express.is("params[0].hasCompletedFetches"));
|
||||||
|
assertTrue(express.is("params[0].hasCompletedFetches()"));
|
||||||
|
assertThrows(ExpressException.class, () -> express.is("params[0].getCompletedFetches"));
|
||||||
|
assertTrue(express.is("params[0].getCompletedFetches()"));
|
||||||
|
assertInstanceOf(Fetcher.Fetch.class, express.get("params[0].completedFetches[1]"));
|
||||||
|
assertInstanceOf(List.class, express.get("params[0].completedFetches[1].flowContexts"));
|
||||||
|
assertEquals(3, ((List) express.get("params[0].completedFetches[1].flowContexts")).size());
|
||||||
|
assertTrue(express.is("params[0].completedFetches[1].hasFlowContexts()"));
|
||||||
|
assertTrue(express.is("params[0].completedFetches[1].getFlowContexts()"));
|
||||||
|
assertInstanceOf(List.class, express.get("params[0].completedFetches[1].getFlowContexts1()"));
|
||||||
|
assertInstanceOf(List.class, express.get("params[0].completedFetches.{flowContexts.{flowAttribute.bxApp}}"));
|
||||||
|
assertIterableEquals(Arrays.asList(
|
||||||
|
Arrays.asList("aa", "bb"),
|
||||||
|
Arrays.asList("cc", "dd", "ee")
|
||||||
|
), (Iterable<?>) express.get("params[0].completedFetches.{flowContexts.{flowAttribute.bxApp}}"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package com.taobao.arthas.core.command.express;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Fetcher {
|
||||||
|
private final List<Fetch> completedFetches = new ArrayList<>();
|
||||||
|
|
||||||
|
public boolean hasCompletedFetches() {
|
||||||
|
return !completedFetches.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getCompletedFetches() {
|
||||||
|
return hasCompletedFetches();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Fetcher add(Fetch fetch) {
|
||||||
|
completedFetches.add(fetch);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Fetch {
|
||||||
|
private final List<FlowContext> flowContexts = new ArrayList<>();
|
||||||
|
public boolean hasFlowContexts() {
|
||||||
|
return !flowContexts.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getFlowContexts() {
|
||||||
|
return !flowContexts.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FlowContext> getFlowContexts1() {
|
||||||
|
return flowContexts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Fetch add(FlowContext flowContext) {
|
||||||
|
flowContexts.add(flowContext);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue