fix issue that project cycle dependency
This commit is contained in:
parent
408d57095a
commit
f81a66bfd3
|
|
@ -77,12 +77,6 @@
|
|||
<version>${jetty.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.skywalking</groupId>
|
||||
<artifactId>apm-test-tools</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<extensions>
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public class TraceSegmentRef {
|
|||
|
||||
public TraceSegmentReference transform() {
|
||||
TraceSegmentReference.Builder refBuilder = TraceSegmentReference.newBuilder();
|
||||
if(SegmentRefType.CROSS_PROCESS.equals(type)) {
|
||||
if (SegmentRefType.CROSS_PROCESS.equals(type)) {
|
||||
refBuilder.setRefType(RefType.CrossProcess);
|
||||
refBuilder.setParentApplicationInstanceId(applicationInstanceId);
|
||||
if (peerId == DictionaryUtil.nullValue()) {
|
||||
|
|
@ -82,7 +82,7 @@ public class TraceSegmentRef {
|
|||
} else {
|
||||
refBuilder.setEntryServiceId(operationId);
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
refBuilder.setRefType(RefType.CrossThread);
|
||||
}
|
||||
refBuilder.setParentTraceSegmentId(traceSegmentId);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
package org.skywalking.apm.agent.core.context;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
|
|
@ -17,14 +15,13 @@ import org.skywalking.apm.agent.core.context.trace.LogDataEntity;
|
|||
import org.skywalking.apm.agent.core.context.trace.SpanLayer;
|
||||
import org.skywalking.apm.agent.core.context.trace.TraceSegment;
|
||||
import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef;
|
||||
import org.skywalking.apm.agent.core.context.util.AbstractTracingSpanHelper;
|
||||
import org.skywalking.apm.agent.core.context.util.SegmentHelper;
|
||||
import org.skywalking.apm.agent.core.context.util.SegmentStorage;
|
||||
import org.skywalking.apm.agent.core.context.util.SegmentStoragePoint;
|
||||
import org.skywalking.apm.agent.core.context.util.TraceSegmentRefHelper;
|
||||
import org.skywalking.apm.agent.core.context.util.TracingSegmentRunner;
|
||||
import org.skywalking.apm.agent.core.dictionary.DictionaryUtil;
|
||||
import org.skywalking.apm.agent.core.dictionary.OperationNameDictionary;
|
||||
import org.skywalking.apm.agent.test.helper.AbstractTracingSpanHelper;
|
||||
import org.skywalking.apm.agent.test.helper.SegmentHelper;
|
||||
import org.skywalking.apm.agent.test.helper.TraceSegmentRefHelper;
|
||||
import org.skywalking.apm.agent.test.tools.SegmentStorage;
|
||||
import org.skywalking.apm.agent.test.tools.SegmentStoragePoint;
|
||||
import org.skywalking.apm.agent.test.tools.TracingSegmentRunner;
|
||||
import org.skywalking.apm.network.trace.component.ComponentsDefine;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
|
|
@ -128,7 +125,6 @@ public class ContextManagerTest {
|
|||
|
||||
assertThat(injectContextCarrier.getSpanId(), is(1));
|
||||
assertThat(injectContextCarrier.getEntryOperationName(), is("#/portal/"));
|
||||
assertThat(injectContextCarrier.getApplicationId(), is(1));
|
||||
assertThat(injectContextCarrier.getPeerHost(), is("#127.0.0.1:12800"));
|
||||
}
|
||||
|
||||
|
|
@ -175,12 +171,10 @@ public class ContextManagerTest {
|
|||
assertThat(AbstractTracingSpanHelper.getParentSpanId(actualEntrySpan), is(-1));
|
||||
|
||||
assertThat(firstExitSpanContextCarrier.getPeerHost(), is("#127.0.0.1:8080"));
|
||||
assertThat(firstExitSpanContextCarrier.getApplicationId(), is(1));
|
||||
assertThat(firstExitSpanContextCarrier.getSpanId(), is(1));
|
||||
assertThat(firstExitSpanContextCarrier.getEntryOperationName(), is("#/testEntrySpan"));
|
||||
|
||||
assertThat(secondExitSpanContextCarrier.getPeerHost(), is("#127.0.0.1:8080"));
|
||||
assertThat(secondExitSpanContextCarrier.getApplicationId(), is(1));
|
||||
assertThat(secondExitSpanContextCarrier.getSpanId(), is(1));
|
||||
assertThat(secondExitSpanContextCarrier.getEntryOperationName(), is("#/testEntrySpan"));
|
||||
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ import org.skywalking.apm.agent.core.conf.Config;
|
|||
import org.skywalking.apm.agent.core.conf.RemoteDownstreamConfig;
|
||||
import org.skywalking.apm.agent.core.context.trace.AbstractSpan;
|
||||
import org.skywalking.apm.agent.core.context.trace.NoopSpan;
|
||||
import org.skywalking.apm.agent.test.tools.SegmentStorage;
|
||||
import org.skywalking.apm.agent.test.tools.SegmentStoragePoint;
|
||||
import org.skywalking.apm.agent.test.tools.TracingSegmentRunner;
|
||||
import org.skywalking.apm.agent.core.context.util.SegmentStorage;
|
||||
import org.skywalking.apm.agent.core.context.util.SegmentStoragePoint;
|
||||
import org.skywalking.apm.agent.core.context.util.TracingSegmentRunner;
|
||||
|
||||
import static junit.framework.TestCase.assertNull;
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package org.skywalking.apm.agent.core.context.util;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan;
|
||||
import org.skywalking.apm.agent.core.context.trace.LogDataEntity;
|
||||
|
||||
public class AbstractTracingSpanHelper {
|
||||
public static int getParentSpanId(AbstractTracingSpan tracingSpan) {
|
||||
try {
|
||||
return FieldGetter.getParentFieldValue(tracingSpan, "parentSpanId");
|
||||
} catch (Exception e) {
|
||||
}
|
||||
|
||||
return -9999;
|
||||
}
|
||||
|
||||
public static List<LogDataEntity> getLogs(AbstractTracingSpan tracingSpan) {
|
||||
try {
|
||||
return FieldGetter.getParentFieldValue(tracingSpan, "logs");
|
||||
} catch (Exception e) {
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package org.skywalking.apm.agent.core.context.util;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
public class FieldGetter {
|
||||
public static <T> T getValue(Object instance,
|
||||
String fieldName) throws IllegalAccessException, NoSuchFieldException {
|
||||
Field field = instance.getClass().getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
return (T)field.get(instance);
|
||||
}
|
||||
|
||||
public static <T> T getParentFieldValue(Object instance,
|
||||
String fieldName) throws IllegalAccessException, NoSuchFieldException {
|
||||
Field field = instance.getClass().getSuperclass().getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
return (T)field.get(instance);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package org.skywalking.apm.agent.core.context.util;
|
||||
|
||||
import java.util.List;
|
||||
import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan;
|
||||
import org.skywalking.apm.agent.core.context.trace.TraceSegment;
|
||||
|
||||
public class SegmentHelper {
|
||||
|
||||
public static List<AbstractTracingSpan> getSpan(TraceSegment traceSegment) {
|
||||
try {
|
||||
return FieldGetter.getValue(traceSegment, "spans");
|
||||
} catch (Exception e) {
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package org.skywalking.apm.agent.core.context.util;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import org.skywalking.apm.agent.core.context.IgnoredTracerContext;
|
||||
import org.skywalking.apm.agent.core.context.trace.TraceSegment;
|
||||
|
||||
public class SegmentStorage {
|
||||
private LinkedList<TraceSegment> traceSegments;
|
||||
private LinkedList<IgnoredTracerContext> ignoredTracerContexts;
|
||||
|
||||
SegmentStorage() {
|
||||
traceSegments = new LinkedList<TraceSegment>();
|
||||
ignoredTracerContexts = new LinkedList<IgnoredTracerContext>();
|
||||
}
|
||||
|
||||
void addTraceSegment(TraceSegment segment) {
|
||||
traceSegments.add(segment);
|
||||
}
|
||||
|
||||
public List<TraceSegment> getTraceSegments() {
|
||||
return traceSegments;
|
||||
}
|
||||
|
||||
void addIgnoreTraceContext(IgnoredTracerContext context) {
|
||||
this.ignoredTracerContexts.add(context);
|
||||
}
|
||||
|
||||
public LinkedList<IgnoredTracerContext> getIgnoredTracerContexts() {
|
||||
return ignoredTracerContexts;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package org.skywalking.apm.agent.core.context.util;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface SegmentStoragePoint {
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package org.skywalking.apm.agent.core.context.util;
|
||||
|
||||
import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef;
|
||||
|
||||
public class TraceSegmentRefHelper {
|
||||
public static String getPeerHost(TraceSegmentRef ref) {
|
||||
try {
|
||||
return FieldGetter.getValue(ref, "peerHost");
|
||||
} catch (Exception e) {
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
package org.skywalking.apm.agent.core.context.util;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import org.junit.runner.Description;
|
||||
import org.junit.runner.notification.Failure;
|
||||
import org.junit.runner.notification.RunNotifier;
|
||||
import org.junit.runners.BlockJUnit4ClassRunner;
|
||||
import org.junit.runners.model.InitializationError;
|
||||
import org.skywalking.apm.agent.core.context.IgnoreTracerContextListener;
|
||||
import org.skywalking.apm.agent.core.context.IgnoredTracerContext;
|
||||
import org.skywalking.apm.agent.core.context.TracingContext;
|
||||
import org.skywalking.apm.agent.core.context.TracingContextListener;
|
||||
import org.skywalking.apm.agent.core.context.trace.TraceSegment;
|
||||
|
||||
public class TracingSegmentRunner extends BlockJUnit4ClassRunner {
|
||||
private TracingContextListener tracingContextListener;
|
||||
private IgnoreTracerContextListener ignoreTracerContextListener;
|
||||
private Field field;
|
||||
private Object targetObject;
|
||||
private SegmentStorage tracingData;
|
||||
|
||||
public TracingSegmentRunner(Class<?> klass) throws InitializationError {
|
||||
super(klass);
|
||||
for (Field field : klass.getDeclaredFields()) {
|
||||
if (field.isAnnotationPresent(SegmentStoragePoint.class) && field.getType().equals(SegmentStorage.class)) {
|
||||
this.field = field;
|
||||
this.field.setAccessible(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object createTest() throws Exception {
|
||||
targetObject = super.createTest();
|
||||
return targetObject;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(RunNotifier notifier) {
|
||||
notifier.addListener(new RunListener());
|
||||
super.run(notifier);
|
||||
}
|
||||
|
||||
class RunListener extends org.junit.runner.notification.RunListener {
|
||||
@Override
|
||||
public void testStarted(Description description) throws Exception {
|
||||
if (field != null) {
|
||||
try {
|
||||
tracingData = new SegmentStorage();
|
||||
field.set(targetObject, tracingData);
|
||||
} catch (IllegalAccessException e) {
|
||||
}
|
||||
}
|
||||
tracingContextListener = new TracingContextListener() {
|
||||
@Override
|
||||
public void afterFinished(TraceSegment traceSegment) {
|
||||
tracingData.addTraceSegment(traceSegment);
|
||||
}
|
||||
};
|
||||
|
||||
ignoreTracerContextListener = new IgnoreTracerContextListener() {
|
||||
@Override
|
||||
public void afterFinished(IgnoredTracerContext tracerContext) {
|
||||
tracingData.addIgnoreTraceContext(tracerContext);
|
||||
}
|
||||
};
|
||||
TracingContext.ListenerManager.add(tracingContextListener);
|
||||
IgnoredTracerContext.ListenerManager.add(ignoreTracerContextListener);
|
||||
super.testStarted(description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testFinished(Description description) throws Exception {
|
||||
super.testFinished(description);
|
||||
TracingContext.ListenerManager.remove(tracingContextListener);
|
||||
IgnoredTracerContext.ListenerManager.remove(ignoreTracerContextListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testFailure(Failure failure) throws Exception {
|
||||
super.testFailure(failure);
|
||||
TracingContext.ListenerManager.remove(tracingContextListener);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,7 +4,6 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan;
|
||||
import org.skywalking.apm.agent.core.context.trace.LogDataEntity;
|
||||
import org.skywalking.apm.agent.core.context.util.KeyValuePair;
|
||||
|
||||
public class AbstractTracingSpanHelper {
|
||||
public static int getParentSpanId(AbstractTracingSpan tracingSpan) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue