Lauri Tulmin 2023-02-03 13:46:29 +02:00 committed by GitHub
parent 9f7ed3e2c8
commit 652c3a8bf4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 7 deletions

View File

@ -24,6 +24,8 @@ import spock.lang.Unroll
import static io.opentelemetry.api.trace.SpanKind.CLIENT import static io.opentelemetry.api.trace.SpanKind.CLIENT
import static io.opentelemetry.api.trace.SpanKind.SERVER import static io.opentelemetry.api.trace.SpanKind.SERVER
import static io.opentelemetry.instrumentation.apachedubbo.v2_7.DubboTestUtil.newDubboBootstrap
import static io.opentelemetry.instrumentation.apachedubbo.v2_7.DubboTestUtil.newFrameworkModel
@Unroll @Unroll
abstract class AbstractDubboTest extends InstrumentationSpecification { abstract class AbstractDubboTest extends InstrumentationSpecification {
@ -58,7 +60,8 @@ abstract class AbstractDubboTest extends InstrumentationSpecification {
def port = PortUtils.findOpenPort() def port = PortUtils.findOpenPort()
protocolConfig.setPort(port) protocolConfig.setPort(port)
DubboBootstrap bootstrap = DubboBootstrap.newInstance() def frameworkModel = newFrameworkModel()
DubboBootstrap bootstrap = newDubboBootstrap(frameworkModel)
bootstrap.application(new ApplicationConfig("dubbo-test-provider")) bootstrap.application(new ApplicationConfig("dubbo-test-provider"))
.service(configureServer()) .service(configureServer())
.protocol(protocolConfig) .protocol(protocolConfig)
@ -68,7 +71,7 @@ abstract class AbstractDubboTest extends InstrumentationSpecification {
consumerProtocolConfig.setRegister(false) consumerProtocolConfig.setRegister(false)
def reference = configureClient(port) def reference = configureClient(port)
DubboBootstrap consumerBootstrap = DubboBootstrap.newInstance() DubboBootstrap consumerBootstrap = newDubboBootstrap(frameworkModel)
consumerBootstrap.application(new ApplicationConfig("dubbo-demo-api-consumer")) consumerBootstrap.application(new ApplicationConfig("dubbo-demo-api-consumer"))
.reference(reference) .reference(reference)
.protocol(consumerProtocolConfig) .protocol(consumerProtocolConfig)
@ -122,6 +125,7 @@ abstract class AbstractDubboTest extends InstrumentationSpecification {
cleanup: cleanup:
bootstrap.destroy() bootstrap.destroy()
consumerBootstrap.destroy() consumerBootstrap.destroy()
frameworkModel?.destroy()
} }
def "test apache dubbo test #dubbo"() { def "test apache dubbo test #dubbo"() {
@ -129,7 +133,8 @@ abstract class AbstractDubboTest extends InstrumentationSpecification {
def port = PortUtils.findOpenPort() def port = PortUtils.findOpenPort()
protocolConfig.setPort(port) protocolConfig.setPort(port)
DubboBootstrap bootstrap = DubboBootstrap.newInstance() def frameworkModel = newFrameworkModel()
DubboBootstrap bootstrap = newDubboBootstrap(frameworkModel)
bootstrap.application(new ApplicationConfig("dubbo-test-async-provider")) bootstrap.application(new ApplicationConfig("dubbo-test-async-provider"))
.service(configureServer()) .service(configureServer())
.protocol(protocolConfig) .protocol(protocolConfig)
@ -139,7 +144,7 @@ abstract class AbstractDubboTest extends InstrumentationSpecification {
consumerProtocolConfig.setRegister(false) consumerProtocolConfig.setRegister(false)
def reference = configureClient(port) def reference = configureClient(port)
DubboBootstrap consumerBootstrap = DubboBootstrap.newInstance() DubboBootstrap consumerBootstrap = newDubboBootstrap(frameworkModel)
consumerBootstrap.application(new ApplicationConfig("dubbo-demo-async-api-consumer")) consumerBootstrap.application(new ApplicationConfig("dubbo-demo-async-api-consumer"))
.reference(reference) .reference(reference)
.protocol(consumerProtocolConfig) .protocol(consumerProtocolConfig)
@ -193,5 +198,6 @@ abstract class AbstractDubboTest extends InstrumentationSpecification {
cleanup: cleanup:
bootstrap.destroy() bootstrap.destroy()
consumerBootstrap.destroy() consumerBootstrap.destroy()
frameworkModel?.destroy()
} }
} }

View File

@ -25,6 +25,8 @@ import spock.lang.Unroll
import static io.opentelemetry.api.trace.SpanKind.CLIENT import static io.opentelemetry.api.trace.SpanKind.CLIENT
import static io.opentelemetry.api.trace.SpanKind.SERVER import static io.opentelemetry.api.trace.SpanKind.SERVER
import static io.opentelemetry.instrumentation.apachedubbo.v2_7.DubboTestUtil.newDubboBootstrap
import static io.opentelemetry.instrumentation.apachedubbo.v2_7.DubboTestUtil.newFrameworkModel
@Unroll @Unroll
abstract class AbstractDubboTraceChainTest extends InstrumentationSpecification { abstract class AbstractDubboTraceChainTest extends InstrumentationSpecification {
@ -76,7 +78,8 @@ abstract class AbstractDubboTraceChainTest extends InstrumentationSpecification
def protocolConfig = new ProtocolConfig() def protocolConfig = new ProtocolConfig()
protocolConfig.setPort(port) protocolConfig.setPort(port)
DubboBootstrap bootstrap = DubboBootstrap.newInstance() def frameworkModel = newFrameworkModel()
DubboBootstrap bootstrap = newDubboBootstrap(frameworkModel)
bootstrap.application(new ApplicationConfig("dubbo-test-provider")) bootstrap.application(new ApplicationConfig("dubbo-test-provider"))
.service(configureServer()) .service(configureServer())
.protocol(protocolConfig) .protocol(protocolConfig)
@ -86,7 +89,7 @@ abstract class AbstractDubboTraceChainTest extends InstrumentationSpecification
middleProtocolConfig.setPort(middlePort) middleProtocolConfig.setPort(middlePort)
def reference = configureClient(port) def reference = configureClient(port)
DubboBootstrap middleBootstrap = DubboBootstrap.newInstance() DubboBootstrap middleBootstrap = newDubboBootstrap(frameworkModel)
middleBootstrap.application(new ApplicationConfig("dubbo-demo-middle")) middleBootstrap.application(new ApplicationConfig("dubbo-demo-middle"))
.reference(reference) .reference(reference)
.service(configureMiddleServer(reference)) .service(configureMiddleServer(reference))
@ -98,7 +101,7 @@ abstract class AbstractDubboTraceChainTest extends InstrumentationSpecification
consumerProtocolConfig.setRegister(false) consumerProtocolConfig.setRegister(false)
def middleReference = configureMiddleClient(middlePort) def middleReference = configureMiddleClient(middlePort)
DubboBootstrap consumerBootstrap = DubboBootstrap.newInstance() DubboBootstrap consumerBootstrap = newDubboBootstrap(frameworkModel)
consumerBootstrap.application(new ApplicationConfig("dubbo-demo-api-consumer")) consumerBootstrap.application(new ApplicationConfig("dubbo-demo-api-consumer"))
.reference(middleReference) .reference(middleReference)
.protocol(consumerProtocolConfig) .protocol(consumerProtocolConfig)

View File

@ -0,0 +1,26 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.instrumentation.apachedubbo.v2_7
import org.apache.dubbo.config.bootstrap.DubboBootstrap
class DubboTestUtil {
static newFrameworkModel() {
try {
// only present in latest dep
return Class.forName("org.apache.dubbo.rpc.model.FrameworkModel").newInstance()
} catch (ClassNotFoundException exception) {
return null
}
}
static DubboBootstrap newDubboBootstrap(Object frameworkModel) {
if (frameworkModel == null) {
return DubboBootstrap.newInstance()
}
return DubboBootstrap.newInstance(frameworkModel)
}
}