diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java index 3fb217ee8786b38f589c096d4e6951300c4276cf..ffd6fd90a42761ebb6756aa9f0264464e509bbbb 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java @@ -43,11 +43,11 @@ public class JVMService implements BootService, Runnable { String second = sdf.format(day); if (Integer.parseInt(second) % 15 == 0) { - JVMMetric.Builder JVMBuilder = JVMMetric.newBuilder(); - JVMBuilder.setTime(currentTimeMillis); - JVMBuilder.setCpu(CPUProvider.INSTANCE.getCpuMetric()); - JVMBuilder.addAllMemory(MemoryProvider.INSTANCE.getMemoryMetricList()); - JVMBuilder.addAllMemoryPool(MemoryPoolProvider.INSTANCE.getMemoryPoolMetricList()); + JVMMetric.Builder jvmBuilder = JVMMetric.newBuilder(); + jvmBuilder.setTime(currentTimeMillis); + jvmBuilder.setCpu(CPUProvider.INSTANCE.getCpuMetric()); + jvmBuilder.addAllMemory(MemoryProvider.INSTANCE.getMemoryMetricList()); + jvmBuilder.addAllMemoryPool(MemoryPoolProvider.INSTANCE.getMemoryPoolMetricList()); } } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java index d2c6fda63264abcfeba63687fce58f11547a6cef..6b108943b2d05e252c695f0faafd56bb42fb0f49 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java @@ -6,7 +6,7 @@ import java.util.List; /** * @author wusheng */ -public class ParallelCollectorModule extends MemoryPoolModule{ +public class ParallelCollectorModule extends MemoryPoolModule { public ParallelCollectorModule(List beans) { super(beans); diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextCarrierTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextCarrierTestCase.java deleted file mode 100644 index 0d4955d886c10ff4633433c5e54e202036519557..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextCarrierTestCase.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.skywalking.apm.agent.core.context; - -import org.junit.Assert; -import org.junit.Test; -import org.skywalking.apm.agent.core.context.ids.DistributedTraceId; -import org.skywalking.apm.agent.core.context.ids.PropagatedTraceId; - -import java.util.LinkedList; -import java.util.List; - -/** - * Created by wusheng on 2017/2/19. - */ -public class ContextCarrierTestCase { - @Test - public void testSerialize() { - ContextCarrier carrier = new ContextCarrier(); - carrier.setTraceSegmentId("trace_id_A"); - carrier.setSpanId(100); - carrier.setApplicationCode("REMOTE_APP"); - carrier.setPeerHost("10.2.3.16:8080"); - List ids = new LinkedList(); - ids.add(new PropagatedTraceId("Trace.global.id.123")); - carrier.setDistributedTraceIds(ids); - - Assert.assertEquals("trace_id_A|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123", carrier.serialize()); - } - - @Test - public void testDeserialize() { - ContextCarrier carrier = new ContextCarrier(); - carrier.deserialize("trace_id_A|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123,Trace.global.id.222"); - - Assert.assertEquals("trace_id_A", carrier.getTraceSegmentId()); - Assert.assertEquals(100, carrier.getSpanId()); - Assert.assertEquals("REMOTE_APP", carrier.getApplicationCode()); - Assert.assertEquals("10.2.3.16:8080", carrier.getPeerHost()); - Assert.assertEquals("Trace.global.id.123", carrier.getDistributedTraceIds().get(0).get()); - Assert.assertEquals("Trace.global.id.222", carrier.getDistributedTraceIds().get(1).get()); - } - - @Test - public void testIllegalDeserialize() { - ContextCarrier carrier = new ContextCarrier(); - carrier.deserialize("abcde"); - Assert.assertFalse(carrier.isValid()); - - carrier = new ContextCarrier(); - carrier.deserialize("trace_id|-100"); - Assert.assertFalse(carrier.isValid()); - - carrier = new ContextCarrier(); - carrier.deserialize("trace_id|illegal-spanid"); - Assert.assertFalse(carrier.isValid()); - - carrier = new ContextCarrier(); - carrier.deserialize("trace_id|100|other-illegal"); - Assert.assertFalse(carrier.isValid()); - - carrier = new ContextCarrier(); - carrier.deserialize("trace_id|100|REMOTE_APP|10.2.3.16:8080"); - Assert.assertFalse(carrier.isValid()); - - carrier = new ContextCarrier(); - carrier.deserialize("trace_id|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123,Trace.global.id.222"); - Assert.assertTrue(carrier.isValid()); - - carrier = new ContextCarrier(); - carrier.deserialize("trace_id|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123,Trace.global.id.222|0"); - Assert.assertFalse(carrier.isValid()); - } -} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java index 01ffb55b32bf7db9b4cbad0e9f8c63d156933968..dba87ad5af5cd9a6419d9b07b4735b440a5ceba9 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java @@ -6,10 +6,10 @@ import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.skywalking.apm.agent.core.boot.ServiceManager; -import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; import org.skywalking.apm.agent.core.context.trace.NoopSpan; import org.skywalking.apm.agent.core.context.trace.TraceSegment; +import org.skywalking.apm.agent.core.context.util.TraceSegmentHelper; /** * Created by wusheng on 2017/2/19. @@ -22,23 +22,23 @@ public class ContextManagerTestCase { @Test public void testDelegateToTracerContext() { - AbstractSpan span = ContextManager.createSpan("serviceA"); - Tags.COMPONENT.set(span, "test"); + AbstractSpan span = ContextManager.createLocalSpan("serviceA"); + span.setComponent("test"); Assert.assertEquals(span, ContextManager.activeSpan()); - TracerContext.ListenerManager.add(TestTracingContextListener.INSTANCE); + TracingContext.ListenerManager.add(TestTracingContextListener.INSTANCE); ContextManager.stopSpan(); TraceSegment segment = TestTracingContextListener.INSTANCE.finishedSegmentCarrier[0]; - Assert.assertEquals(span, segment.getSpans().get(0)); + Assert.assertEquals(span, TraceSegmentHelper.getSpans(segment).get(0)); } @Test public void testSwitchToIgnoredTracerContext() throws NoSuchFieldException, IllegalAccessException { - AbstractSpan span = ContextManager.createSpan("/webresource/jquery.js"); - Tags.COMPONENT.set(span, "test"); + AbstractSpan span = ContextManager.createLocalSpan("/webresource/jquery.js"); + span.setComponent("test"); Assert.assertTrue(span instanceof NoopSpan); Assert.assertTrue(ContextManager.activeSpan() instanceof NoopSpan); @@ -54,11 +54,11 @@ public class ContextManagerTestCase { Assert.assertNull(tracerContext); // check normal trace again - span = ContextManager.createSpan("serviceA"); - Tags.COMPONENT.set(span, "test"); + span = ContextManager.createLocalSpan("serviceA"); + span.setComponent("test"); tracerContext = ((ThreadLocal)context.get(null)).get(); - Assert.assertTrue(tracerContext instanceof TracerContext); + Assert.assertTrue(tracerContext instanceof TracingContext); ContextManager.stopSpan(); tracerContext = ((ThreadLocal)context.get(null)).get(); Assert.assertNull(tracerContext); @@ -66,6 +66,6 @@ public class ContextManagerTestCase { @After public void reset() { - TracerContext.ListenerManager.remove(TestTracingContextListener.INSTANCE); + TracingContext.ListenerManager.remove(TestTracingContextListener.INSTANCE); } } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java index 13652bb82cc375790a89c5b11e0347d3850f2b80..736e96bbac5fe724d5c70e5ff3ef2d64063d31b8 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java @@ -9,6 +9,8 @@ import org.skywalking.apm.agent.core.context.ids.DistributedTraceId; import org.skywalking.apm.agent.core.context.ids.PropagatedTraceId; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; import org.skywalking.apm.agent.core.context.trace.TraceSegment; +import org.skywalking.apm.agent.core.context.util.TraceSegmentHelper; +import org.skywalking.apm.agent.core.context.util.TraceSegmentRefHelper; /** * Created by wusheng on 2017/2/19. @@ -16,29 +18,30 @@ import org.skywalking.apm.agent.core.context.trace.TraceSegment; public class TracerContextTestCase { @Test public void testSpanLifeCycle() { - TracerContext context = new TracerContext(); - AbstractSpan span = context.createSpan("/serviceA", false); + TracingContext context = new TracingContext(); + AbstractSpan span = context.createLocalSpan("/serviceA"); Assert.assertEquals(span, context.activeSpan()); - TracerContext.ListenerManager.add(TestTracingContextListener.INSTANCE); + TracingContext.ListenerManager.add(TestTracingContextListener.INSTANCE); final TraceSegment[] finishedSegmentCarrier = TestTracingContextListener.INSTANCE.finishedSegmentCarrier; context.stopSpan(span); - Assert.assertNotNull(finishedSegmentCarrier[0]); - Assert.assertEquals(1, finishedSegmentCarrier[0].getSpans().size()); - Assert.assertEquals(span, finishedSegmentCarrier[0].getSpans().get(0)); + TraceSegment traceSegment = finishedSegmentCarrier[0]; + Assert.assertNotNull(traceSegment); + Assert.assertEquals(1, TraceSegmentHelper.getSpans(traceSegment).size()); + Assert.assertEquals(span, TraceSegmentHelper.getSpans(traceSegment).get(0)); } @Test public void testChildOfSpan() { - TracerContext context = new TracerContext(); - AbstractSpan serviceSpan = context.createSpan("/serviceA", false); - AbstractSpan dbSpan = context.createSpan("db/preparedStatement/execute", false); + TracingContext context = new TracingContext(); + AbstractSpan serviceSpan = context.createLocalSpan("/serviceA"); + AbstractSpan dbSpan = context.createExitSpan("db/preparedStatement/execute", "127.0.0.1:3306"); Assert.assertEquals(dbSpan, context.activeSpan()); - TracerContext.ListenerManager.add(TestTracingContextListener.INSTANCE); + TracingContext.ListenerManager.add(TestTracingContextListener.INSTANCE); final TraceSegment[] finishedSegmentCarrier = TestTracingContextListener.INSTANCE.finishedSegmentCarrier; try { @@ -50,23 +53,22 @@ public class TracerContextTestCase { context.stopSpan(dbSpan); context.stopSpan(serviceSpan); - Assert.assertNotNull(finishedSegmentCarrier[0]); - Assert.assertEquals(2, finishedSegmentCarrier[0].getSpans().size()); - Assert.assertEquals(dbSpan, finishedSegmentCarrier[0].getSpans().get(0)); + TraceSegment traceSegment = finishedSegmentCarrier[0]; + Assert.assertNotNull(traceSegment); + Assert.assertEquals(2, TraceSegmentHelper.getSpans(traceSegment).size()); + Assert.assertEquals(dbSpan, TraceSegmentHelper.getSpans(traceSegment).get(0)); } @Test public void testInject() { - TracerContext context = new TracerContext(); - AbstractSpan serviceSpan = context.createSpan("/serviceA", false); - AbstractSpan dbSpan = context.createSpan("db/preparedStatement/execute", false); - dbSpan.setPeerHost("127.0.0.1"); - dbSpan.setPort(8080); + TracingContext context = new TracingContext(); + AbstractSpan serviceSpan = context.createLocalSpan("/serviceA"); + AbstractSpan dbSpan = context.createExitSpan("db/preparedStatement/execute", "127.0.0.1:3306"); ContextCarrier carrier = new ContextCarrier(); context.inject(carrier); - Assert.assertEquals("127.0.0.1:8080", carrier.getPeerHost()); + Assert.assertEquals("127.0.0.1:3306", carrier.getPeerHost()); Assert.assertEquals(1, carrier.getSpanId()); } @@ -75,7 +77,6 @@ public class TracerContextTestCase { ContextCarrier carrier = new ContextCarrier(); carrier.setTraceSegmentId("trace_id_1"); carrier.setSpanId(5); - carrier.setApplicationCode("REMOTE_APP"); carrier.setPeerHost("10.2.3.16:8080"); List ids = new LinkedList(); ids.add(new PropagatedTraceId("Trace.global.id.123")); @@ -83,21 +84,22 @@ public class TracerContextTestCase { Assert.assertTrue(carrier.isValid()); - TracerContext context = new TracerContext(); + TracingContext context = new TracingContext(); context.extract(carrier); - AbstractSpan span = context.createSpan("/serviceC", false); + AbstractSpan span = context.createLocalSpan("/serviceC"); - TracerContext.ListenerManager.add(TestTracingContextListener.INSTANCE); + TracingContext.ListenerManager.add(TestTracingContextListener.INSTANCE); final TraceSegment[] finishedSegmentCarrier = TestTracingContextListener.INSTANCE.finishedSegmentCarrier; context.stopSpan(span); - Assert.assertEquals("trace_id_1", finishedSegmentCarrier[0].getRefs().get(0).getTraceSegmentId()); - Assert.assertEquals(5, finishedSegmentCarrier[0].getRefs().get(0).getSpanId()); + TraceSegment segment = finishedSegmentCarrier[0]; + Assert.assertEquals("trace_id_1", TraceSegmentRefHelper.getTraceSegmentId(segment.getRefs().get(0))); + Assert.assertEquals(5, TraceSegmentRefHelper.getSpanId(segment.getRefs().get(0))); } @After public void reset() { - TracerContext.ListenerManager.remove(TestTracingContextListener.INSTANCE); + TracingContext.ListenerManager.remove(TestTracingContextListener.INSTANCE); } } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/LogDataTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/LogDataTestCase.java deleted file mode 100644 index 89b24f760e65e031770bd39536e59f3226b9ebad..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/LogDataTestCase.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.skywalking.apm.agent.core.context.trace; - -import java.util.HashMap; -import java.util.Map; -import org.junit.Assert; -import org.junit.Test; - -/** - * Created by wusheng on 2017/2/18. - */ -public class LogDataTestCase { - @Test - public void testHoldValue() { - Map fields = new HashMap(); - LogData logData = new LogData(123L, fields); - - Assert.assertEquals(123, logData.getTime()); - Assert.assertEquals(fields, logData.getFields()); - } -} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java index 86f3adcc5ddd81e409b6b3ac0c0099fa76658d39..a84a79ec45f6c8bed5ade8421e4745f6d3a25944 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java @@ -1,70 +1,74 @@ package org.skywalking.apm.agent.core.context.trace; -import java.lang.reflect.Field; import java.util.List; import org.junit.Assert; import org.junit.Test; -import org.skywalking.apm.agent.core.tags.StringTagReader; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; import org.skywalking.apm.agent.core.context.tag.Tags; +import org.skywalking.apm.agent.core.context.util.KeyValuePair; +import org.skywalking.apm.agent.core.context.util.KeyValuePairReader; +import org.skywalking.apm.agent.core.context.util.TraceSegmentHelper; +import org.skywalking.apm.agent.core.dictionary.ApplicationDictionary; -/** - * Created by wusheng on 2017/2/18. - */ +@RunWith(PowerMockRunner.class) +@PrepareForTest(ApplicationDictionary.class) public class SpanTestCase { + @Test public void testConstructors() { - Span span1 = new Span(0, "serviceA"); - Span span2 = new Span(2, span1, "serviceA"); + AbstractTracingSpan span1 = new LocalSpan(0, -1, "serviceA"); + AbstractTracingSpan span2 = new LocalSpan(1, 0, "serviceA"); span2.setOperationName("serviceA-2"); + span1.start(); + span2.start(); Assert.assertEquals("serviceA-2", span2.getOperationName()); - Assert.assertEquals(-1, span1.getParentSpanId()); - Assert.assertEquals(0, span2.getParentSpanId()); - Assert.assertTrue(span1.getStartTime() > 0); - Assert.assertTrue(span2.getStartTime() > 0); + Assert.assertEquals(-1, span1.parentSpanId); + Assert.assertEquals(0, span2.parentSpanId); + Assert.assertTrue(span1.startTime > 0); + Assert.assertTrue(span2.startTime > 0); } @Test public void testFinish() { - TraceSegment owner = new TraceSegment("billing_app"); + TraceSegment owner = new TraceSegment(); - Span span1 = new Span(0, "serviceA"); + AbstractTracingSpan span1 = new LocalSpan(0, -1, "serviceA"); - Assert.assertTrue(span1.getEndTime() == 0); + Assert.assertTrue(span1.endTime == 0); span1.finish(owner); - Assert.assertEquals(span1, owner.getSpans().get(0)); - Assert.assertTrue(span1.getEndTime() > 0); + Assert.assertEquals(span1, TraceSegmentHelper.getSpans(owner).get(0)); + Assert.assertTrue(span1.endTime > 0); } @Test public void testSetTag() { - Span span1 = new Span(0, "serviceA"); - Tags.SPAN_LAYER.asHttp(span1); - Tags.COMPONENT.set(span1, "Spring"); - span1.setPeerHost("127.0.0.1"); - Tags.ERROR.set(span1, true); - Tags.STATUS_CODE.set(span1, 302); + AbstractTracingSpan span1 = new LocalSpan(0, -1, "serviceA"); + SpanLayer.asHttp(span1); + span1.setComponent("Spring"); + span1.errorOccurred(); + Tags.STATUS_CODE.set(span1, "505"); Tags.URL.set(span1, "http://127.0.0.1/serviceA"); Tags.DB_STATEMENT.set(span1, "select * from users"); - Assert.assertEquals("http", StringTagReader.get(span1, Tags.SPAN_LAYER.SPAN_LAYER_TAG)); - Assert.assertEquals("127.0.0.1", span1.getPeerHost()); - Assert.assertTrue(BooleanTagReader.get(span1, Tags.ERROR)); + Assert.assertEquals(SpanLayer.HTTP, span1.layer); + Assert.assertTrue(span1.errorOccurred); } @Test public void testLogException() throws NoSuchFieldException, IllegalAccessException { - Span span1 = new Span(0, "serviceA"); + AbstractTracingSpan span1 = new LocalSpan(0, -1, "serviceA"); Exception exp = new Exception("exception msg"); span1.log(exp); - Field logsField = Span.class.getDeclaredField("logs"); - logsField.setAccessible(true); - List logs = (List)logsField.get(span1); + LogDataEntity logs = span1.logs.get(0); + List keyValuePairs = logs.getLogs(); - Assert.assertEquals("java.lang.Exception", logs.get(0).getFields().get("error.kind")); - Assert.assertEquals("exception msg", logs.get(0).getFields().get("message")); - Assert.assertNotNull(logs.get(0).getFields().get("stack")); + Assert.assertEquals("java.lang.Exception", KeyValuePairReader.get(keyValuePairs, "error.kind")); + Assert.assertEquals("exception msg", KeyValuePairReader.get(keyValuePairs, "message")); + Assert.assertNotNull(KeyValuePairReader.get(keyValuePairs, "stack")); } } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java index 1b62dce9727305c8d0fdf7fe76bab4cbd478fb92..f9b7787f33ec50026276b30e10826d86a4626af9 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java @@ -1,129 +1,32 @@ package org.skywalking.apm.agent.core.context.trace; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; -import org.skywalking.apm.agent.core.context.tag.Tags; -import org.skywalking.apm.agent.core.tags.StringTagReader; +import org.skywalking.apm.agent.core.context.util.TraceSegmentHelper; -/** - * Created by wusheng on 2017/2/18. - */ public class TraceSegmentTestCase { - @Test - public void testConstructor() { - TraceSegment segment = new TraceSegment("billing_app"); - Assert.assertTrue(segment.getTraceSegmentId().startsWith("Segment")); - Assert.assertTrue(segment.getStartTime() > 0); - Assert.assertEquals("billing_app", segment.getApplicationId()); + @Before + public void setUp() { + } @Test public void testRef() { - TraceSegment segment = new TraceSegment("billing_app"); - - TraceSegmentRef ref1 = new TraceSegmentRef(); - ref1.setTraceSegmentId("parent_trace_0"); - ref1.setSpanId(1); - segment.ref(ref1); - - TraceSegmentRef ref2 = new TraceSegmentRef(); - ref2.setTraceSegmentId("parent_trace_1"); - ref2.setSpanId(5); - segment.ref(ref2); - TraceSegmentRef ref3 = new TraceSegmentRef(); - ref3.setTraceSegmentId("parent_trace_3"); - ref3.setSpanId(5); - segment.ref(ref3); - - Assert.assertEquals(ref1, segment.getRefs().get(0)); - Assert.assertEquals(ref2, segment.getRefs().get(1)); - Assert.assertEquals(ref3, segment.getRefs().get(2)); - - Assert.assertEquals("parent_trace_0", segment.getRefs().get(0).getTraceSegmentId()); - Assert.assertEquals(1, segment.getRefs().get(0).getSpanId()); } @Test public void testArchiveSpan() { - TraceSegment segment = new TraceSegment("billing_app"); - Span span1 = new Span(1, "/serviceA"); + TraceSegment segment = new TraceSegment(); + AbstractTracingSpan span1 = new LocalSpan(1, 0, "/serviceA"); segment.archive(span1); - Span span2 = new Span(2, "/db/sql"); + AbstractTracingSpan span2 = new LocalSpan(2, 1, "/db/sql"); segment.archive(span2); - Assert.assertEquals(span1, segment.getSpans().get(0)); - Assert.assertEquals(span2, segment.getSpans().get(1)); - } - - @Test - public void testFinish() { - TraceSegment segment = new TraceSegment("billing_app"); - - Assert.assertTrue(segment.getEndTime() == 0); - segment.finish(); - Assert.assertTrue(segment.getEndTime() > 0); - } - - @Test - public void testSerialize() { - TraceSegment segment = new TraceSegment("billing_app"); - - TraceSegmentRef ref1 = new TraceSegmentRef(); - ref1.setTraceSegmentId("parent_trace_0"); - ref1.setSpanId(1); - ref1.setApplicationCode("REMOTE_APP"); - ref1.setPeerHost("10.2.3.16:8080"); - segment.ref(ref1); - - TraceSegmentRef ref2 = new TraceSegmentRef(); - ref2.setTraceSegmentId("parent_trace_1"); - ref2.setSpanId(5); - ref2.setApplicationCode("REMOTE_APP"); - ref2.setPeerHost("10.2.3.16:8080"); - segment.ref(ref2); - - TraceSegmentRef ref3 = new TraceSegmentRef(); - ref3.setTraceSegmentId("parent_trace_2"); - ref3.setSpanId(5); - ref3.setApplicationCode("REMOTE_APP"); - ref3.setPeerHost("10.2.3.16:8080"); - segment.ref(ref3); - - Span span1 = new Span(1, "/serviceA"); - Tags.SPAN_LAYER.asHttp(span1); - segment.archive(span1); - - Span span2 = new Span(2, span1, "/db/sql"); - Tags.SPAN_LAYER.asDB(span2); - span2.log(new NullPointerException()); - segment.archive(span2); - - Gson gson = new GsonBuilder() - .excludeFieldsWithoutExposeAnnotation() - .create(); - - SegmentsMessage message = new SegmentsMessage(); - message.append(segment); - - String jsonString = message.serialize(gson); - int length = Integer.parseInt(jsonString.substring(0, 4)); - - String segmentJson = jsonString.substring(5); - - Assert.assertEquals(length, segmentJson.length()); - - JsonObject jsonObject = gson.fromJson(segmentJson, JsonObject.class); - - Assert.assertEquals(segment.getSpans().size(), jsonObject.get("ss").getAsJsonArray().size()); - Assert.assertEquals(segment.getRefs().get(0).getTraceSegmentId(), - jsonObject.get("rs").getAsJsonArray().get(0).getAsJsonObject().get("ts").getAsString()); - Assert.assertEquals(StringTagReader.get(segment.getSpans().get(1), Tags.SPAN_LAYER.SPAN_LAYER_TAG), - jsonObject.get("ss").getAsJsonArray().get(1).getAsJsonObject().get("ts").getAsJsonObject().get("span.layer").getAsString()); + Assert.assertEquals(span1, TraceSegmentHelper.getSpans(segment).get(0)); + Assert.assertEquals(span2, TraceSegmentHelper.getSpans(segment).get(1)); } } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/KeyValuePairReader.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/KeyValuePairReader.java new file mode 100644 index 0000000000000000000000000000000000000000..a343f928ff2938ff7255dfd1fb5074ee76ebd1ae --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/KeyValuePairReader.java @@ -0,0 +1,15 @@ +package org.skywalking.apm.agent.core.context.util; + +import java.util.List; + +public class KeyValuePairReader { + public static String get(List pairs, String key) { + for (KeyValuePair pair : pairs) { + if (pair.getKey().equals(key)) { + return pair.getValue(); + } + } + + return null; + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentHelper.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..50a3e8dd1c7dab3002a7d9cb1fe1d3503f1c1320 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentHelper.java @@ -0,0 +1,20 @@ +package org.skywalking.apm.agent.core.context.util; + +import java.lang.reflect.Field; +import java.util.List; +import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; +import org.skywalking.apm.agent.core.context.trace.TraceSegment; + +public class TraceSegmentHelper { + + public static List getSpans(TraceSegment traceSegment) { + try { + Field field = AbstractTracingSpan.class.getDeclaredField("spans"); + return (List)field.get(traceSegment); + } catch (Exception e) { + throw new RuntimeException("Failed to get spans", e); + } + } + + +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentRefHelper.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentRefHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..d641229f0a83bf36ed00dd230e37ee3fb6a17ac0 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentRefHelper.java @@ -0,0 +1,25 @@ +package org.skywalking.apm.agent.core.context.util; + +import java.lang.reflect.Field; +import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; + +public class TraceSegmentRefHelper { + + public static int getSpanId(TraceSegmentRef ref) { + try { + Field field = TraceSegmentRef.class.getDeclaredField("spanId"); + return Integer.valueOf(field.get(ref).toString()); + } catch (Exception e) { + throw new RuntimeException("Failed to get span id", e); + } + } + + public static String getTraceSegmentId(TraceSegmentRef ref) { + try { + Field field = TraceSegmentRef.class.getDeclaredField("traceSegmentId"); + return field.get(ref).toString(); + } catch (Exception e) { + throw new RuntimeException("Failed to get span id", e); + } + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/DataCarrierTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/DataCarrierTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d324369ac5a9f699fa63ef76dc943efa9b7bcb0e --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/DataCarrierTest.java @@ -0,0 +1,150 @@ +package org.skywalking.apm.agent.core.datacarrier; + +import org.skywalking.apm.agent.core.datacarrier.buffer.Buffer; +import org.skywalking.apm.agent.core.datacarrier.buffer.BufferStrategy; +import org.skywalking.apm.agent.core.datacarrier.buffer.Channels; +import org.skywalking.apm.agent.core.datacarrier.consumer.IConsumer; +import org.skywalking.apm.agent.core.datacarrier.partition.ProducerThreadPartitioner; +import org.skywalking.apm.agent.core.datacarrier.partition.SimpleRollingPartitioner; +import org.junit.Assert; +import org.junit.Test; +import org.powermock.api.support.membermodification.MemberModifier; + +import java.util.List; + +/** + * Created by wusheng on 2016/10/25. + */ +public class DataCarrierTest { + @Test + public void testCreateDataCarrier() throws IllegalAccessException { + DataCarrier carrier = new DataCarrier(5, 100); + Assert.assertEquals(((Integer) (MemberModifier.field(DataCarrier.class, "bufferSize").get(carrier))).intValue(), 100); + Assert.assertEquals(((Integer) (MemberModifier.field(DataCarrier.class, "channelSize").get(carrier))).intValue(), 5); + + Channels channels = (Channels) (MemberModifier.field(DataCarrier.class, "channels").get(carrier)); + Assert.assertEquals(channels.getChannelSize(), 5); + + Buffer buffer = channels.getBuffer(0); + Assert.assertEquals(buffer.getBufferSize(), 100); + + Assert.assertEquals(MemberModifier.field(Buffer.class, "strategy").get(buffer), BufferStrategy.BLOCKING); + carrier.setBufferStrategy(BufferStrategy.IF_POSSIBLE); + Assert.assertEquals(MemberModifier.field(Buffer.class, "strategy").get(buffer), BufferStrategy.IF_POSSIBLE); + + Assert.assertEquals(MemberModifier.field(Channels.class, "dataPartitioner").get(channels).getClass(), SimpleRollingPartitioner.class); + carrier.setPartitioner(new ProducerThreadPartitioner()); + Assert.assertEquals(MemberModifier.field(Channels.class, "dataPartitioner").get(channels).getClass(), ProducerThreadPartitioner.class); + } + + @Test + public void testProduce() throws IllegalAccessException { + DataCarrier carrier = new DataCarrier(2, 100); + Assert.assertTrue(carrier.produce(new SampleData().setName("a"))); + Assert.assertTrue(carrier.produce(new SampleData().setName("b"))); + Assert.assertTrue(carrier.produce(new SampleData().setName("c"))); + Assert.assertTrue(carrier.produce(new SampleData().setName("d"))); + + Channels channels = (Channels) (MemberModifier.field(DataCarrier.class, "channels").get(carrier)); + Buffer buffer1 = channels.getBuffer(0); + List result1 = buffer1.obtain(0, 100); + + Buffer buffer2 = channels.getBuffer(1); + List result2 = buffer2.obtain(0, 100); + + Assert.assertEquals(2, result1.size()); + Assert.assertEquals(4, result1.size() + result2.size()); + + + } + + @Test + public void testOverrideProduce() throws IllegalAccessException { + DataCarrier carrier = new DataCarrier(2, 100); + carrier.setBufferStrategy(BufferStrategy.OVERRIDE); + + for (int i = 0; i < 500; i++) { + Assert.assertTrue(carrier.produce(new SampleData().setName("d" + i))); + } + + Channels channels = (Channels) (MemberModifier.field(DataCarrier.class, "channels").get(carrier)); + Buffer buffer1 = channels.getBuffer(0); + List result1 = buffer1.obtain(0, 100); + + Buffer buffer2 = channels.getBuffer(1); + List result2 = buffer2.obtain(0, 100); + Assert.assertEquals(200, result1.size() + result2.size()); + } + + @Test + public void testIfPossibleProduce() throws IllegalAccessException { + DataCarrier carrier = new DataCarrier(2, 100); + carrier.setBufferStrategy(BufferStrategy.IF_POSSIBLE); + + for (int i = 0; i < 200; i++) { + Assert.assertTrue(carrier.produce(new SampleData().setName("d" + i))); + } + + for (int i = 0; i < 200; i++) { + Assert.assertFalse(carrier.produce(new SampleData().setName("d" + i + "_2"))); + } + + Channels channels = (Channels) (MemberModifier.field(DataCarrier.class, "channels").get(carrier)); + Buffer buffer1 = channels.getBuffer(0); + List result1 = buffer1.obtain(0, 100); + + Buffer buffer2 = channels.getBuffer(1); + List result2 = buffer2.obtain(0, 100); + Assert.assertEquals(200, result1.size() + result2.size()); + } + + @Test + public void testBlockingProduce() throws IllegalAccessException { + final DataCarrier carrier = new DataCarrier(2, 100); + + for (int i = 0; i < 200; i++) { + Assert.assertTrue(carrier.produce(new SampleData().setName("d" + i))); + } + + long time1 = System.currentTimeMillis(); + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + IConsumer consumer = new IConsumer() { + int i = 0; + + @Override + public void init() { + + } + + @Override + public void consume(List data) { + + } + + @Override + public void onError(List data, Throwable t) { + + } + + @Override + public void onExit() { + + } + }; + carrier.consume(consumer, 1); + } + }).start(); + + carrier.produce(new SampleData().setName("blocking-data")); + long time2 = System.currentTimeMillis(); + + Assert.assertTrue(time2 - time1 > 2000); + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/SampleData.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/SampleData.java new file mode 100644 index 0000000000000000000000000000000000000000..347a65c5602c71706971bae8b690371ec77364cf --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/SampleData.java @@ -0,0 +1,28 @@ +package org.skywalking.apm.agent.core.datacarrier; + +/** + * Created by wusheng on 2016/10/25. + */ +public class SampleData { + private int intValue; + + private String name; + + public int getIntValue() { + return intValue; + } + + public String getName() { + return name; + } + + public SampleData setIntValue(int intValue) { + this.intValue = intValue; + return this; + } + + public SampleData setName(String name) { + this.name = name; + return this; + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/common/AtomicRangeIntegerTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/common/AtomicRangeIntegerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..72003bbd0ac8cbf4361def5e7d6e6c9278c3affe --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/common/AtomicRangeIntegerTest.java @@ -0,0 +1,23 @@ +package org.skywalking.apm.agent.core.datacarrier.common; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Created by wusheng on 2016/10/25. + */ +public class AtomicRangeIntegerTest { + @Test + public void testGetAndIncrement() { + AtomicRangeInteger atomicI = new AtomicRangeInteger(0, 10); + for (int i = 0; i < 10; i++) { + Assert.assertEquals(i, atomicI.getAndIncrement()); + } + Assert.assertEquals(0, atomicI.getAndIncrement()); + Assert.assertEquals(1, atomicI.get()); + Assert.assertEquals(1, atomicI.intValue()); + Assert.assertEquals(1, atomicI.longValue()); + Assert.assertEquals(1, (int)atomicI.floatValue()); + Assert.assertEquals(1, (int)atomicI.doubleValue()); + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerPoolTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerPoolTest.java new file mode 100644 index 0000000000000000000000000000000000000000..04cf883700568f90f18d4391fd3a3d861f30663c --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerPoolTest.java @@ -0,0 +1,41 @@ +package org.skywalking.apm.agent.core.datacarrier.consumer; + +import org.junit.Assert; +import org.junit.Test; +import org.powermock.api.support.membermodification.MemberModifier; +import org.skywalking.apm.agent.core.datacarrier.SampleData; +import org.skywalking.apm.agent.core.datacarrier.buffer.BufferStrategy; +import org.skywalking.apm.agent.core.datacarrier.buffer.Channels; +import org.skywalking.apm.agent.core.datacarrier.partition.SimpleRollingPartitioner; + +/** + * Created by wusheng on 2016/10/26. + */ +public class ConsumerPoolTest { + @Test + public void testBeginConsumerPool() throws IllegalAccessException { + Channels channels = new Channels(2, 100, new SimpleRollingPartitioner(), BufferStrategy.BLOCKING); + ConsumerPool pool = new ConsumerPool(channels, new SampleConsumer(), 2); + pool.begin(); + + ConsumerThread[] threads = (ConsumerThread[])MemberModifier.field(ConsumerPool.class, "consumerThreads").get(pool); + Assert.assertEquals(2, threads.length); + Assert.assertTrue(threads[0].isAlive()); + Assert.assertTrue(threads[1].isAlive()); + } + + @Test + public void testCloseConsumerPool() throws InterruptedException, IllegalAccessException { + Channels channels = new Channels(2, 100, new SimpleRollingPartitioner(), BufferStrategy.BLOCKING); + ConsumerPool pool = new ConsumerPool(channels, new SampleConsumer(), 2); + pool.begin(); + + Thread.sleep(5000); + pool.close(); + ConsumerThread[] threads = (ConsumerThread[])MemberModifier.field(ConsumerPool.class, "consumerThreads").get(pool); + + Assert.assertEquals(2, threads.length); + Assert.assertFalse((Boolean)MemberModifier.field(ConsumerThread.class, "running").get(threads[0])); + Assert.assertFalse((Boolean)MemberModifier.field(ConsumerThread.class, "running").get(threads[1])); + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..a2429415f7bba8a382540ecc66c814311c7cefae --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerTest.java @@ -0,0 +1,116 @@ +package org.skywalking.apm.agent.core.datacarrier.consumer; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.concurrent.LinkedBlockingQueue; +import org.junit.Assert; +import org.junit.Test; +import org.powermock.api.support.membermodification.MemberModifier; +import org.skywalking.apm.agent.core.datacarrier.DataCarrier; +import org.skywalking.apm.agent.core.datacarrier.SampleData; + +/** + * Created by wusheng on 2016/10/26. + */ +public class ConsumerTest { + public static LinkedBlockingQueue buffer = new LinkedBlockingQueue(); + + public static boolean isOccurError = false; + + @Test + public void testConsumerLessThanChannel() throws IllegalAccessException { + final DataCarrier carrier = new DataCarrier(2, 100); + + for (int i = 0; i < 100; i++) { + Assert.assertTrue(carrier.produce(new SampleData().setName("data" + i))); + } + SampleConsumer consumer = new SampleConsumer(); + + consumer.i = 100; + carrier.consume(SampleConsumer.class, 1); + Assert.assertEquals(1, ((SampleConsumer)getConsumer(carrier)).i); + + SampleConsumer2 consumer2 = new SampleConsumer2(); + consumer2.i = 100; + carrier.consume(consumer2, 1); + Assert.assertEquals(100, ((SampleConsumer2)getConsumer(carrier)).i); + + carrier.shutdownConsumers(); + } + + @Test + public void testConsumerMoreThanChannel() throws IllegalAccessException, InterruptedException { + final DataCarrier carrier = new DataCarrier(2, 100); + + for (int i = 0; i < 200; i++) { + Assert.assertTrue(carrier.produce(new SampleData().setName("data" + i))); + } + SampleConsumer consumer = new SampleConsumer(); + + carrier.consume(SampleConsumer.class, 5); + + Thread.sleep(2000); + + List result = new ArrayList(); + buffer.drainTo(result); + + Assert.assertEquals(200, result.size()); + + HashSet consumerCounter = new HashSet(); + for (SampleData data : result) { + consumerCounter.add(data.getIntValue()); + } + Assert.assertEquals(5, consumerCounter.size()); + } + + @Test + public void testConsumerOnError() { + final DataCarrier carrier = new DataCarrier(2, 100); + + for (int i = 0; i < 200; i++) { + Assert.assertTrue(carrier.produce(new SampleData().setName("data" + i))); + } + SampleConsumer2 consumer = new SampleConsumer2(); + + consumer.onError = true; + carrier.consume(consumer, 5); + + Assert.assertTrue(isOccurError); + } + + class SampleConsumer2 implements IConsumer { + public int i = 1; + + public boolean onError = false; + + @Override + public void init() { + + } + + @Override + public void consume(List data) { + if (onError) { + throw new RuntimeException("consume exception"); + } + } + + @Override + public void onError(List data, Throwable t) { + isOccurError = true; + } + + @Override + public void onExit() { + + } + } + + private IConsumer getConsumer(DataCarrier carrier) throws IllegalAccessException { + ConsumerPool pool = ((ConsumerPool)MemberModifier.field(DataCarrier.class, "consumerPool").get(carrier)); + ConsumerThread[] threads = (ConsumerThread[])MemberModifier.field(ConsumerPool.class, "consumerThreads").get(pool); + + return (IConsumer)MemberModifier.field(ConsumerThread.class, "consumer").get(threads[0]); + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/SampleConsumer.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/SampleConsumer.java new file mode 100644 index 0000000000000000000000000000000000000000..2b210cd80b380ec19b68a4e5c3220910eded925e --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/SampleConsumer.java @@ -0,0 +1,35 @@ +package org.skywalking.apm.agent.core.datacarrier.consumer; + + +import java.util.List; +import org.skywalking.apm.agent.core.datacarrier.SampleData; + +/** + * Created by wusheng on 2016/10/26. + */ +public class SampleConsumer implements IConsumer { + public int i = 1; + + @Override + public void init() { + + } + + @Override + public void consume(List data) { + for(SampleData one : data) { + one.setIntValue(this.hashCode()); + ConsumerTest.buffer.offer(one); + } + } + + @Override + public void onError(List data, Throwable t) { + + } + + @Override + public void onExit() { + + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/ProducerThreadPartitionerTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/ProducerThreadPartitionerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..a0a7fed428898517c0383b3a8544eb9da568cfa7 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/ProducerThreadPartitionerTest.java @@ -0,0 +1,19 @@ +package org.skywalking.apm.agent.core.datacarrier.partition; + +import org.junit.Assert; +import org.junit.Test; +import org.skywalking.apm.agent.core.datacarrier.SampleData; + +/** + * Created by wusheng on 2016/10/25. + */ +public class ProducerThreadPartitionerTest { + @Test + public void testPartition(){ + int partitionNum = (int)Thread.currentThread().getId() % 10; + ProducerThreadPartitioner partitioner = new ProducerThreadPartitioner(); + Assert.assertEquals(partitioner.partition(10, new SampleData()), partitionNum); + Assert.assertEquals(partitioner.partition(10, new SampleData()), partitionNum); + Assert.assertEquals(partitioner.partition(10, new SampleData()), partitionNum); + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/SimpleRollingPartitionerTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/SimpleRollingPartitionerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6935f190015201c5c7dfed805dd78c4f093772f3 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/SimpleRollingPartitionerTest.java @@ -0,0 +1,18 @@ +package org.skywalking.apm.agent.core.datacarrier.partition; + +import org.junit.Assert; +import org.junit.Test; +import org.skywalking.apm.agent.core.datacarrier.SampleData; + +/** + * Created by wusheng on 2016/10/25. + */ +public class SimpleRollingPartitionerTest { + @Test + public void testPartition() { + SimpleRollingPartitioner partitioner = new SimpleRollingPartitioner(); + Assert.assertEquals(partitioner.partition(10, new SampleData()), 0); + Assert.assertEquals(partitioner.partition(10, new SampleData()), 1); + Assert.assertEquals(partitioner.partition(10, new SampleData()), 2); + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/VsABQ.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/VsABQ.java new file mode 100644 index 0000000000000000000000000000000000000000..bb867a1faeb1c4d19bb1b7ca3b135d52d510b67d --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/VsABQ.java @@ -0,0 +1,104 @@ +package org.skywalking.apm.agent.core.datacarrier.performance.comparetest; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; +import org.junit.Test; +import org.skywalking.apm.agent.core.datacarrier.DataCarrier; +import org.skywalking.apm.agent.core.datacarrier.consumer.IConsumer; + +/** + * Created by wusheng on 2016/11/24. + */ +public class VsABQ { + private static int totalSize = 100000000; + + /** + * 39469 + * + * @throws InterruptedException + */ + @Test + public void testABQ() throws InterruptedException { + final ArrayBlockingQueue queue = new ArrayBlockingQueue(5000); + + Thread consumer = new Thread(new Runnable() { + @Override + public void run() { + long startTime = -1; + int dataCounter = 0; + + while (true) { + ArrayList data = new ArrayList(); + queue.drainTo(data); + if (startTime == -1 && data.size() > 0) { + startTime = System.currentTimeMillis(); + } + + dataCounter += data.size(); + if (dataCounter == totalSize) { + break; + } + } + + System.out.println("time cost:" + (System.currentTimeMillis() - startTime)); + } + }); + consumer.start(); + + for (int i = 0; i < totalSize; i++) { + boolean status = false; + while (!status) { + try { + queue.add(i); + status = true; + } catch (Exception e) { + } + } + } + + consumer.join(); + } + + public static void main(String[] args) throws InterruptedException { + final DataCarrier dataCarrier = new DataCarrier(5, 1000); + + dataCarrier.consume(new IConsumer() { + long startTime = -1; + int dataCounter = 0; + + @Override + public void init() { + + } + + @Override + public void consume(List data) { + if (startTime == -1 && data.size() > 0) { + startTime = System.currentTimeMillis(); + } + dataCounter += data.size(); + + if (dataCounter == totalSize) { + System.out.println("cost:" + (System.currentTimeMillis() - startTime)); + } + } + + @Override + public void onError(List data, Throwable t) { + + } + + @Override + public void onExit() { + + } + }, 1); + + for (int i = 0; i < totalSize; i++) { + dataCarrier.produce(i); + } + + Thread.sleep(10 * 1000L); + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/Data.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/Data.java new file mode 100644 index 0000000000000000000000000000000000000000..771cc1d22843a49d465ad68f91281300de51bc7a --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/Data.java @@ -0,0 +1,17 @@ +package org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor; + +/** + * Created by wusheng on 2016/11/24. + */ +public class Data { + private long value1; + + public long getValue1() { + return value1; + } + + public void setValue1(long value1) { + this.value1 = value1; + } +} + diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventFactory.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..25e5740cb1e1a06c2343d6468940662b95235ef4 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventFactory.java @@ -0,0 +1,14 @@ +package org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor; + +import com.lmax.disruptor.EventFactory; + +/** + * Created by wusheng on 2016/11/24. + */ +public class DataEventFactory implements EventFactory { + + @Override + public Data newInstance() { + return new Data(); + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventHandler.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..01b14308a743d0dcba4c5a17d20ac9409573b5ae --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventHandler.java @@ -0,0 +1,21 @@ +package org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor; + +import com.lmax.disruptor.EventHandler; + +/** + * Created by wusheng on 2016/11/24. + */ +public class DataEventHandler implements EventHandler { + public long counter = 0; + + @Override + public void onEvent(Data data, long sequence, boolean endOfBatch) throws Exception { + counter++; + System.out.println("handler:" + data.getValue1()); + + if (counter == TestDisruptor.totalSize) { + System.out.println("time cost:" + (System.currentTimeMillis() - TestDisruptor.startTime)); + TestDisruptor.isEnd = true; + } + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataProducer.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataProducer.java new file mode 100644 index 0000000000000000000000000000000000000000..464cb7de1af5a10bf6283665c269f7353c6d66ec --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataProducer.java @@ -0,0 +1,25 @@ +package org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor; + +import com.lmax.disruptor.RingBuffer; + +/** + * Created by wusheng on 2016/11/24. + */ +public class DataProducer { + private final RingBuffer ringBuffer; + + public DataProducer(RingBuffer ringBuffer) { + this.ringBuffer = ringBuffer; + } + + public void onData(Data bb) { + long sequence = ringBuffer.next(); // Grab the next sequence + try { + Data event = ringBuffer.get(sequence); // Get the entry in the Disruptor + // for the sequence + event.setValue1(bb.getValue1());// Fill with data + } finally { + ringBuffer.publish(sequence); + } + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/TestDisruptor.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/TestDisruptor.java new file mode 100644 index 0000000000000000000000000000000000000000..7ee4a0c8d223c48c03c04e00af8e6e85518f95b8 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/TestDisruptor.java @@ -0,0 +1,62 @@ +package org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor; + +import com.lmax.disruptor.RingBuffer; +import com.lmax.disruptor.WorkHandler; +import com.lmax.disruptor.dsl.Disruptor; +import com.lmax.disruptor.util.DaemonThreadFactory; + +/** + * Created by wusheng on 2016/11/24. + */ +public class TestDisruptor { + public static int totalSize = 100000000; + public static long startTime; + public static volatile boolean isEnd = false; + + public static void main(String[] args) throws InterruptedException { + // The factory for the event + DataEventFactory factory = new DataEventFactory(); + + // Specify the size of the ring buffer, must be power of 2. + int bufferSize = 1024; + + // Construct the Disruptor + Disruptor disruptor = new Disruptor(factory, bufferSize, DaemonThreadFactory.INSTANCE); + + disruptor.handleEventsWithWorkerPool(new WorkHandler(){ + @Override + public void onEvent(Data event) throws Exception { + System.out.println("work1:" + event.getValue1()); + } + }, new WorkHandler(){ + + @Override + public void onEvent(Data event) throws Exception { + System.out.println("work2:" + event.getValue1()); + } + }); + // Connect the handler + disruptor.handleEventsWith(new DataEventHandler()); + + // Start the Disruptor, starts all threads running + disruptor.start(); + + RingBuffer ringBuffer = disruptor.getRingBuffer(); + DataProducer producer = new DataProducer(ringBuffer); + + startTime = System.currentTimeMillis(); + for (int i = 0; i < totalSize; i++) { + Data data = new Data(); + data.setValue1(i); + producer.onData(data); + + Thread.sleep(1000L); + } + + disruptor.shutdown(); + + while(!TestDisruptor.isEnd){ + Thread.sleep(100L); + } + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefineTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefineTest.java index 3a9076ee395849aa7f13cb717dc405e0db091e9b..c856b27988f05b6c66b2afda9588278206c18980 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefineTest.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefineTest.java @@ -1,5 +1,7 @@ package org.skywalking.apm.agent.core.plugin; +import java.lang.instrument.ClassFileTransformer; +import java.lang.instrument.Instrumentation; import net.bytebuddy.agent.ByteBuddyAgent; import net.bytebuddy.agent.builder.AgentBuilder; import net.bytebuddy.description.type.TypeDescription; @@ -7,6 +9,7 @@ import net.bytebuddy.dynamic.DynamicType; import net.bytebuddy.dynamic.loading.ByteArrayClassLoader; import net.bytebuddy.dynamic.loading.PackageDefinitionStrategy; import net.bytebuddy.matcher.ElementMatchers; +import net.bytebuddy.utility.JavaModule; import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Test; @@ -14,9 +17,8 @@ import org.junit.runner.RunWith; import org.powermock.modules.junit4.PowerMockRunner; import org.skywalking.apm.agent.core.plugin.utility.ClassFileExtraction; -import java.lang.instrument.ClassFileTransformer; - import static net.bytebuddy.matcher.ElementMatchers.none; +import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.MatcherAssert.assertThat; @RunWith(PowerMockRunner.class) @@ -32,9 +34,7 @@ public class AbstractClassEnhancePluginDefineTest { public void setUp() throws Exception { classLoader = new ByteArrayClassLoader.ChildFirst(getClass().getClassLoader(), ClassFileExtraction.of(TargetObject.class), - null, - ByteArrayClassLoader.PersistenceHandler.MANIFEST, - PackageDefinitionStrategy.NoOp.INSTANCE); + ByteArrayClassLoader.PersistenceHandler.MANIFEST); } @Test @@ -91,17 +91,6 @@ public class AbstractClassEnhancePluginDefineTest { public static class MockTargetObjectTransformer implements AgentBuilder.Transformer { - @Override - public DynamicType.Builder transform(DynamicType.Builder builder, TypeDescription typeDescription, - ClassLoader classLoader) { - try { - DynamicType.Builder newBuilder = transformInstanceMethod(builder); - return transformStaticMethod(newBuilder); - } catch (Exception exception) { - throw new AssertionError(exception); - } - } - private DynamicType.Builder transformStaticMethod(DynamicType.Builder newBuilder) { MockPluginStaticMethodInstrumentation staticMethodInstrumentation = new MockPluginStaticMethodInstrumentation(); return staticMethodInstrumentation.define(WEAVE_CLASS, newBuilder, AbstractClassEnhancePluginDefineTest.class.getClassLoader()); @@ -111,6 +100,17 @@ public class AbstractClassEnhancePluginDefineTest { MockPluginInstanceMethodInstrumentation instrumentation = new MockPluginInstanceMethodInstrumentation(); return instrumentation.define(WEAVE_CLASS, builder, AbstractClassEnhancePluginDefineTest.class.getClassLoader()); } + + @Override + public DynamicType.Builder transform(DynamicType.Builder builder, TypeDescription typeDescription, + ClassLoader classLoader, JavaModule module) { + try { + DynamicType.Builder newBuilder = transformInstanceMethod(builder); + return transformStaticMethod(newBuilder); + } catch (Exception exception) { + throw new AssertionError(exception); + } + } } } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockAbstractClassEnhancePluginDefine.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockAbstractClassEnhancePluginDefine.java index a4e1ffba1a3f41ecb51e6a45dbff216a21356fe1..c9dc3612d21d8a543b43ac10d47590362fdfa99d 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockAbstractClassEnhancePluginDefine.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockAbstractClassEnhancePluginDefine.java @@ -6,9 +6,10 @@ import net.bytebuddy.dynamic.DynamicType; * Created by wusheng on 2017/2/27. */ public class MockAbstractClassEnhancePluginDefine extends AbstractClassEnhancePluginDefine { + @Override - protected DynamicType.Builder enhance(String enhanceOriginClassName, - DynamicType.Builder newClassBuilder) throws PluginException { + protected DynamicType.Builder enhance(String enhanceOriginClassName, DynamicType.Builder newClassBuilder, + ClassLoader classLoader) throws PluginException { return newClassBuilder; } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInstanceMethodInstrumentation.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInstanceMethodInstrumentation.java index 9e4462984e04b5d8a0ca53f574e6c8f4b554f6df..ed0aa6f1719646f1d81d820cf9cd22a200a86eca 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInstanceMethodInstrumentation.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInstanceMethodInstrumentation.java @@ -45,6 +45,10 @@ public class MockPluginInstanceMethodInstrumentation extends ClassInstanceMethod public String getMethodsInterceptor() { return AbstractClassEnhancePluginDefineTest.INTERCEPTOR_CLASS; } + + @Override public boolean isOverrideArgs() { + return false; + } }, new InstanceMethodsInterceptPoint() { @Override @@ -56,6 +60,10 @@ public class MockPluginInstanceMethodInstrumentation extends ClassInstanceMethod public String getMethodsInterceptor() { return AbstractClassEnhancePluginDefineTest.INTERCEPTOR_CLASS; } + + @Override public boolean isOverrideArgs() { + return false; + } } }; } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInterceptor.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInterceptor.java index 9ec63ab6c2a968c32512fa20ec237a557ebbf405..014079bb12a21a1d3bb1ce9c01377c5af2844a56 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInterceptor.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInterceptor.java @@ -1,42 +1,48 @@ package org.skywalking.apm.agent.core.plugin; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodsAroundInterceptor; public class MockPluginInterceptor implements InstanceMethodsAroundInterceptor, StaticMethodsAroundInterceptor, InstanceConstructorInterceptor { + @Override - public void beforeMethod(StaticMethodInvokeContext interceptorContext, MethodInterceptResult result) { + public void onConstruct(EnhancedInstance objInst, Object[] allArguments) { + objInst.setSkyWalkingDynamicField(allArguments[0]); } @Override - public Object afterMethod(StaticMethodInvokeContext interceptorContext, Object ret) { - return ret + "_STATIC"; + public void beforeMethod(Class clazz, String methodName, Object[] allArguments, Class[] parameterTypes, + MethodInterceptResult result) { + } @Override - public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext) { + public Object afterMethod(Class clazz, String methodName, Object[] allArguments, Class[] parameterTypes, + Object ret) { + return ret + "_STATIC"; } @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - MethodInterceptResult result) { + public void handleMethodException(Class clazz, String methodName, Object[] allArguments, Class[] parameterTypes, + Throwable t) { + } - @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - Object ret) { - return ret + String.valueOf(context.get("VALUE")); + @Override public void beforeMethod(EnhancedInstance objInst, String methodName, Object[] allArguments, + Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { + } - @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext) { + @Override public Object afterMethod(EnhancedInstance objInst, String methodName, Object[] allArguments, + Class[] argumentsTypes, Object ret) throws Throwable { + return ret + String.valueOf(objInst.getSkyWalkingDynamicField()); } - @Override - public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) { - context.set("VALUE", interceptorContext.allArguments()[0]); + @Override public void handleMethodException(EnhancedInstance objInst, String methodName, Object[] allArguments, + Class[] argumentsTypes, Throwable t) { + } } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginStaticMethodInstrumentation.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginStaticMethodInstrumentation.java index 1e83cdac6d9960dfeed894910687ff13d98d29f9..4b00b82187ad314db0dcdf4e382731af24f98322 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginStaticMethodInstrumentation.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginStaticMethodInstrumentation.java @@ -26,6 +26,10 @@ public class MockPluginStaticMethodInstrumentation extends ClassStaticMethodsEnh public String getMethodsInterceptor() { return AbstractClassEnhancePluginDefineTest.INTERCEPTOR_CLASS; } + + @Override public boolean isOverrideArgs() { + return false; + } } }; } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/PluginFinderTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/PluginFinderTest.java index 5378f9ce7b8cede2a89c1e0f46966eda0df57564..9ccc1441c93b8475b8f02faae43566b3e1ab5c96 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/PluginFinderTest.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/PluginFinderTest.java @@ -1,11 +1,10 @@ package org.skywalking.apm.agent.core.plugin; +import java.util.ArrayList; import net.bytebuddy.dynamic.DynamicType; import org.junit.Assert; import org.junit.Test; -import java.util.ArrayList; - /** * Created by wusheng on 2017/2/27. */ @@ -31,9 +30,10 @@ public class PluginFinderTest { } public class NewTestPlugin extends AbstractClassEnhancePluginDefine { + @Override - protected DynamicType.Builder enhance(String enhanceOriginClassName, - DynamicType.Builder newClassBuilder) throws PluginException { + protected DynamicType.Builder enhance(String enhanceOriginClassName, DynamicType.Builder newClassBuilder, + ClassLoader classLoader) throws PluginException { return newClassBuilder; } @@ -44,9 +44,10 @@ public class PluginFinderTest { } public class NewTestPlugin2 extends AbstractClassEnhancePluginDefine { + @Override - protected DynamicType.Builder enhance(String enhanceOriginClassName, - DynamicType.Builder newClassBuilder) throws PluginException { + protected DynamicType.Builder enhance(String enhanceOriginClassName, DynamicType.Builder newClassBuilder, + ClassLoader classLoader) throws PluginException { return newClassBuilder; } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/assist/NoConcurrencyAccessObjectTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/assist/NoConcurrencyAccessObjectTest.java deleted file mode 100644 index a1333a382e3596081c4ab03936983caf3871f8ac..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/assist/NoConcurrencyAccessObjectTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.skywalking.apm.agent.core.plugin.assist; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; -import org.skywalking.apm.agent.core.plugin.interceptor.assist.NoConcurrencyAccessObject; - -/** - * @author wusheng - */ -@RunWith(MockitoJUnitRunner.class) -public class NoConcurrencyAccessObjectTest { - - @Mock - private InstanceMethodInvokeContext invokeContext; - - @Test - public void testEntraExitCounter() { - final EnhancedClassInstanceContext context = new EnhancedClassInstanceContext(); - NoConcurrencyAccessObject first = new NoConcurrencyAccessObject() { - - @Override - protected void enter(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { - context.set("firstEntrance", true); - } - - @Override - protected void exit() { - context.set("firstExit", true); - } - }; - - NoConcurrencyAccessObject second = new NoConcurrencyAccessObject() { - - @Override - protected void enter(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { - context.set("secondEntrance", true); - } - - @Override - protected void exit() { - context.set("lastEntrance", true); - } - }; - - first.whenEnter(context, invokeContext); - second.whenEnter(context, invokeContext); - first.whenExist(context); - second.whenExist(context); - - Assert.assertTrue(!context.isContain("secondEntrance")); - Assert.assertTrue(!context.isContain("firstExit")); - Assert.assertTrue(context.isContain("firstEntrance")); - Assert.assertTrue(context.isContain("lastEntrance")); - } -} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/bytebuddy/AllObjectDefaultMethodsMatchTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/bytebuddy/AllObjectDefaultMethodsMatchTest.java deleted file mode 100644 index 7b48da04f27481acaabac62ce28e16109de749a9..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/bytebuddy/AllObjectDefaultMethodsMatchTest.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.skywalking.apm.agent.core.plugin.bytebuddy; - -import org.junit.Test; - -/** - * Created by wusheng on 2017/2/28. - */ -public class AllObjectDefaultMethodsMatchTest { - @Test - public void testMatches() { - } -} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/EnhancedClassInstanceContextTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/EnhancedClassInstanceContextTest.java deleted file mode 100644 index a5c0c9ad778f49dad4ff411c90f737ee9d8acb5c..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/EnhancedClassInstanceContextTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.skywalking.apm.agent.core.plugin.interceptor; - -import org.junit.Assert; -import org.junit.Test; - -/** - * @author wusheng - */ -public class EnhancedClassInstanceContextTest { - @Test - public void test() { - EnhancedClassInstanceContext context = new EnhancedClassInstanceContext(); - context.set("key", "value"); - Assert.assertTrue(context.isContain("key")); - Assert.assertEquals("value", context.get("key")); - Assert.assertEquals("value", (String)context.get("key")); - } -} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/enhance/InvokeContextTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/enhance/InvokeContextTest.java deleted file mode 100644 index 1f705e66c0ac2958e51fb59c967d1fd87b78d213..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/enhance/InvokeContextTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.skywalking.apm.agent.core.plugin.interceptor.enhance; - -import org.junit.Assert; -import org.junit.Test; - -/** - * @author wusheng - */ -public class InvokeContextTest { - @Test - public void testConstructorInvokeContext() { - ConstructorInvokeContext context = new ConstructorInvokeContext(this, new Object[] {"obj1", 1}); - Assert.assertEquals(this, context.inst()); - Assert.assertEquals("obj1", context.allArguments()[0]); - Assert.assertEquals(1, context.allArguments()[1]); - } - - @Test - public void testInstanceMethodInvokeContext() { - InstanceMethodInvokeContext context = new InstanceMethodInvokeContext(this, "methodA", new Object[] {"obj1", 1}, new Class[] {String.class, Integer.class}); - Assert.assertEquals(this, context.inst()); - Assert.assertEquals("obj1", context.allArguments()[0]); - Assert.assertEquals(1, context.allArguments()[1]); - Assert.assertEquals("methodA", context.methodName()); - Assert.assertEquals(String.class, context.argumentTypes()[0]); - Assert.assertEquals(Integer.class, context.argumentTypes()[1]); - } - - @Test - public void testStaticMethodInvokeContext() { - StaticMethodInvokeContext context = new StaticMethodInvokeContext(InvokeContextTest.class, "methodA", new Object[] {"obj1", 1}, new Class[] {String.class, Integer.class}); - Assert.assertEquals(InvokeContextTest.class, context.claszz()); - Assert.assertEquals("obj1", context.allArguments()[0]); - Assert.assertEquals(1, context.allArguments()[1]); - Assert.assertEquals("methodA", context.methodName()); - Assert.assertEquals(String.class, context.argumentTypes()[0]); - Assert.assertEquals(Integer.class, context.argumentTypes()[1]); - } -} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/utility/ClassFileExtraction.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/utility/ClassFileExtraction.java index 09eab05fba649d21d61a79ba3e01a3aca1960981..ab64d7c270f22d7f0f67429fa9ccb5613531b39b 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/utility/ClassFileExtraction.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/utility/ClassFileExtraction.java @@ -1,8 +1,14 @@ package org.skywalking.apm.agent.core.plugin.utility; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import net.bytebuddy.ClassFileVersion; import net.bytebuddy.asm.AsmVisitorWrapper; import net.bytebuddy.description.field.FieldDescription; +import net.bytebuddy.description.field.FieldList; +import net.bytebuddy.description.method.MethodDescription; +import net.bytebuddy.description.method.MethodList; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.Implementation; import net.bytebuddy.implementation.auxiliary.AuxiliaryType; @@ -12,10 +18,6 @@ import net.bytebuddy.jar.asm.ClassWriter; import net.bytebuddy.pool.TypePool; import org.junit.Test; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; @@ -38,6 +40,8 @@ public class ClassFileExtraction { classWriter, new IllegalContext(), TypePool.Empty.INSTANCE, + new FieldList.Empty(), + new MethodList.Empty(), AsmVisitorWrapper.NO_FLAGS, AsmVisitorWrapper.NO_FLAGS), AsmVisitorWrapper.NO_FLAGS); return classWriter.toByteArray(); @@ -82,5 +86,23 @@ public class ClassFileExtraction { public ClassFileVersion getClassFileVersion() { throw new AssertionError("Did not expect method call"); } + + @Override + public MethodDescription.InDefinedShape registerAccessorFor( + Implementation.SpecialMethodInvocation specialMethodInvocation, AccessType accessType) { + throw new AssertionError("Did not expect method call"); + } + + @Override + public MethodDescription.InDefinedShape registerGetterFor(FieldDescription fieldDescription, + AccessType accessType) { + throw new AssertionError("Did not expect method call"); + } + + @Override + public MethodDescription.InDefinedShape registerSetterFor(FieldDescription fieldDescription, + AccessType accessType) { + throw new AssertionError("Did not expect method call"); + } } } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/sampling/SamplingTracerContextTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/sampling/SamplingTracerContextTestCase.java index e34e97cf0ba5b11f8acd5f4346c5002e68e531ca..92184cfb5ffec53ff32c7cea2dca19e025c09fb4 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/sampling/SamplingTracerContextTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/sampling/SamplingTracerContextTestCase.java @@ -7,9 +7,10 @@ import org.junit.Test; import org.skywalking.apm.agent.core.boot.ServiceManager; import org.skywalking.apm.agent.core.conf.Config; import org.skywalking.apm.agent.core.context.ContextManager; +import org.skywalking.apm.agent.core.context.TracingContext; import org.skywalking.apm.agent.core.context.TracingContextListener; -import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; +import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.skywalking.apm.agent.core.context.trace.TraceSegment; /** @@ -29,24 +30,24 @@ public class SamplingTracerContextTestCase { @Before public void setUp() throws Exception { - Config.Agent.SAMPLE_N_PER_10_SECS = 5; + Config.Agent.SAMPLE_N_PER_3_SECS = 5; ServiceManager.INSTANCE.boot(); - TracerContext.ListenerManager.add(listener); + TracingContext.ListenerManager.add(listener); } @Test public void testSample5InALoop() throws InterruptedException { for (int i = 0; i < 11; i++) { - AbstractSpan span = ContextManager.createSpan("serviceA"); - Tags.COMPONENT.set(span, "test"); + AbstractSpan span = ContextManager.createLocalSpan("serviceA"); + span.setComponent("test"); ContextManager.stopSpan(); } /** * Considering the reset cycle, in ci-env, may sample 5-7 trace through 1 or 2 cycle. */ - Assert.assertTrue(finishedTracerCounter >= 5); - Assert.assertTrue(finishedTracerCounter <= 7); + Assert.assertTrue(finishedTracerCounter >= 2); + Assert.assertTrue(finishedTracerCounter <= 3); Thread.sleep(10 * 1000L); } @@ -54,10 +55,10 @@ public class SamplingTracerContextTestCase { public void testSample5InLoopWithMultiSpans() { finishedTracerCounter = 0; for (int i = 0; i < 11; i++) { - AbstractSpan span = ContextManager.createSpan("serviceA"); - Tags.COMPONENT.set(span, "test"); - AbstractSpan span2 = ContextManager.createSpan("serviceB"); - Tags.COMPONENT.set(span2, "test2"); + AbstractSpan span = ContextManager.createLocalSpan("serviceA"); + span.setComponent("test"); + AbstractSpan span2 = ContextManager.createLocalSpan("serviceB"); + span.setComponent("test2"); ContextManager.stopSpan(); ContextManager.stopSpan(); } @@ -71,7 +72,7 @@ public class SamplingTracerContextTestCase { @After public void tearDown() throws Exception { - Config.Agent.SAMPLE_N_PER_10_SECS = -1; - TracerContext.ListenerManager.remove(listener); + Config.Agent.SAMPLE_N_PER_3_SECS = -1; + TracingContext.ListenerManager.remove(listener); } } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/StringTagReader.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/StringTagReader.java deleted file mode 100644 index 8bc71ad0420afdb87ca719a2783dff5ff1076f83..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/StringTagReader.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.skywalking.apm.agent.core.tags; - -import java.lang.reflect.Field; -import java.util.List; -import org.skywalking.apm.agent.core.context.tag.StringTag; - -/** - * @author wusheng - */ -public class StringTagReader { - public static String get(Span span, StringTag tag) { - List tagsWithStrList = null; - try { - Field tagsWithStr = Span.class.getDeclaredField("tagsWithStr"); - tagsWithStr.setAccessible(true); - tagsWithStrList = (List)tagsWithStr.get(span); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } - - for (StringTagItem item : tagsWithStrList) { - if (tag.key().equals(item.getKey())) { - return item.getValue(); - } - } - return null; - } - -} diff --git a/apm-sniffer/apm-sniffer-mock/pom.xml b/apm-sniffer/apm-sniffer-mock/pom.xml deleted file mode 100644 index ea4a86af2ebe66be3c9c1d85b99fe59a99aac377..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/pom.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - apm-sniffer - org.skywalking - 3.2-2017 - - 4.0.0 - apm-sniffer-mock - This is a sniffer mock module. Simulate a sniffer, assemble one or more trace segments. - Test-dependency, only. - - - - - org.skywalking - apm-agent-core - ${project.version} - - - - - junit - junit - 4.12 - - - - - diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/MockTracingContextListener.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/MockTracingContextListener.java deleted file mode 100644 index 317c73593f6350e7c7dae3c3701090ea3c271444..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/MockTracingContextListener.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.skywalking.apm.sniffer.mock.context; - -import org.junit.Assert; -import org.skywalking.apm.agent.core.context.TracingContextListener; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * This is mock tracer context listener, which should be added by calling {@link TracerContext.ListenerManager#add(TracingContextListener)}. - * This mock listener will hold all finished trace, which all are generated by {@link TracerContext#finish()}. - *

- * Created by wusheng on 2017/2/20. - */ -public class MockTracingContextListener implements TracingContextListener { - private List finishedTraceSegments = Collections.synchronizedList(new ArrayList()); - - @Override - public void afterFinished(TraceSegment traceSegment) { - finishedTraceSegments.add(traceSegment); - } - - /** - * Assert all finished {@link #finishedTraceSegments} match the given size. - * - * @param size the give size. - */ - public void assertSize(int size) { - Assert.assertEquals(size, finishedTraceSegments.size()); - } - - /** - * Assert the given index is a valid index of {@link #finishedTraceSegments} - * - * @param index the given index. - */ - public void assertValidIndex(int index) { - Assert.assertTrue(index < finishedTraceSegments.size()); - } - - /** - * Assert the {@link TraceSegment} at the given index of {@link #finishedTraceSegments}, - * and run the given {@link SegmentAssert#call(TraceSegment)} to assert. - * - * @param index the given index. - * @param segmentAssert the given assert. - */ - public void assertTraceSegment(int index, SegmentAssert segmentAssert) { - assertValidIndex(index); - segmentAssert.call(finishedTraceSegments.get(index)); - } - - /** - * Clear all hold data. - */ - public void clear() { - finishedTraceSegments.clear(); - } - - /** - * Get {@link TraceSegment} of the given index. - * - * @param index - * @return - */ - public TraceSegment getFinished(int index) { - assertSize(index + 1); - return finishedTraceSegments.get(index); - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/SegmentAssert.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/SegmentAssert.java deleted file mode 100644 index 826703ba8670a39825f14b9e2fed337d9a4f858e..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/SegmentAssert.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.skywalking.apm.sniffer.mock.context; - -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -/** - * The SegmentAssert interface should be implemented by any - * class whose instances are intended to assert a trace segment data. - *

- * Created by wusheng on 2017/2/20. - */ -public interface SegmentAssert { - void call(TraceSegment finishedSegment); -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java deleted file mode 100644 index 29bd4b7c54e323abf92ff6fc257003a3a252673a..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace; - -import java.lang.reflect.Field; -import java.util.List; - -/** - * @author wusheng - */ -public class SpanLogReader { - public static List getLogs(Span span) { - Field logs = null; - try { - logs = Span.class.getDeclaredField("logs"); - } catch (NoSuchFieldException e) { - throw new RuntimeException(e); - } - logs.setAccessible(true); - try { - return (List)logs.get(span); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilder.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilder.java deleted file mode 100644 index 3a7e77c08427490617f695e9e41b28e2606a72dd..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilder.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace; - -import org.skywalking.apm.sniffer.mock.context.MockTracingContextListener; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -/** - * Created by wusheng on 2017/2/20. - */ -public interface TraceSegmentBuilder { - TraceSegment build(MockTracingContextListener listener); -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilderFactory.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilderFactory.java deleted file mode 100644 index 261ef89192fbbab914af87055afec564385e5ce9..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilderFactory.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace; - -import org.skywalking.apm.sniffer.mock.context.MockTracingContextListener; -import org.skywalking.apm.sniffer.mock.trace.builders.trace.*; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -/** - * The TraceSegmentBuilderFactory contains all {@link TraceSegmentBuilder} implementations. All the - * implementations can build a true {@link TraceSegment} object, and contain all necessary spans, with all tags/events, - * all refs. - *

- * Created by wusheng on 2017/2/20. - */ -public enum TraceSegmentBuilderFactory { - INSTANCE; - - /** - * @see {@link SingleTomcat200TraceBuilder} - */ - public TraceSegment singleTomcat200Trace() { - return this.build(SingleTomcat200TraceBuilder.INSTANCE); - } - - /** - * @see {@link SingleTomcat404TraceBuilder} - */ - public TraceSegment singleTomcat404Trace() { - return this.build(SingleTomcat404TraceBuilder.INSTANCE); - } - - /** - * @see {@link SingleTomcat500TraceBuilder} - */ - public TraceSegment singleTomcat500Trace() { - return this.build(SingleTomcat500TraceBuilder.INSTANCE); - } - - /** - * @see {@link TomcatDubboClientTraceBuilder} - */ - public TraceSegment traceOf_Tomcat_DubboClient() { - return this.build(TomcatDubboClientTraceBuilder.INSTANCE); - } - - /** - * @see {@link DubboServerMysqlTraceBuilder} - */ - public TraceSegment traceOf_DubboServer_MySQL() { - return this.build(DubboServerMysqlTraceBuilder.INSTANCE); - } - - private TraceSegment build(TraceSegmentBuilder builder) { - MockTracingContextListener listener = new MockTracingContextListener(); - try { - TracerContext.ListenerManager.add(listener); - return builder.build(listener); - } finally { - TracerContext.ListenerManager.remove(listener); - } - } - -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/DubboSpanGenerator.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/DubboSpanGenerator.java deleted file mode 100644 index 5677189340af9845f85c0099a9499b113b68bfce..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/DubboSpanGenerator.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.builders.span; - -import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.context.tag.Tags; -import org.skywalking.apm.agent.core.context.trace.AbstractSpan; - -/** - * The DubboSpanGenerator generates all possible spans, by tracing Dubbo rpc. - * Including discovery/server side span. - * - * @author wusheng - */ -public class DubboSpanGenerator { - public static class Client extends SpanGeneration { - @Override - protected void before() { - AbstractSpan span = ContextManager.createSpan("/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query"); - Tags.COMPONENT.set(span, "Dubbo"); - Tags.URL.set(span, "rest://192.168.1.8:20880/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query(String)"); - Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER); - span.setPeerHost("192.168.1.8"); - span.setPort(20880); - Tags.SPAN_LAYER.asHttp(span); - } - - @Override - protected void after() { - ContextManager.stopSpan(); - } - } - - public static class Server extends SpanGeneration { - @Override - protected void before() { - AbstractSpan span = ContextManager.createSpan("/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query"); - Tags.COMPONENT.set(span, "Dubbo"); - Tags.URL.set(span, "rest://192.168.1.8:20880/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query(String)"); - Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); - span.setPeerHost("10.21.9.35"); - Tags.SPAN_LAYER.asHttp(span); - } - - @Override - protected void after() { - ContextManager.stopSpan(); - } - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/MySQLGenerator.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/MySQLGenerator.java deleted file mode 100644 index 4c73e0211a9b721a4480d573d2c936a6ddd02aa4..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/MySQLGenerator.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.builders.span; - -import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.context.tag.Tags; -import org.skywalking.apm.agent.core.context.trace.AbstractSpan; - -/** - * The MySQLGenerator generates all possible spans, by tracing mysql discovery access. - * - * @author wusheng - */ -public class MySQLGenerator { - public static class Query extends SpanGeneration { - @Override - protected void before() { - AbstractSpan span = ContextManager.createSpan("mysql/jdbi/statement/executeQuery"); - Tags.COMPONENT.set(span, "Mysql"); - Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); - span.setPeerHost("10.5.34.18"); - span.setPort(30088); - Tags.DB_INSTANCE.set(span, "mysql-instance"); - Tags.DB_STATEMENT.set(span, "select * from users where user_id = 1"); - Tags.DB_TYPE.set(span, "sql"); - Tags.SPAN_LAYER.asDB(span); - } - - @Override - protected void after() { - ContextManager.stopSpan(); - } - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/SpanGeneration.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/SpanGeneration.java deleted file mode 100644 index 17f4b3a22ebf7cdf8dd3c09f4c278532f36aeb7e..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/SpanGeneration.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.builders.span; - -/** - * The SpanGeneration implementations can generate several kinds of spans. - * - * @author wusheng - */ -public abstract class SpanGeneration { - private SpanGeneration[] next; - - public SpanGeneration build(SpanGeneration next) { - this.next = new SpanGeneration[] {next}; - return next; - } - - public void build(SpanGeneration... next) { - this.next = next; - } - - protected abstract void before(); - - protected abstract void after(); - - public void generate() { - this.before(); - if (next != null) { - for (SpanGeneration generation : next) { - generation.generate(); - } - } - this.after(); - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java deleted file mode 100644 index f5c6c495955e0d0f5e18ad5eac3419fce32d7c41..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.builders.span; - -import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.context.tag.Tags; -import org.skywalking.apm.agent.core.context.trace.AbstractSpan; - -/** - * The TomcatSpanGenerator generate all possible spans, by tracing Tomcat. - *

- * Created by wusheng on 2017/2/20. - */ -public class TomcatSpanGenerator { - public static class ON200 extends SpanGeneration { - public static final ON200 INSTANCE = new ON200(); - - @Override - protected void before() { - AbstractSpan webSpan = ContextManager.createSpan("/web/serviceA"); - Tags.COMPONENT.set(webSpan, "Tomcat"); - Tags.URL.set(webSpan, "http://10.21.9.35/web/serviceA"); - Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); - webSpan.setPeerHost("10.21.9.35"); - webSpan.setPort(80); - Tags.SPAN_LAYER.asHttp(webSpan); - } - - @Override - protected void after() { - AbstractSpan webSpan = ContextManager.activeSpan(); - Tags.STATUS_CODE.set(webSpan, 200); - ContextManager.stopSpan(); - } - } - - public static class ON404 extends SpanGeneration { - public static final ON404 INSTANCE = new ON404(); - - @Override - protected void before() { - AbstractSpan webSpan = ContextManager.createSpan("/web/service/unknown"); - Tags.COMPONENT.set(webSpan, "Tomcat"); - Tags.URL.set(webSpan, "http://10.21.9.35/web/unknown"); - Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); - webSpan.setPeerHost("10.21.9.35"); - webSpan.setPort(80); - Tags.SPAN_LAYER.asHttp(webSpan); - } - - @Override - protected void after() { - AbstractSpan webSpan = ContextManager.activeSpan(); - Tags.STATUS_CODE.set(webSpan, 404); - Tags.ERROR.set(webSpan, true); - ContextManager.stopSpan(); - } - } - - public static class ON500 extends SpanGeneration { - public static final ON500 INSTANCE = new ON500(); - - @Override - protected void before() { - AbstractSpan webSpan = ContextManager.createSpan("/web/error/service"); - Tags.COMPONENT.set(webSpan, "Tomcat"); - Tags.URL.set(webSpan, "http://10.21.9.35/web/error/service"); - Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); - webSpan.setPeerHost("10.21.9.35"); - webSpan.setPort(80); - Tags.SPAN_LAYER.asHttp(webSpan); - } - - @Override - protected void after() { - AbstractSpan webSpan = ContextManager.activeSpan(); - Tags.STATUS_CODE.set(webSpan, 500); - Tags.ERROR.set(webSpan, true); - webSpan.log(new NumberFormatException("Can't convert 'abc' to int.")); - ContextManager.stopSpan(); - } - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/DubboServerMysqlTraceBuilder.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/DubboServerMysqlTraceBuilder.java deleted file mode 100644 index 7f4e1872f0d8891d249baa02bc318cfb347b7a86..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/DubboServerMysqlTraceBuilder.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.builders.trace; - -import org.skywalking.apm.sniffer.mock.context.MockTracingContextListener; -import org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder; -import org.skywalking.apm.sniffer.mock.trace.builders.span.DubboSpanGenerator; -import org.skywalking.apm.sniffer.mock.trace.builders.span.MySQLGenerator; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -/** - * @author wusheng - */ -public enum DubboServerMysqlTraceBuilder implements TraceSegmentBuilder { - INSTANCE; - - @Override - public TraceSegment build(MockTracingContextListener listener) { - DubboSpanGenerator.Server rootSpan = new DubboSpanGenerator.Server(); - rootSpan.build(new MySQLGenerator.Query()); - rootSpan.generate(); - return listener.getFinished(0); - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat200TraceBuilder.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat200TraceBuilder.java deleted file mode 100644 index 29fa656d09715035171b9860829ec30ea27b90d8..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat200TraceBuilder.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.builders.trace; - -import org.skywalking.apm.sniffer.mock.context.MockTracingContextListener; -import org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder; -import org.skywalking.apm.sniffer.mock.trace.builders.span.TomcatSpanGenerator; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -/** - * A Trace contains only one span, which represent a tomcat server side span. - *

- * Created by wusheng on 2017/2/20. - */ -public enum SingleTomcat200TraceBuilder implements TraceSegmentBuilder { - INSTANCE; - - @Override - public TraceSegment build(MockTracingContextListener listener) { - TomcatSpanGenerator.ON200.INSTANCE.generate(); - return listener.getFinished(0); - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat404TraceBuilder.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat404TraceBuilder.java deleted file mode 100644 index 76f9fc5275fbccd042f2a11a86db1070953ce01d..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat404TraceBuilder.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.builders.trace; - -import org.skywalking.apm.sniffer.mock.context.MockTracingContextListener; -import org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder; -import org.skywalking.apm.sniffer.mock.trace.builders.span.TomcatSpanGenerator; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -/** - * A Trace contains only one span, which represent a tomcat server side span. - *

- * Created by wusheng on 2017/2/20. - */ -public enum SingleTomcat404TraceBuilder implements TraceSegmentBuilder { - INSTANCE; - - @Override - public TraceSegment build(MockTracingContextListener listener) { - TomcatSpanGenerator.ON404.INSTANCE.generate(); - return listener.getFinished(0); - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat500TraceBuilder.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat500TraceBuilder.java deleted file mode 100644 index b1ac8ed174b8c1deb550ccaf3fc6c7b7be46fe00..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat500TraceBuilder.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.builders.trace; - -import org.skywalking.apm.sniffer.mock.context.MockTracingContextListener; -import org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder; -import org.skywalking.apm.sniffer.mock.trace.builders.span.TomcatSpanGenerator; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -/** - * A Trace contains only one span, which represent a tomcat server side span. - *

- * Created by wusheng on 2017/2/20. - */ -public enum SingleTomcat500TraceBuilder implements TraceSegmentBuilder { - INSTANCE; - - @Override - public TraceSegment build(MockTracingContextListener listener) { - TomcatSpanGenerator.ON500.INSTANCE.generate(); - return listener.getFinished(0); - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/TomcatDubboClientTraceBuilder.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/TomcatDubboClientTraceBuilder.java deleted file mode 100644 index 6fbe943f1f1f27cb1e588d38d142c1209318d19a..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/TomcatDubboClientTraceBuilder.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.builders.trace; - -import org.skywalking.apm.sniffer.mock.context.MockTracingContextListener; -import org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder; -import org.skywalking.apm.sniffer.mock.trace.builders.span.DubboSpanGenerator; -import org.skywalking.apm.sniffer.mock.trace.builders.span.TomcatSpanGenerator; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -/** - * A Trace segment contains two spans with ChildOf relations, - * the parent is a Tomcat span, - * the child is a Dubbo discovery span. - * - * @author wusheng - */ -public enum TomcatDubboClientTraceBuilder implements TraceSegmentBuilder { - INSTANCE; - - @Override - public TraceSegment build(MockTracingContextListener listener) { - TomcatSpanGenerator.ON200 rootSpan = new TomcatSpanGenerator.ON200(); - rootSpan.build(new DubboSpanGenerator.Client()); - rootSpan.generate(); - return listener.getFinished(0); - } -} diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/StringTagReader.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/StringTagReader.java deleted file mode 100644 index 91b2b18dc77bb68df35362cd8f38ed356704ee3a..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/StringTagReader.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.skywalking.apm.sniffer.mock.trace.tags; - -import java.lang.reflect.Field; -import java.util.List; -import org.skywalking.apm.agent.core.context.tag.StringTag; - -/** - * @author wusheng - */ -public class StringTagReader { - public static String get(Span span, StringTag tag) { - List tagsWithStrList = null; - try { - Field tagsWithStr = Span.class.getDeclaredField("tagsWithStr"); - tagsWithStr.setAccessible(true); - tagsWithStrList = (List)tagsWithStr.get(span); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } - - for (StringTagItem item : tagsWithStrList) { - if (tag.key().equals(item.getKey())) { - return item.getValue(); - } - } - return null; - } - -} diff --git a/apm-sniffer/apm-sniffer-mock/src/test/java/org/skywalking/apm/sniffer/mock/MockTracingContextListenerTestCase.java b/apm-sniffer/apm-sniffer-mock/src/test/java/org/skywalking/apm/sniffer/mock/MockTracingContextListenerTestCase.java deleted file mode 100644 index 527d3f8faeb32076cfd50607a552fb5e9f5e4890..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-sniffer-mock/src/test/java/org/skywalking/apm/sniffer/mock/MockTracingContextListenerTestCase.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.skywalking.apm.sniffer.mock; - -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.skywalking.apm.agent.core.boot.ServiceManager; -import org.skywalking.apm.sniffer.mock.context.MockTracingContextListener; -import org.skywalking.apm.sniffer.mock.context.SegmentAssert; -import org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilderFactory; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; - -/** - * Created by wusheng on 2017/2/21. - */ -public class MockTracingContextListenerTestCase { - @BeforeClass - public static void setup() { - ServiceManager.INSTANCE.boot(); - } - - @Test - public void testAfterFinished() { - MockTracingContextListener listener = new MockTracingContextListener(); - listener.afterFinished(TraceSegmentBuilderFactory.INSTANCE.singleTomcat200Trace()); - - Assert.assertNotNull(listener.getFinished(0)); - } - - @Test(expected = AssertionError.class) - public void testAssertSize() { - MockTracingContextListener listener = new MockTracingContextListener(); - listener.afterFinished(TraceSegmentBuilderFactory.INSTANCE.singleTomcat404Trace()); - - listener.assertSize(0); - } - - @Test - public void testAssertTraceSegment() { - MockTracingContextListener listener = new MockTracingContextListener(); - listener.afterFinished(TraceSegmentBuilderFactory.INSTANCE.singleTomcat404Trace()); - listener.afterFinished(TraceSegmentBuilderFactory.INSTANCE.singleTomcat500Trace()); - - listener.assertTraceSegment(0, new SegmentAssert() { - @Override - public void call(TraceSegment finishedSegment) { - Assert.assertNotNull(finishedSegment); - } - }); - } - - @Test(expected = AssertionError.class) - public void testClear() { - MockTracingContextListener listener = new MockTracingContextListener(); - listener.afterFinished(TraceSegmentBuilderFactory.INSTANCE.singleTomcat404Trace()); - listener.afterFinished(TraceSegmentBuilderFactory.INSTANCE.singleTomcat500Trace()); - - listener.clear(); - listener.assertValidIndex(0); - } - - @Test - public void testTraceOf_Tomcat_DubboClient() { - TraceSegment segment = TraceSegmentBuilderFactory.INSTANCE.traceOf_Tomcat_DubboClient(); - - Assert.assertEquals(2, segment.getSpans().size()); - } - - @Test - public void testTraceOf_DubboServer_MySQL() { - TraceSegment segment = TraceSegmentBuilderFactory.INSTANCE.traceOf_DubboServer_MySQL(); - - Assert.assertEquals(2, segment.getSpans().size()); - } -} diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/PrintTraceIdInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/PrintTraceIdInterceptor.java index ba31754c87f0ccedf847bb69a1db5ebe391240e8..ea5693c31f017f7b7b1a934d61ccac7ef88fd224 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/PrintTraceIdInterceptor.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/PrintTraceIdInterceptor.java @@ -1,6 +1,7 @@ package org.skywalking.apm.toolkit.activation.log.log4j.v1.x; import org.skywalking.apm.agent.core.context.ContextManager; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; @@ -8,29 +9,19 @@ import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptR * Created by wusheng on 2016/12/7. */ public class PrintTraceIdInterceptor implements InstanceMethodsAroundInterceptor { - @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - MethodInterceptResult result) { + + @Override public void beforeMethod(EnhancedInstance objInst, String methodName, Object[] allArguments, + Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { } - /** - * Override org.skywalking.apm.toolkit.log.log4j.v1.x.TraceIdPatternConverter.convert(), - * - * @param context instance context, a class instance only has one {@link EnhancedClassInstanceContext} instance. - * @param interceptorContext method context, includes class name, method name, etc. - * @param ret the method's original return value. - * @return the traceId - */ - @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - Object ret) { + @Override public Object afterMethod(EnhancedInstance objInst, String methodName, Object[] allArguments, + Class[] argumentsTypes, Object ret) throws Throwable { return "TID:" + ContextManager.getGlobalTraceId(); } - @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext) { + @Override public void handleMethodException(EnhancedInstance objInst, String methodName, Object[] allArguments, + Class[] argumentsTypes, Throwable t) { } } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/TraceIdPatternConverterActivation.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/TraceIdPatternConverterActivation.java index d65ba170029bb0aaea6de3e1e52b2328c6be6894..44ac68d9b3095291b1c734a31cc52e2aeeaf5e18 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/TraceIdPatternConverterActivation.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/TraceIdPatternConverterActivation.java @@ -50,6 +50,10 @@ public class TraceIdPatternConverterActivation extends ClassInstanceMethodsEnhan public String getMethodsInterceptor() { return "org.skywalking.apm.toolkit.activation.log.log4j.v1.x.PrintTraceIdInterceptor"; } + + @Override public boolean isOverrideArgs() { + return false; + } } }; } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/Log4j2OutputAppenderActivation.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/Log4j2OutputAppenderActivation.java index e0f3cb1b0f7f3f63008a8ac2181cf304d47306a7..87a625252fbd8e8920217b35e1aeddb6056a30cf 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/Log4j2OutputAppenderActivation.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/Log4j2OutputAppenderActivation.java @@ -41,6 +41,10 @@ public class Log4j2OutputAppenderActivation extends ClassStaticMethodsEnhancePlu public String getMethodsInterceptor() { return "org.skywalking.apm.toolkit.activation.log.log4j.v2.x.PrintTraceIdInterceptor"; } + + @Override public boolean isOverrideArgs() { + return false; + } } }; } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/PrintTraceIdInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/PrintTraceIdInterceptor.java index 33d617acabc44019bc02396d050585e900cbdef5..a17c6b92976ea5e78b5cb9f973f2bce077f5224b 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/PrintTraceIdInterceptor.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/PrintTraceIdInterceptor.java @@ -11,24 +11,25 @@ public class PrintTraceIdInterceptor implements StaticMethodsAroundInterceptor { /** * Override org.skywalking.apm.toolkit.log.log4j.v2.x.Log4j2OutputAppender.append(), * - * @param interceptorContext method context, includes class name, method name, etc. - * @param result change this result, to output the traceId. The origin append() method will not invoke. + * @param result change this result, to output the traceId. The origin append() method will not invoke. */ - @Override - public void beforeMethod(StaticMethodInvokeContext interceptorContext, MethodInterceptResult result) { - ((StringBuilder) interceptorContext.allArguments()[0]).append("TID:" + ContextManager.getGlobalTraceId()); + @Override public void beforeMethod(Class clazz, String methodName, Object[] allArguments, Class[] parameterTypes, + MethodInterceptResult result) { + ((StringBuilder)allArguments[0]).append("TID:" + ContextManager.getGlobalTraceId()); //make sure origin method do not invoke. result.defineReturnValue(null); } @Override - public Object afterMethod(StaticMethodInvokeContext interceptorContext, Object ret) { + public Object afterMethod(Class clazz, String methodName, Object[] allArguments, Class[] parameterTypes, + Object ret) { return null; } @Override - public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext) { + public void handleMethodException(Class clazz, String methodName, Object[] allArguments, Class[] parameterTypes, + Throwable t) { } } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/LogbackPatternConverterActivation.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/LogbackPatternConverterActivation.java index dc52023d0ba43fc20bad2c69239787f9da8c0bd3..fb43918f8082563290bd1368bec33488ee04660c 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/LogbackPatternConverterActivation.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/LogbackPatternConverterActivation.java @@ -51,6 +51,10 @@ public class LogbackPatternConverterActivation extends ClassInstanceMethodsEnhan public String getMethodsInterceptor() { return "org.skywalking.apm.toolkit.activation.log.logback.v1.x.PrintTraceIdInterceptor"; } + + @Override public boolean isOverrideArgs() { + return false; + } } }; } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/PrintTraceIdInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/PrintTraceIdInterceptor.java index 8eacfa26b3bebe280ffdeeaef3d33120af82b259..277f36248f8674f252b71148f7fcf769595faa5d 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/PrintTraceIdInterceptor.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/PrintTraceIdInterceptor.java @@ -1,6 +1,7 @@ package org.skywalking.apm.toolkit.activation.log.logback.v1.x; import org.skywalking.apm.agent.core.context.ContextManager; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; @@ -8,29 +9,19 @@ import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptR * Created by wusheng on 2016/12/7. */ public class PrintTraceIdInterceptor implements InstanceMethodsAroundInterceptor { - @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - MethodInterceptResult result) { + + @Override public void beforeMethod(EnhancedInstance objInst, String methodName, Object[] allArguments, + Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { } - /** - * Override org.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter.convert(), - * - * @param context instance context, a class instance only has one {@link EnhancedClassInstanceContext} instance. - * @param interceptorContext method context, includes class name, method name, etc. - * @param ret the method's original return value. - * @return the traceId - */ - @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - Object ret) { + @Override public Object afterMethod(EnhancedInstance objInst, String methodName, Object[] allArguments, + Class[] argumentsTypes, Object ret) throws Throwable { return "TID:" + ContextManager.getGlobalTraceId(); } - @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext) { + @Override public void handleMethodException(EnhancedInstance objInst, String methodName, Object[] allArguments, + Class[] argumentsTypes, Throwable t) { } } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/SkyWalkingSpanActivation.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/SkyWalkingSpanActivation.java deleted file mode 100644 index 9a9a1d28f1f41aae9bdfcdeb0ce6d7ee66912bb4..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/SkyWalkingSpanActivation.java +++ /dev/null @@ -1,78 +0,0 @@ -package org.skywalking.apm.toolkit.activation.opentracing.span; - -import net.bytebuddy.description.method.MethodDescription; -import net.bytebuddy.matcher.ElementMatcher; -import org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; -import org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; - -import java.util.Map; - -import static net.bytebuddy.matcher.ElementMatchers.named; -import static net.bytebuddy.matcher.ElementMatchers.takesArguments; - -/** - * Created by xin on 2017/1/16. - */ -public class SkyWalkingSpanActivation extends ClassInstanceMethodsEnhancePluginDefine { - @Override - protected String enhanceClassName() { - return "SkyWalkingSpan"; - } - - @Override - protected ConstructorInterceptPoint[] getConstructorsInterceptPoints() { - return new ConstructorInterceptPoint[] { - new ConstructorInterceptPoint() { - @Override - public ElementMatcher getConstructorMatcher() { - return takesArguments(String.class, long.class, Map.class); - } - - @Override - public String getConstructorInterceptor() { - return "SpanNewInstanceInterceptor"; - } - } - }; - } - - @Override - protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { - return new InstanceMethodsInterceptPoint[] { - new InstanceMethodsInterceptPoint() { - @Override - public ElementMatcher getMethodsMatcher() { - return named("setTag"); - } - - @Override - public String getMethodsInterceptor() { - return "org.skywalking.apm.toolkit.activation.opentracing.span.interceptor.SpanSetTagInterceptor"; - } - }, - new InstanceMethodsInterceptPoint() { - @Override - public ElementMatcher getMethodsMatcher() { - return named("setOperationName"); - } - - @Override - public String getMethodsInterceptor() { - return "org.skywalking.apm.toolkit.activation.opentracing.span.interceptor.SpanSetOperationNameInterceptor"; - } - }, - new InstanceMethodsInterceptPoint() { - @Override - public ElementMatcher getMethodsMatcher() { - return named("finish"); - } - - @Override - public String getMethodsInterceptor() { - return "org.skywalking.apm.toolkit.activation.opentracing.span.interceptor.SpanFinishInterceptor"; - } - } - }; - } -} diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanFinishInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanFinishInterceptor.java deleted file mode 100644 index c45fd842704c8377b4c06457f54f06db19019da5..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanFinishInterceptor.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.skywalking.apm.toolkit.activation.opentracing.span.interceptor; - -import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan; - -/** - * Intercept these following methods: - * {@link SkyWalkingSpan#finish()} - * {@link SkyWalkingSpan#finish(long)} - */ -public class SpanFinishInterceptor implements InstanceMethodsAroundInterceptor { - @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - MethodInterceptResult result) { - } - - @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - Object ret) { - Object[] allArguments = interceptorContext.allArguments(); - - if (allArguments.length == 1) { - ContextManager.stopSpan((Long) allArguments[0]); - } else { - ContextManager.stopSpan(); - } - - return ret; - } - - @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext) { - } -} diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanNewInstanceInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanNewInstanceInterceptor.java deleted file mode 100644 index 750dfd768c7258786faaaa00566f41b8f2f36d7f..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanNewInstanceInterceptor.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.skywalking.apm.toolkit.activation.opentracing.span.interceptor; - -import java.util.Map; -import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.context.trace.AbstractSpan; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; -import org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan; - -/** - * Intercept {@link SkyWalkingSpan} constructor. - */ -public class SpanNewInstanceInterceptor implements InstanceConstructorInterceptor { - - @Override - public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) { - Object[] allArguments = interceptorContext.allArguments(); - String operationName = (String) allArguments[0]; - long startTime = (Long) allArguments[1]; - Map tags = (Map) allArguments[2]; - AbstractSpan span = ContextManager.createSpan(operationName, startTime); - - for (Map.Entry entry : tags.entrySet()) { - span.setTag(entry.getKey(), entry.getValue()); - } - } -} diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetOperationNameInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetOperationNameInterceptor.java deleted file mode 100644 index 133af4f0e5334ee6ee4697ae75e17e1860623757..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetOperationNameInterceptor.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.skywalking.apm.toolkit.activation.opentracing.span.interceptor; - -import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan; - -/** - * Intercept {@link SkyWalkingSpan#setOperationName(String)} - */ -public class SpanSetOperationNameInterceptor implements InstanceMethodsAroundInterceptor { - - @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - MethodInterceptResult result) { - String operationName = (String) interceptorContext.allArguments()[0]; - ContextManager.activeSpan().setOperationName(operationName); - } - - @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - Object ret) { - return ret; - } - - @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext) { - - } -} diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetTagInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetTagInterceptor.java deleted file mode 100644 index 098bb991f6d9a32bac85b490583b0e582c789771..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetTagInterceptor.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.skywalking.apm.toolkit.activation.opentracing.span.interceptor; - -import io.opentracing.tag.Tags; -import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan; - -/** - * Intercept these following methods: - * {@link SkyWalkingSpan#setTag(String, boolean)} - * {@link SkyWalkingSpan#setTag(String, Number)} - * {@link SkyWalkingSpan#setTag(String, String)} - */ -public class SpanSetTagInterceptor implements InstanceMethodsAroundInterceptor { - - /** - * key of {@link org.skywalking.apm.trace.tag.Tags#PEER_HOST} - */ - private static final String KEY_OF_PEER_HOST_TAG = "peer.host"; - - @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - MethodInterceptResult result) { - String key = adaptTag((String) interceptorContext.allArguments()[0]); - Object value = interceptorContext.allArguments()[1]; - if (value instanceof String) - ContextManager.activeSpan().setTag(key, (String) value); - else if (value instanceof Boolean) - ContextManager.activeSpan().setTag(key, (Boolean) value); - else if (value instanceof Integer) - ContextManager.activeSpan().setTag(key, (Integer) value); - else if (value instanceof Short) - ContextManager.activeSpan().setTag(key, ((Short) value).intValue()); - else - ContextManager.activeSpan().setTag(key, value.toString()); - } - - /** - * Adapt {@link Tags} of open tracing. - * - * @return tag key - */ - private String adaptTag(String tagKey) { - String key = tagKey; - - if (isPeerTag(key)) { - key = KEY_OF_PEER_HOST_TAG; - } - - return key; - } - - /** - * Check whether current tag is one of {@link Tags#PEER_HOSTNAME}, {@link Tags#PEER_HOST_IPV4} and {@link Tags#PEER_HOST_IPV6}. - * If yes, will use the {@link org.skywalking.apm.trace.tag.Tags#PEER_HOST} as the key, instead of original key, - * in {@link #adaptTag(String)}. - * - * @param key of current tag - * @return true if this tag is host related. - */ - private boolean isPeerTag(String key) { - return Tags.PEER_HOST_IPV4.equals(key) || Tags.PEER_HOST_IPV6.equals(key) || Tags.PEER_HOSTNAME.equals(key); - } - - @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - Object ret) { - return ret; - } - - @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext) { - - } -} diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkyWalkingTracerActivation.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkyWalkingTracerActivation.java deleted file mode 100644 index 91379b1c0678d75b9bda91dac405cc9b5a209793..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkyWalkingTracerActivation.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.skywalking.apm.toolkit.activation.opentracing.tracer; - -import net.bytebuddy.description.method.MethodDescription; -import net.bytebuddy.matcher.ElementMatcher; -import org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; -import org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; - -import static net.bytebuddy.matcher.ElementMatchers.named; - -/** - * @author wusheng - */ -public class SkyWalkingTracerActivation extends ClassInstanceMethodsEnhancePluginDefine { - @Override - protected String enhanceClassName() { - return "SkyWalkingTracer"; - } - - @Override - protected ConstructorInterceptPoint[] getConstructorsInterceptPoints() { - return null; - } - - @Override - protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { - return new InstanceMethodsInterceptPoint[] { - new InstanceMethodsInterceptPoint() { - @Override - public ElementMatcher getMethodsMatcher() { - return named("formatInjectCrossProcessPropagationContextData"); - } - - @Override - public String getMethodsInterceptor() { - return "TracerInjectFormatCrossProcessContextInterceptor"; - } - }, - new InstanceMethodsInterceptPoint() { - @Override - public ElementMatcher getMethodsMatcher() { - return named("formatExtractCrossProcessPropagationContextData"); - } - - @Override - public String getMethodsInterceptor() { - return "TracerExtractCrossProcessContextInterceptor"; - } - } - }; - } -} diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerExtractCrossProcessContextInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerExtractCrossProcessContextInterceptor.java deleted file mode 100644 index 6e6fbdf3293885429279567915750eaf0872c02a..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerExtractCrossProcessContextInterceptor.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.skywalking.apm.toolkit.activation.opentracing.tracer.interceptor; - -import org.skywalking.apm.agent.core.context.ContextCarrier; -import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.toolkit.opentracing.SkyWalkingTracer; - -/** - * Intercept {@link SkyWalkingTracer#formatExtractCrossProcessPropagationContextData(String)} - */ -public class TracerExtractCrossProcessContextInterceptor implements InstanceMethodsAroundInterceptor { - @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - MethodInterceptResult result) { - - } - - @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - Object ret) { - String contextDataStr = (String) interceptorContext.allArguments()[0]; - - ContextCarrier carrier = new ContextCarrier(); - carrier.deserialize(contextDataStr); - - ContextManager.extract(carrier); - return ret; - } - - @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext) { - - } -} diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerInjectFormatCrossProcessContextInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerInjectFormatCrossProcessContextInterceptor.java deleted file mode 100644 index 851293752cdaa447fb4bf52f18518d5b869d76c9..0000000000000000000000000000000000000000 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerInjectFormatCrossProcessContextInterceptor.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.skywalking.apm.toolkit.activation.opentracing.tracer.interceptor; - -import org.skywalking.apm.agent.core.context.ContextCarrier; -import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; -import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.toolkit.opentracing.SkyWalkingTracer; - -/** - * Intercept {@link SkyWalkingTracer#formatInjectCrossProcessPropagationContextData()} - */ -public class TracerInjectFormatCrossProcessContextInterceptor implements InstanceMethodsAroundInterceptor { - @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - MethodInterceptResult result) { - - } - - @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - Object ret) { - ContextCarrier carrier = new ContextCarrier(); - ContextManager.inject(carrier); - return carrier.serialize(); - } - - @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext) { - - } -} diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextActivation.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextActivation.java index 532e242fcf4df3d7bf42b41a454d5438ed5b8608..b4e355c5b070a8065bb21cc0fa97aa4e267924eb 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextActivation.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextActivation.java @@ -41,6 +41,10 @@ public class TraceContextActivation extends ClassStaticMethodsEnhancePluginDefin public String getMethodsInterceptor() { return "org.skywalking.apm.toolkit.activation.trace.TraceContextInterceptor"; } + + @Override public boolean isOverrideArgs() { + return false; + } } }; } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextInterceptor.java index ef2adddc76b9141f6f5b17ba9c63b0f182eec85c..4b09076633f1b2d960c7defe0e8d699677f485d4 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextInterceptor.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextInterceptor.java @@ -6,25 +6,24 @@ import org.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodsAro import org.skywalking.apm.logging.ILog; import org.skywalking.apm.logging.LogManager; -/** - * Created by xin on 2016/12/15. - */ public class TraceContextInterceptor implements StaticMethodsAroundInterceptor { private ILog logger = LogManager.getLogger(TraceContextInterceptor.class); - @Override - public void beforeMethod(StaticMethodInvokeContext interceptorContext, MethodInterceptResult result) { + @Override public void beforeMethod(Class clazz, String methodName, Object[] allArguments, Class[] parameterTypes, + MethodInterceptResult result) { } @Override - public Object afterMethod(StaticMethodInvokeContext interceptorContext, Object ret) { + public Object afterMethod(Class clazz, String methodName, Object[] allArguments, Class[] parameterTypes, + Object ret) { return ContextManager.getGlobalTraceId(); } @Override - public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext) { + public void handleMethodException(Class clazz, String methodName, Object[] allArguments, Class[] parameterTypes, + Throwable t) { logger.error("Failed to get trace Id.", t); } } diff --git a/apm-sniffer/pom.xml b/apm-sniffer/pom.xml index ae18815fc3302df707aca37c260ba7b8ec37f5b0..967e7cf17aba4f08c87e4ebafb4057b0abef1f77 100644 --- a/apm-sniffer/pom.xml +++ b/apm-sniffer/pom.xml @@ -17,7 +17,6 @@ apm-agent-core apm-sdk-plugin apm-toolkit-activation - apm-sniffer-mock