Simplify some tests by using runUnderTrace (#204)

This commit is contained in:
Trask Stalnaker 2020-03-05 09:50:41 -08:00 committed by GitHub
parent 725cebcd6b
commit f91549e799
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 114 additions and 184 deletions

View File

@ -23,6 +23,7 @@ import org.hibernate.ReplicationMode
import org.hibernate.Session
import spock.lang.Shared
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
import static io.opentelemetry.trace.Span.Kind.CLIENT
import static io.opentelemetry.trace.Span.Kind.INTERNAL
@ -532,9 +533,7 @@ class SessionTest extends AbstractHibernateTest {
def "test hibernate overlapping Sessions"() {
setup:
def rootSpan = TEST_TRACER.spanBuilder("overlapping Sessions").startSpan()
def scope = TEST_TRACER.withSpan(rootSpan)
runUnderTrace("overlapping Sessions") {
def session1 = sessionFactory.openSession()
session1.beginTransaction()
def session2 = sessionFactory.openStatelessSession()
@ -550,10 +549,7 @@ class SessionTest extends AbstractHibernateTest {
session1.getTransaction().commit()
session1.close()
session3.close()
rootSpan.end()
scope.close()
}
expect:
assertTraces(1) {

View File

@ -23,6 +23,7 @@ import org.hibernate.ReplicationMode
import org.hibernate.Session
import spock.lang.Shared
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
import static io.opentelemetry.trace.Span.Kind.CLIENT
import static io.opentelemetry.trace.Span.Kind.INTERNAL
@ -460,9 +461,7 @@ class SessionTest extends AbstractHibernateTest {
def "test hibernate overlapping Sessions"() {
setup:
def rootSpan = TEST_TRACER.spanBuilder("overlapping Sessions").startSpan()
def scope = TEST_TRACER.withSpan(rootSpan)
runUnderTrace("overlapping Sessions") {
def session1 = sessionFactory.openSession()
session1.beginTransaction()
def session2 = sessionFactory.openStatelessSession()
@ -478,10 +477,7 @@ class SessionTest extends AbstractHibernateTest {
session1.getTransaction().commit()
session1.close()
session3.close()
rootSpan.end()
scope.close()
}
expect:
assertTraces(1) {

View File

@ -27,6 +27,8 @@ import java.util.concurrent.RejectedExecutionException
import java.util.concurrent.ThreadPoolExecutor
import java.util.concurrent.TimeUnit
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
/**
* Test executor instrumentation for Akka specific classes.
* This is to large extent a copy of ExecutorInstrumentationTest.
@ -54,9 +56,7 @@ class AkkaExecutorInstrumentationTest extends AgentTestRunner {
new Runnable() {
@Override
void run() {
def parentSpan = TEST_TRACER.spanBuilder("parent").startSpan()
def parentScope = TEST_TRACER.withSpan(parentSpan)
try {
runUnderTrace("parent") {
// this child will have a span
def child1 = new AkkaAsyncChild()
// this child won't
@ -65,9 +65,6 @@ class AkkaExecutorInstrumentationTest extends AgentTestRunner {
m(pool, child2)
child1.waitForCompletion()
child2.waitForCompletion()
} finally {
parentSpan.end()
parentScope.close()
}
}
}.run()
@ -111,9 +108,7 @@ class AkkaExecutorInstrumentationTest extends AgentTestRunner {
new Runnable() {
@Override
void run() {
def parentSpan = TEST_TRACER.spanBuilder("parent").startSpan()
def parentScope = TEST_TRACER.withSpan(parentSpan)
try {
runUnderTrace("parent") {
try {
for (int i = 0; i < 20; ++i) {
// Our current instrumentation instrumentation does not behave very well
@ -140,9 +135,6 @@ class AkkaExecutorInstrumentationTest extends AgentTestRunner {
for (AkkaAsyncChild child : children) {
child.unblock()
}
} finally {
parentSpan.end()
parentScope.close()
}
}
}.run()

View File

@ -27,6 +27,8 @@ import java.util.concurrent.RejectedExecutionException
import java.util.concurrent.ThreadPoolExecutor
import java.util.concurrent.TimeUnit
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
/**
* Test executor instrumentation for Scala specific classes.
* This is to large extent a copy of ExecutorInstrumentationTest.
@ -54,9 +56,7 @@ class ScalaExecutorInstrumentationTest extends AgentTestRunner {
new Runnable() {
@Override
void run() {
def parentSpan = TEST_TRACER.spanBuilder("parent").startSpan()
def parentScope = TEST_TRACER.withSpan(parentSpan)
try {
runUnderTrace("parent") {
// this child will have a span
def child1 = new ScalaAsyncChild()
// this child won't
@ -65,9 +65,6 @@ class ScalaExecutorInstrumentationTest extends AgentTestRunner {
m(pool, child2)
child1.waitForCompletion()
child2.waitForCompletion()
} finally {
parentSpan.end()
parentScope.close()
}
}
}.run()
@ -111,9 +108,7 @@ class ScalaExecutorInstrumentationTest extends AgentTestRunner {
new Runnable() {
@Override
void run() {
def parentSpan = TEST_TRACER.spanBuilder("parent").startSpan()
def parentScope = TEST_TRACER.withSpan(parentSpan)
try {
runUnderTrace("parent") {
try {
for (int i = 0; i < 20; ++i) {
// Our current instrumentation instrumentation does not behave very well
@ -140,9 +135,6 @@ class ScalaExecutorInstrumentationTest extends AgentTestRunner {
for (ScalaAsyncChild child : children) {
child.unblock()
}
} finally {
parentSpan.end()
parentScope.close()
}
}
}.run()

View File

@ -23,6 +23,8 @@ import java.util.concurrent.TimeUnit
import java.util.function.Function
import java.util.function.Supplier
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
/**
* Note: ideally this should live with the rest of ExecutorInstrumentationTest,
* but this code needs java8 so we put it here for now.
@ -53,16 +55,11 @@ class CompletableFutureTest extends AgentTestRunner {
def result = new Supplier<String>() {
@Override
String get() {
def parentSpan = TEST_TRACER.spanBuilder("parent").startSpan()
def parentScope = TEST_TRACER.withSpan(parentSpan)
try {
runUnderTrace("parent") {
return CompletableFuture.supplyAsync(supplier, pool)
.thenCompose({ s -> CompletableFuture.supplyAsync(new AppendingSupplier(s), differentPool) })
.thenApply(function)
.get()
} finally {
parentSpan.end()
parentScope.close()
}
}
}.get()

View File

@ -37,6 +37,7 @@ import java.util.concurrent.ThreadPoolExecutor
import java.util.concurrent.TimeUnit
import java.util.concurrent.TimeoutException
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
import static org.junit.Assume.assumeTrue
class ExecutorInstrumentationTest extends AgentTestRunner {
@ -81,9 +82,7 @@ class ExecutorInstrumentationTest extends AgentTestRunner {
new Runnable() {
@Override
void run() {
def parentSpan = TEST_TRACER.spanBuilder("parent").startSpan()
def parentScope = TEST_TRACER.withSpan(parentSpan)
try {
runUnderTrace("parent") {
// this child will have a span
def child1 = new JavaAsyncChild()
// this child won't
@ -92,9 +91,6 @@ class ExecutorInstrumentationTest extends AgentTestRunner {
m(pool, child2)
child1.waitForCompletion()
child2.waitForCompletion()
} finally {
parentSpan.end()
parentScope.close()
}
}
}.run()
@ -171,13 +167,8 @@ class ExecutorInstrumentationTest extends AgentTestRunner {
new Runnable() {
@Override
void run() {
def parentSpan = TEST_TRACER.spanBuilder("parent").startSpan()
def parentScope = TEST_TRACER.withSpan(parentSpan)
try {
runUnderTrace("parent") {
m(pool, w(child))
} finally {
parentSpan.end()
parentScope.close()
}
}
}.run()
@ -219,9 +210,7 @@ class ExecutorInstrumentationTest extends AgentTestRunner {
new Runnable() {
@Override
void run() {
def parentSpan = TEST_TRACER.spanBuilder("parent").startSpan()
def parentScope = TEST_TRACER.withSpan(parentSpan)
try {
runUnderTrace("parent") {
try {
for (int i = 0; i < 20; ++i) {
// Our current instrumentation instrumentation does not behave very well
@ -248,9 +237,6 @@ class ExecutorInstrumentationTest extends AgentTestRunner {
for (JavaAsyncChild child : children) {
child.unblock()
}
} finally {
parentSpan.end()
parentScope.close()
}
}
}.run()

View File

@ -226,13 +226,8 @@ class Netty41ClientTest extends HttpClientTest<NettyHttpClientDecorator> {
class TracedClass {
int tracedMethod(String method) {
def span = TEST_TRACER.spanBuilder("tracedMethod").startSpan()
def scope = TEST_TRACER.withSpan(span)
try {
return doRequest(method, server.address.resolve("/success"))
} finally {
span.end()
scope.close()
runUnderTrace("tracedMethod") {
doRequest(method, server.address.resolve("/success"))
}
}
}

View File

@ -17,6 +17,7 @@ import io.opentelemetry.auto.test.AgentTestRunner
import unshaded.io.opentelemetry.OpenTelemetry
import unshaded.io.opentelemetry.trace.Status
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
import static unshaded.io.opentelemetry.trace.Span.Kind.PRODUCER
class OpenTelemetryApiTest extends AgentTestRunner {
@ -54,12 +55,10 @@ class OpenTelemetryApiTest extends AgentTestRunner {
def "capture span with implicit parent"() {
when:
def tracer = OpenTelemetry.getTracerFactory().get("test")
def parentSpan = tracer.spanBuilder("parent").startSpan()
def parentScope = tracer.withSpan(parentSpan)
runUnderTrace("parent") {
def testSpan = tracer.spanBuilder("test").startSpan()
testSpan.end()
parentSpan.end()
parentScope.close()
}
then:
assertTraces(1) {

View File

@ -39,6 +39,7 @@ import org.apache.http.impl.client.HttpClientBuilder
import java.util.concurrent.ExecutionException
import java.util.concurrent.TimeUnit
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
import static io.opentelemetry.trace.Span.Kind.CLIENT
class TwilioClientTest extends AgentTestRunner {
@ -126,16 +127,13 @@ class TwilioClientTest extends AgentTestRunner {
1 * twilioRestClient.request(_) >> new Response(new ByteArrayInputStream(MESSAGE_RESPONSE_BODY.getBytes()), 200)
def testSpan = TEST_TRACER.spanBuilder("test").startSpan()
def testScope = TEST_TRACER.withSpan(testSpan)
Message message = Message.creator(
Message message = runUnderTrace("test") {
Message.creator(
new PhoneNumber("+1 555 720 5913"), // To number
new PhoneNumber("+1 555 555 5215"), // From number
"Hello world!" // SMS body
).create(twilioRestClient)
testSpan.end()
testScope.close()
}
expect:
@ -175,19 +173,15 @@ class TwilioClientTest extends AgentTestRunner {
1 * twilioRestClient.request(_) >> new Response(new ByteArrayInputStream(CALL_RESPONSE_BODY.getBytes()), 200)
def testSpan = TEST_TRACER.spanBuilder("test").startSpan()
def testScope = TEST_TRACER.withSpan(testSpan)
Call call = Call.creator(
Call call = runUnderTrace("test") {
Call.creator(
new PhoneNumber("+15558881234"), // To number
new PhoneNumber("+15559994321"), // From number
// Read TwiML at this URL when a call connects (hold music)
new URI("http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient")
).create(twilioRestClient)
testSpan.end()
testScope.close()
}
expect:
@ -251,18 +245,13 @@ class TwilioClientTest extends AgentTestRunner {
.httpClient(networkHttpClient)
.build()
def testSpan = TEST_TRACER.spanBuilder("test").startSpan()
def testScope = TEST_TRACER.withSpan(testSpan)
Message message = Message.creator(
Message message = runUnderTrace("test") {
Message.creator(
new PhoneNumber("+1 555 720 5913"), // To number
new PhoneNumber("+1 555 555 5215"), // From number
"Hello world!" // SMS body
).create(realTwilioRestClient)
testSpan.end()
testScope.close()
}
expect:
@ -355,16 +344,13 @@ class TwilioClientTest extends AgentTestRunner {
.httpClient(networkHttpClient)
.build()
def testSpan = TEST_TRACER.spanBuilder("test").startSpan()
def testScope = TEST_TRACER.withSpan(testSpan)
Message message = Message.creator(
Message message = runUnderTrace("test") {
Message.creator(
new PhoneNumber("+1 555 720 5913"), // To number
new PhoneNumber("+1 555 555 5215"), // From number
"Hello world!" // SMS body
).create(realTwilioRestClient)
testSpan.end()
testScope.close()
}
expect:
@ -470,8 +456,7 @@ class TwilioClientTest extends AgentTestRunner {
.httpClient(networkHttpClient)
.build()
def testSpan = TEST_TRACER.spanBuilder("test").startSpan()
def testScope = TEST_TRACER.withSpan(testSpan)
Message message = runUnderTrace("test") {
ListenableFuture<Message> future = Message.creator(
new PhoneNumber("+1 555 720 5913"), // To number
@ -479,14 +464,12 @@ class TwilioClientTest extends AgentTestRunner {
"Hello world!" // SMS body
).createAsync(realTwilioRestClient)
Message message
try {
message = future.get(10, TimeUnit.SECONDS)
return future.get(10, TimeUnit.SECONDS)
} finally {
// Give the future callback a chance to run
Thread.sleep(1000)
testSpan.end()
testScope.close()
}
}
expect:
@ -663,8 +646,7 @@ class TwilioClientTest extends AgentTestRunner {
when:
def testSpan = TEST_TRACER.spanBuilder("test").startSpan()
def testScope = TEST_TRACER.withSpan(testSpan)
Message message = runUnderTrace("test") {
ListenableFuture<Message> future = Message.creator(
new PhoneNumber("+1 555 720 5913"), // To number
@ -672,14 +654,12 @@ class TwilioClientTest extends AgentTestRunner {
"Hello world!" // SMS body
).createAsync(twilioRestClient)
Message message
try {
message = future.get(10, TimeUnit.SECONDS)
return future.get(10, TimeUnit.SECONDS)
} finally {
// Give the future callback a chance to run
Thread.sleep(1000)
testSpan.end()
testScope.close()
}
}
then:

View File

@ -22,6 +22,7 @@ import io.opentelemetry.trace.Tracer
import spock.lang.Unroll
import static io.opentelemetry.auto.test.utils.ConfigUtils.withConfigOverride
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
/**
* This class represents the standard test cases that new logging library integrations MUST
@ -44,16 +45,12 @@ abstract class LogEventsTestBase extends AgentTestRunner {
def "capture #testMethod (#capture)"() {
setup:
def parentSpan = tracer.spanBuilder("test").startSpan()
def parentScope = tracer.withSpan(parentSpan)
runUnderTrace("test") {
def logger = createLogger("abc")
withConfigOverride(Config.LOGS_EVENTS_THRESHOLD, "WARN") {
logger."$testMethod"("xyz")
}
parentSpan.end()
parentScope.close()
}
expect:
assertTraces(1) {