diff --git a/core/src/test/java/com/taobao/arthas/core/command/express/FlowAttribute.java b/core/src/test/java/com/taobao/arthas/core/command/express/FlowAttribute.java new file mode 100644 index 000000000..1848b650c --- /dev/null +++ b/core/src/test/java/com/taobao/arthas/core/command/express/FlowAttribute.java @@ -0,0 +1,9 @@ +package com.taobao.arthas.core.command.express; + +public class FlowAttribute { + private String bxApp = "aaa"; + + public String getBxApp() { + return this.bxApp ; + } +} diff --git a/core/src/test/java/com/taobao/arthas/core/command/express/FlowContext.java b/core/src/test/java/com/taobao/arthas/core/command/express/FlowContext.java new file mode 100644 index 000000000..c1991bdbe --- /dev/null +++ b/core/src/test/java/com/taobao/arthas/core/command/express/FlowContext.java @@ -0,0 +1,9 @@ +package com.taobao.arthas.core.command.express; + +public class FlowContext { + private FlowAttribute flowAttribute = new FlowAttribute(); + + public FlowAttribute getFlowAttribute() { + return this.flowAttribute ; + } +} diff --git a/core/src/test/java/com/taobao/arthas/core/command/express/OgnlTest.java b/core/src/test/java/com/taobao/arthas/core/command/express/OgnlTest.java new file mode 100644 index 000000000..7148ebbbb --- /dev/null +++ b/core/src/test/java/com/taobao/arthas/core/command/express/OgnlTest.java @@ -0,0 +1,46 @@ +package com.taobao.arthas.core.command.express; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import com.taobao.arthas.core.advisor.Advice; +import ognl.OgnlException; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * https://github.com/alibaba/arthas/issues/2954 + */ +public class OgnlTest { + + private Express express; + + @BeforeEach + public void setUp() throws OgnlException, ExpressException { + FlowContext context = new FlowContext(); + Object[] params = new Object[4]; + params[0] = context; + Advice advice = Advice.newForAfterReturning(null, getClass(), null, null, params, null); + express = ExpressFactory.unpooledExpress(null).bind(advice).bind("cost", 123); + } + + @Test + public void testStringEquals() throws OgnlException, ExpressException { + String conditionExpress = "\"aaa\".equals(params[0].flowAttribute.getBxApp())"; + boolean result = express.is(conditionExpress); + assertTrue(result); + } + + @Test + public void testObjectEquals() throws OgnlException, ExpressException { + String conditionExpress = "params[0].flowAttribute.getBxApp().equals(\"aaa\")"; + boolean result = express.is(conditionExpress); + assertTrue(result); + } + + @Test + public void testEqualSign() throws OgnlException, ExpressException { + String conditionExpress = "\"aaa\" == params[0].flowAttribute.getBxApp()"; + boolean result = express.is(conditionExpress); + assertTrue(result); + } +}