提交 6543814f 编写于 作者: wu-sheng's avatar wu-sheng 提交者: GitHub

Merge pull request #544 from OpenSkywalking/fix/sjdbcbug

Plugin test must compile with jdk 1.6, so not allow to use lambda.
...@@ -26,7 +26,7 @@ import com.dangdang.ddframe.rdb.sharding.executor.threadlocal.ExecutorDataMap; ...@@ -26,7 +26,7 @@ import com.dangdang.ddframe.rdb.sharding.executor.threadlocal.ExecutorDataMap;
import com.dangdang.ddframe.rdb.sharding.util.EventBusInstance; import com.dangdang.ddframe.rdb.sharding.util.EventBusInstance;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Arrays; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -65,40 +65,40 @@ import static org.skywalking.apm.agent.test.tools.SpanAssert.assertTag; ...@@ -65,40 +65,40 @@ import static org.skywalking.apm.agent.test.tools.SpanAssert.assertTag;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(TracingSegmentRunner.class) @PowerMockRunnerDelegate(TracingSegmentRunner.class)
public class InterceptorTest { public class InterceptorTest {
private static ExecutorService ES; private static ExecutorService ES;
@SegmentStoragePoint @SegmentStoragePoint
private SegmentStorage segmentStorage; private SegmentStorage segmentStorage;
@Rule @Rule
public AgentServiceRule serviceRule = new AgentServiceRule(); public AgentServiceRule serviceRule = new AgentServiceRule();
private ExecuteInterceptor executeInterceptor; private ExecuteInterceptor executeInterceptor;
private AsyncExecuteInterceptor asyncExecuteInterceptor; private AsyncExecuteInterceptor asyncExecuteInterceptor;
private Object[] allArguments; private Object[] allArguments;
@BeforeClass @BeforeClass
public static void init() { public static void init() {
ExecuteEventListener.init(); ExecuteEventListener.init();
new ExecutorEngineConstructorInterceptor().onConstruct(null, null); new ExecutorEngineConstructorInterceptor().onConstruct(null, null);
ES = Executors.newSingleThreadExecutor(); ES = Executors.newSingleThreadExecutor();
} }
@AfterClass @AfterClass
public static void finish() { public static void finish() {
ES.shutdown(); ES.shutdown();
} }
@Before @Before
public void setUp() throws SQLException { public void setUp() throws SQLException {
executeInterceptor = new ExecuteInterceptor(); executeInterceptor = new ExecuteInterceptor();
asyncExecuteInterceptor = new AsyncExecuteInterceptor(); asyncExecuteInterceptor = new AsyncExecuteInterceptor();
allArguments = new Object[]{SQLType.DQL, null}; allArguments = new Object[] {SQLType.DQL, null};
} }
@Test @Test
public void assertSyncExecute() throws Throwable { public void assertSyncExecute() throws Throwable {
executeInterceptor.beforeMethod(null, null, allArguments, null, null); executeInterceptor.beforeMethod(null, null, allArguments, null, null);
...@@ -106,7 +106,7 @@ public class InterceptorTest { ...@@ -106,7 +106,7 @@ public class InterceptorTest {
executeInterceptor.afterMethod(null, null, allArguments, null, null); executeInterceptor.afterMethod(null, null, allArguments, null, null);
assertThat(segmentStorage.getTraceSegments().size(), is(1)); assertThat(segmentStorage.getTraceSegments().size(), is(1));
TraceSegment segment = segmentStorage.getTraceSegments().get(0); TraceSegment segment = segmentStorage.getTraceSegments().get(0);
List<AbstractTracingSpan> spans = SegmentHelper.getSpans(segment); List<AbstractTracingSpan> spans = SegmentHelper.getSpans(segment);
assertNotNull(spans); assertNotNull(spans);
assertThat(spans.size(), is(2)); assertThat(spans.size(), is(2));
assertSpan(spans.get(0), 0); assertSpan(spans.get(0), 0);
...@@ -118,9 +118,11 @@ public class InterceptorTest { ...@@ -118,9 +118,11 @@ public class InterceptorTest {
executeInterceptor.beforeMethod(null, null, allArguments, null, null); executeInterceptor.beforeMethod(null, null, allArguments, null, null);
asyncExecuteInterceptor.beforeMethod(null, null, null, null, null); asyncExecuteInterceptor.beforeMethod(null, null, null, null, null);
final Map<String, Object> dataMap = ExecutorDataMap.getDataMap(); final Map<String, Object> dataMap = ExecutorDataMap.getDataMap();
ES.submit(() -> { ES.submit(new Runnable() {
ExecutorDataMap.setDataMap(dataMap); @Override public void run() {
sendEvent("ds_1", "select * from t_order_1"); ExecutorDataMap.setDataMap(dataMap);
sendEvent("ds_1", "select * from t_order_1");
}
}).get(); }).get();
asyncExecuteInterceptor.afterMethod(null, null, null, null, null); asyncExecuteInterceptor.afterMethod(null, null, null, null, null);
sendEvent("ds_0", "select * from t_order_0"); sendEvent("ds_0", "select * from t_order_0");
...@@ -140,15 +142,17 @@ public class InterceptorTest { ...@@ -140,15 +142,17 @@ public class InterceptorTest {
assertSpan(spans1.get(0), 0); assertSpan(spans1.get(0), 0);
assertThat(spans1.get(1).getOperationName(), is("/SJDBC/TRUNK/DQL")); assertThat(spans1.get(1).getOperationName(), is("/SJDBC/TRUNK/DQL"));
} }
@Test @Test
public void assertExecuteError() throws Throwable { public void assertExecuteError() throws Throwable {
executeInterceptor.beforeMethod(null, null, allArguments, null, null); executeInterceptor.beforeMethod(null, null, allArguments, null, null);
asyncExecuteInterceptor.beforeMethod(null, null, null, null, null); asyncExecuteInterceptor.beforeMethod(null, null, null, null, null);
final Map<String, Object> dataMap = ExecutorDataMap.getDataMap(); final Map<String, Object> dataMap = ExecutorDataMap.getDataMap();
ES.submit(() -> { ES.submit(new Runnable() {
ExecutorDataMap.setDataMap(dataMap); @Override public void run() {
sendError(); ExecutorDataMap.setDataMap(dataMap);
sendError();
}
}).get(); }).get();
asyncExecuteInterceptor.handleMethodException(null, null, null, null, new SQLException("test")); asyncExecuteInterceptor.handleMethodException(null, null, null, null, new SQLException("test"));
asyncExecuteInterceptor.afterMethod(null, null, null, null, null); asyncExecuteInterceptor.afterMethod(null, null, null, null, null);
...@@ -178,18 +182,22 @@ public class InterceptorTest { ...@@ -178,18 +182,22 @@ public class InterceptorTest {
assertThat(span.isExit(), is(true)); assertThat(span.isExit(), is(true));
assertThat(span.getOperationName(), is("/SJDBC/BRANCH/QUERY")); assertThat(span.getOperationName(), is("/SJDBC/BRANCH/QUERY"));
} }
private void assertErrorSpan(AbstractTracingSpan span) { private void assertErrorSpan(AbstractTracingSpan span) {
assertOccurException(span, true); assertOccurException(span, true);
} }
private void sendEvent(String datasource, String sql) { private void sendEvent(String datasource, String sql) {
DQLExecutionEvent event = new DQLExecutionEvent(datasource, sql, Arrays.asList("1", 100)); List<Object> parameters = new ArrayList<Object>();
parameters.add("1");
parameters.add(100);
DQLExecutionEvent event = new DQLExecutionEvent(datasource, sql, parameters);
EventBusInstance.getInstance().post(event); EventBusInstance.getInstance().post(event);
event.setEventExecutionType(EventExecutionType.EXECUTE_SUCCESS); event.setEventExecutionType(EventExecutionType.EXECUTE_SUCCESS);
EventBusInstance.getInstance().post(event); EventBusInstance.getInstance().post(event);
} }
private void sendError() { private void sendError() {
DMLExecutionEvent event = new DMLExecutionEvent("", "", Collections.emptyList()); DMLExecutionEvent event = new DMLExecutionEvent("", "", Collections.emptyList());
EventBusInstance.getInstance().post(event); EventBusInstance.getInstance().post(event);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册