Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpan
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext
import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities
import datadog.trace.bootstrap.instrumentation.api.Tags
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.test.util.DDSpecification
import spock.lang.Shared

class BaseDecoratorTest extends DDSpecification {

def setupSpec() {
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

@Shared
def decorator = newDecorator()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package datadog.trace.agent.test

import datadog.environment.EnvironmentVariables
import datadog.trace.agent.tooling.InstrumenterModule
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.agent.tooling.bytebuddy.matcher.DDElementMatchers
import datadog.trace.agent.tooling.bytebuddy.outline.TypePoolFacade
import datadog.trace.test.util.DDSpecification
Expand All @@ -12,6 +13,10 @@ class DefaultInstrumenterForkedTest extends DDSpecification {
DDElementMatchers.registerAsSupplier()
}

def setupSpec() {
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

def "default enabled"() {
setup:
def target = new TestDefaultInstrumenter("test")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package datadog.trace.agent.tooling

import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.test.util.DDSpecification
import spock.lang.Shared

class InstrumenterIndexTest extends DDSpecification {

def setupSpec() {
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

@Shared
def unknownInstrumentation = new InstrumenterModule('unknown') {}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import datadog.trace.agent.tooling.bytebuddy.csi.Advices
import datadog.trace.agent.tooling.bytebuddy.csi.CallSiteInstrumentation
import datadog.trace.agent.tooling.bytebuddy.csi.CallSiteSupplier
import datadog.trace.agent.tooling.bytebuddy.csi.CallSiteTransformer
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.test.util.DDSpecification
import groovy.transform.CompileDynamic
import net.bytebuddy.agent.builder.AgentBuilder
Expand Down Expand Up @@ -31,6 +32,10 @@ import static net.bytebuddy.matcher.ElementMatchers.named
@CompileDynamic
class BaseCallSiteTest extends DDSpecification {

def setupSpec() {
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

protected CallSites mockCallSites(final byte type = BEFORE, final CallSiteAdvice advice, final Pointcut target, final String... helpers) {
return Stub(CallSites) {
accept(_ as CallSites.Container) >> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package datadog.trace.agent.tooling.muzzle

import datadog.trace.agent.tooling.Instrumenter
import datadog.trace.agent.tooling.InstrumenterModule
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.test.util.DDSpecification
import net.bytebuddy.matcher.ElementMatcher

Expand All @@ -20,6 +21,10 @@ import static datadog.trace.agent.tooling.muzzle.TestInstrumentationClasses.Vali

class MuzzleVersionScanPluginTest extends DDSpecification {

def setupSpec() {
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

def "test assertInstrumentationMuzzled advice"() {
setup:
def instrumentationLoader = new ServiceEnabledClassLoader(InstrumenterModule,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.CODE_ORIGIN_FO
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious
import static datadog.trace.util.AgentThreadFactory.AgentThread.TASK_SCHEDULER

import datadog.trace.config.inversion.ConfigHelper

import ch.qos.logback.classic.Level
import ch.qos.logback.classic.util.ContextInitializer
import com.datadog.debugger.agent.ClassesToRetransformFinder
Expand Down Expand Up @@ -426,6 +428,13 @@ abstract class InstrumentationSpecification extends DDSpecification implements A
.hasNext(): "No instrumentation found"
activeTransformer = AgentInstaller.installBytebuddyAgent(
INSTRUMENTATION, true, AgentInstaller.getEnabledSystems(), this)

// Assert no unsupported configs were encountered during agent install.
// This catches configs that were swallowed by InstrumenterIndex.buildModule()/loadModules().
def unsupported = ConfigHelper.get().drainUnsupportedConfigs()
assert unsupported.isEmpty(): "Unsupported configurations found during agent install. " +
"Add these to metadata/supported-configurations.json or opt out with StrictnessPolicy.TEST:\n " +
unsupported.join("\n ")
}

protected String idGenerationStrategyName() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import com.google.common.reflect.ClassPath
import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.agent.test.BootstrapClasspathSetupListener
import datadog.trace.api.GlobalTracer
import datadog.trace.api.Platform
Expand All @@ -26,6 +27,8 @@ class AgentTestRunnerTest extends InstrumentationSpecification {
@Override
void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)

injectSysConfig(TRACE_CLASSES_EXCLUDE, "config.exclude.packagename.*, config.exclude.SomeClass,config.exclude.SomeClass\$NestedClass")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
import datadog.environment.EnvironmentVariables
import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.api.Config
import spock.lang.Shared

class ConfigResetTest extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

@Shared
def sharedInstance = checkStaticAssertions()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
import com.ibm.as400.resource.ResourceLevel
import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper

class InstrumentOldBytecode extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

def "can instrument old bytecode"() {
expect:
new ResourceLevel().toString() == "instrumented"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.agent.test.TestClassShadowingExtension
import org.spockframework.mock.*
import org.spockframework.mock.runtime.MockInvocation

class TooManyInvocationsErrorListenerTest extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

@SuppressWarnings('GroovyAccessibility')
void 'test that listener modifies failure'() {
setup:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.api.CorrelationIdentifier

import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_128_BIT_TRACEID_LOGGING_ENABLED
import static datadog.trace.api.config.TracerConfig.TRACE_128_BIT_TRACEID_GENERATION_ENABLED

class TraceCorrelationTest extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

def "access trace correlation only under trace"() {
when:
def span = TEST_TRACER.startSpan("test", "myspan")
Expand All @@ -28,6 +36,8 @@ class Trace128bitCorrelationTest extends TraceCorrelationTest {
@Override
void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
injectSysConfig(TRACE_128_BIT_TRACEID_GENERATION_ENABLED, "true")
injectSysConfig(TRACE_128_BIT_TRACEID_LOGGING_ENABLED, "true")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package context

import datadog.trace.agent.test.AbortTransformationException
import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.agent.test.utils.ClasspathUtils
import datadog.trace.api.InstrumenterConfig
import datadog.trace.test.util.GCUtils
Expand Down Expand Up @@ -32,6 +33,13 @@ import static context.FieldInjectionTestInstrumentation.ValidSerializableKeyClas

class FieldInjectionForkedTest extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

@Override
void onDiscovery(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded) {
if (typeName?.endsWith("UntransformableKeyClass")) {
Expand Down Expand Up @@ -219,6 +227,8 @@ class FieldInjectionForkedTest extends InstrumentationSpecification {
class FieldInjectionDisabledForkedTest extends InstrumentationSpecification {
void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)

injectSysConfig("dd.trace.runtime.context.field.injection", "false")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package excludefilter

import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.bootstrap.FieldBackedContextStores
import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter

Expand All @@ -18,6 +19,13 @@ import static excludefilter.ExcludeFilterTestInstrumentation.RunnableExcludedExe

class ExcludeFilterForkedTest extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

def "test ExcludeFilter #runnable.class.name"() {
expect:
ExcludeFilter.exclude(RUNNABLE, runnable) == excluded
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package locator

import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import net.bytebuddy.agent.builder.AgentBuilder
import net.bytebuddy.description.type.TypeDescription
import net.bytebuddy.dynamic.DynamicType
Expand All @@ -16,6 +17,8 @@ class ClassInjectingForkedTest extends InstrumentationSpecification {
@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)

// Since this method is not at all configurePreAgent, but more like
// configurePreAgentAndOhByTheWayBeforeEveryTest we need to not install
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package locator

import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import net.bytebuddy.agent.builder.AgentBuilder
import net.bytebuddy.description.type.TypeDescription
import net.bytebuddy.dynamic.DynamicType
Expand All @@ -19,6 +20,8 @@ class ClassInjectingLoadClassDisabledForkedTest extends InstrumentationSpecifica
@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)

injectSysConfig("dd.resolver.use.loadclass", "false")

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package server

import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.agent.test.server.http.HttpProxy
import datadog.trace.agent.test.utils.OkHttpUtils
import okhttp3.MediaType
Expand All @@ -21,6 +22,13 @@ import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer
})
class HttpProxyTest extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

@AutoCleanup
@Shared
def proxy = new HttpProxy()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace

import datadog.communication.util.IOUtils
import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.agent.test.utils.OkHttpUtils
import okhttp3.MultipartBody
import okhttp3.Request
Expand All @@ -14,6 +15,14 @@ import spock.lang.Shared
/* Don't actually need AgentTestRunner, but it messes up the classloader for AgentTestRunnerTest if this runs first. */

class HttpServerTest extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

@Shared
def client = OkHttpUtils.client()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
package synthetic

import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper

abstract class SyntheticForkedTestBase extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

def "test Synthetic methods"() {
expect:
SyntheticTestInstrumentation.Compute.result(i) == computed(i)
Expand All @@ -25,6 +33,8 @@ class SyntheticForkedTest extends SyntheticForkedTestBase {
@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)

System.setProperty("synthetic.test.enabled", "true")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
package utils

import datadog.trace.agent.test.InstrumentationSpecification
import datadog.trace.config.inversion.ConfigHelper
import datadog.trace.agent.test.utils.PortUtils

import java.util.concurrent.TimeUnit

class PortUtilsTest extends InstrumentationSpecification {

@Override
protected void configurePreAgent() {
super.configurePreAgent()
// Opt out of strict config validation - test module loads test instrumentations with fake names
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
}

def "expect waitForPortToOpen succeed"() {
given:
int port = PortUtils.randomOpenPort()
Expand Down
Loading
Loading