Search in sources :

Example 41 with Subsegment

use of com.amazonaws.xray.entities.Subsegment in project aws-xray-sdk-java by aws.

the class AWSXRayRecorderTest method testSetTraceEntityInjectsCurrentSubsegment.

@Test
public void testSetTraceEntityInjectsCurrentSubsegment() throws Exception {
    AWSXRay.beginSegment("test");
    Subsegment subsegment = AWSXRay.beginSubsegment("test");
    threadExecutor.submit(() -> {
        AWSXRay.setTraceEntity(subsegment);
        Assert.assertEquals(subsegment, AWSXRay.getThreadLocal());
    }).get();
    AWSXRay.endSubsegment();
    AWSXRay.endSegment();
}
Also used : Subsegment(com.amazonaws.xray.entities.Subsegment) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 42 with Subsegment

use of com.amazonaws.xray.entities.Subsegment in project aws-xray-sdk-java by aws.

the class DefaultStreamingStrategy method stream.

private boolean stream(Entity entity, Emitter emitter) {
    List<Subsegment> children = entity.getSubsegmentsCopy();
    List<Subsegment> streamable = new ArrayList<>();
    // Gather children and in the condition they are ready to stream, add them to the streamable list.
    if (children.size() > 0) {
        for (Subsegment child : children) {
            if (stream(child, emitter)) {
                streamable.add(child);
            }
        }
    }
    // A subsegment is marked streamable if all of its children are streamable and the entity itself is not in progress.
    if (children.size() == streamable.size() && !entity.isInProgress()) {
        return true;
    }
    // Stream the subtrees that are ready.
    for (Subsegment child : streamable) {
        emitter.sendSubsegment(child);
        entity.removeSubsegment(child);
    }
    return false;
}
Also used : ArrayList(java.util.ArrayList) Subsegment(com.amazonaws.xray.entities.Subsegment)

Example 43 with Subsegment

use of com.amazonaws.xray.entities.Subsegment in project aws-xray-sdk-java by aws.

the class TracingStatementTest method assertSubsegment.

private void assertSubsegment() {
    Subsegment subsegment = AWSXRay.getCurrentSegment().getSubsegments().get(0);
    assertEquals(CATALOG + "@" + HOST, subsegment.getName());
    assertEquals(Namespace.REMOTE.toString(), subsegment.getNamespace());
    assertEquals(expectedSqlParams, subsegment.getSql());
}
Also used : Subsegment(com.amazonaws.xray.entities.Subsegment)

Example 44 with Subsegment

use of com.amazonaws.xray.entities.Subsegment in project aws-xray-sdk-java by aws.

the class LambdaSegmentContextTest method testLeakedSubsegmentsAreCleanedBetweenInvocations.

@Test
public void testLeakedSubsegmentsAreCleanedBetweenInvocations() {
    LambdaSegmentContext lsc = new LambdaSegmentContext();
    PowerMockito.stub(PowerMockito.method(LambdaSegmentContext.class, "getTraceHeaderFromEnvironment")).toReturn(TraceHeader.fromString(TRACE_HEADER));
    Subsegment firstInvocation = lsc.beginSubsegment(AWSXRay.getGlobalRecorder(), "test");
    Assert.assertNotNull(AWSXRay.getTraceEntity());
    PowerMockito.stub(PowerMockito.method(LambdaSegmentContext.class, "getTraceHeaderFromEnvironment")).toReturn(TraceHeader.fromString(TRACE_HEADER_2));
    Subsegment secondInvocation = lsc.beginSubsegment(AWSXRay.getGlobalRecorder(), "test");
    Assert.assertNotNull(AWSXRay.getTraceEntity());
    Assert.assertTrue(FacadeSegment.class.isInstance(firstInvocation.getParent()));
    Assert.assertTrue(FacadeSegment.class.isInstance(secondInvocation.getParent()));
}
Also used : Subsegment(com.amazonaws.xray.entities.Subsegment) FacadeSegment(com.amazonaws.xray.entities.FacadeSegment) Test(org.junit.Test) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest)

Example 45 with Subsegment

use of com.amazonaws.xray.entities.Subsegment in project aws-xray-sdk-java by aws.

the class SqlSubsegmentsTest method testCreateSubsegmentWithoutSql.

@Test
void testCreateSubsegmentWithoutSql() {
    expectedSqlParams = new HashMap<>();
    expectedSqlParams.put("url", URL);
    expectedSqlParams.put("user", USER);
    expectedSqlParams.put("driver_version", DRIVER_VERSION);
    expectedSqlParams.put("database_type", DB_TYPE);
    expectedSqlParams.put("database_version", DB_VERSION);
    Subsegment sub = SqlSubsegments.forQuery(connection, null);
    assertThat(sub.getName()).isEqualTo(CATALOG + "@" + HOST);
    assertThat(sub.getNamespace()).isEqualTo(Namespace.REMOTE.toString());
    assertThat(sub.getSql()).containsAllEntriesOf(expectedSqlParams);
}
Also used : Subsegment(com.amazonaws.xray.entities.Subsegment) Test(org.junit.jupiter.api.Test)

Aggregations

Subsegment (com.amazonaws.xray.entities.Subsegment)81 Test (org.junit.Test)35 Segment (com.amazonaws.xray.entities.Segment)31 SubsegmentImpl (com.amazonaws.xray.entities.SubsegmentImpl)14 Test (org.junit.jupiter.api.Test)13 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)13 FacadeSegment (com.amazonaws.xray.entities.FacadeSegment)10 SegmentImpl (com.amazonaws.xray.entities.SegmentImpl)10 TraceID (com.amazonaws.xray.entities.TraceID)10 Map (java.util.Map)10 Entity (com.amazonaws.xray.entities.Entity)9 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)9 CloseableHttpResponse (org.apache.http.client.methods.CloseableHttpResponse)7 Cause (com.amazonaws.xray.entities.Cause)6 TraceHeader (com.amazonaws.xray.entities.TraceHeader)5 SdkHttpClient (software.amazon.awssdk.http.SdkHttpClient)5 Emitter (com.amazonaws.xray.emitters.Emitter)4 SegmentListener (com.amazonaws.xray.listeners.SegmentListener)4 SdkAsyncHttpClient (software.amazon.awssdk.http.async.SdkAsyncHttpClient)4 LambdaAsyncClient (software.amazon.awssdk.services.lambda.LambdaAsyncClient)4