From d1bd3ce7ee53787fb59a34ea898796b61a35083a Mon Sep 17 00:00:00 2001 From: iryabov Date: Thu, 28 Aug 2025 14:57:20 +0200 Subject: [PATCH 01/14] refactor: remove obsolete parameters `isWebApp`, `isTslApp`, `isAsyncApp` EPMDJ-11058 --- .../configuration/ParameterDefinitions.kt | 3 -- .../kotlin/com/epam/drill/agent/Agent.kt | 1 - .../drill/agent/jvmti/ClassFileLoadHook.kt | 30 ++++++++----------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt index be139714..e1e1aeb3 100644 --- a/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt +++ b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt @@ -37,11 +37,8 @@ object ParameterDefinitions: AgentParameterDefinitionCollection() { val LOG_LEVEL = AgentParameterDefinition.forString(name = "logLevel", defaultValue = "INFO").register() val LOG_FILE = NullableAgentParameterDefinition.forString(name = "logFile").register() val LOG_LIMIT = AgentParameterDefinition.forInt(name = "logLimit", defaultValue = 512).register() - val IS_WEB_APP = AgentParameterDefinition.forBoolean(name = "isWebApp", defaultValue = false).register() val IS_KAFKA = AgentParameterDefinition.forBoolean(name = "isKafka", defaultValue = false).register() val IS_CADENCE = AgentParameterDefinition.forBoolean(name = "isCadence", defaultValue = false).register() - val IS_TLS_APP = AgentParameterDefinition.forBoolean(name = "isTlsApp", defaultValue = false).register() - val IS_ASYNC_APP = AgentParameterDefinition.forBoolean(name = "isAsyncApp", defaultValue = false).register() val IS_COMPATIBILITY_TESTS = AgentParameterDefinition.forBoolean(name = "isCompatibilityTests", defaultValue = false).register() val USE_PROTOBUF_SERIALIZER = diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt index 0bee4440..fa702823 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt @@ -84,7 +84,6 @@ object Agent { AgentLoggingConfiguration.updateJvmLoggingConfiguration() Configuration.initializeJvm() - DrillRequestHolder.init(Configuration.parameters[ParameterDefinitions.IS_ASYNC_APP]) HttpInterceptorConfigurer(HeadersRetriever, DrillRequestHolder) loadJvmModule("com.epam.drill.agent.test2code.Test2Code") diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt index 111af679..75d51a98 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt @@ -73,9 +73,6 @@ object ClassFileLoadHook { UndertowWsMessagesTransformer ) - private val isAsyncApp = Configuration.parameters[ParameterDefinitions.IS_ASYNC_APP] - private val isTlsApp = Configuration.parameters[ParameterDefinitions.IS_TLS_APP] - private val isWebApp = Configuration.parameters[ParameterDefinitions.IS_WEB_APP] private val isKafka = Configuration.parameters[ParameterDefinitions.IS_KAFKA] private val isCadence = Configuration.parameters[ParameterDefinitions.IS_CADENCE] private val isCompatibilityTests = Configuration.parameters[ParameterDefinitions.IS_COMPATIBILITY_TESTS] @@ -109,22 +106,20 @@ object ClassFileLoadHook { val classReader = ClassReader(classBytes) val superName = classReader.superName ?: "" val interfaces = classReader.interfaces.filterNotNull() - //TODO needs refactoring EPMDJ-8528 - if (isAsyncApp || isWebApp) { - if (isAsyncApp && isTTLCandidate(kClassName, superName, interfaces)) { - transformers += { bytes -> - TTLTransformer.transform( - kClassName, - bytes, - loader, - protectionDomain - ) - } - } - if (superName == SSLEngineTransformer.SSL_ENGINE_CLASS_NAME) { - transformers += { bytes -> SSLEngineTransformer.transform(kClassName, bytes, loader, protectionDomain) } + + if (isTTLCandidate(kClassName, superName, interfaces)) { + transformers += { bytes -> + TTLTransformer.transform( + kClassName, + bytes, + loader, + protectionDomain + ) } } + if (superName == SSLEngineTransformer.SSL_ENGINE_CLASS_NAME) { + transformers += { bytes -> SSLEngineTransformer.transform(kClassName, bytes, loader, protectionDomain) } + } if (isKafka) { if (KAFKA_PRODUCER_INTERFACE in interfaces) { @@ -178,7 +173,6 @@ object ClassFileLoadHook { } } } - // TODO Http hook does not work for Netty on linux system if ('$' !in kClassName && kClassName.startsWith(NettyHttpServerTransformer.HANDLER_CONTEXT)) { logger.info { "Starting transform Netty class kClassName $kClassName..." } transformers += { bytes -> From a53fdc400aeb34ae874e6a80e52ef851ec92133c Mon Sep 17 00:00:00 2001 From: iryabov Date: Mon, 1 Sep 2025 16:42:50 +0200 Subject: [PATCH 02/14] feat: add `precheck` function to `Transformer` class feat: add new parameters to enable/disable transformers EPMDJ-11058 --- .../configuration/ParameterDefinitions.kt | 4 - .../clients/ApacheHttpClientTransformer.kt | 3 +- .../clients/JavaHttpClientTransformer.kt | 3 +- .../clients/OkHttp3ClientTransformer.kt | 3 +- .../clients/SpringWebClientTransformer.kt | 3 +- .../jetty/Jetty10WsMessagesTransformer.kt | 4 +- .../jetty/Jetty11WsMessagesTransformer.kt | 3 +- .../jetty/Jetty9WsMessagesTransformer.kt | 3 +- .../jetty/JettyHttpServerTransformer.kt | 3 +- .../jetty/JettyWsClientTransformer.kt | 3 +- .../jetty/JettyWsServerTransformer.kt | 3 +- .../netty/NettyHttpServerTransformer.kt | 3 +- .../netty/NettyWsClientTransformer.kt | 3 +- .../netty/NettyWsMessagesTransformer.kt | 3 +- .../netty/NettyWsServerTransformer.kt | 3 +- .../reactor/transformers/FluxTransformer.kt | 3 +- .../reactor/transformers/MonoTransformer.kt | 3 +- .../transformers/ParallelFluxTransformer.kt | 3 +- .../transformers/SchedulersTransformer.kt | 3 +- .../instrument/servers/CadenceTransformer.kt | 3 +- .../servers/CompatibilityTestsTransformer.kt | 3 +- .../instrument/servers/KafkaTransformer.kt | 3 +- .../instrument/servers/ReactorTransformer.kt | 3 +- .../servers/SSLEngineTransformer.kt | 3 +- .../instrument/servers/TTLTransformer.kt | 3 +- .../tomcat/TomcatHttpServerTransformer.kt | 3 +- .../tomcat/TomcatWsClientTransformer.kt | 3 +- .../tomcat/TomcatWsMessagesTransformer.kt | 3 +- .../tomcat/TomcatWsServerTransformer.kt | 3 +- .../undertow/UndertowHttpServerTransformer.kt | 3 +- .../undertow/UndertowWsClientTransformer.kt | 3 +- .../undertow/UndertowWsMessagesTransformer.kt | 3 +- .../undertow/UndertowWsServerTransformer.kt | 3 +- .../instrument/ApplicationClassTransformer.kt | 52 ++++++ .../clients/ApacheHttpClientTransformer.kt | 4 +- .../clients/JavaHttpClientTransformer.kt | 10 +- .../clients/OkHttp3ClientTransformer.kt | 4 +- .../clients/SpringWebClientTransformer.kt | 4 +- .../jetty/Jetty10WsMessagesTransformer.kt | 4 +- .../jetty/Jetty11WsMessagesTransformer.kt | 4 +- .../jetty/Jetty9WsMessagesTransformer.kt | 4 +- .../jetty/JettyHttpServerTransformer.kt | 8 +- .../jetty/JettyWsClientTransformer.kt | 4 +- .../jetty/JettyWsServerTransformer.kt | 4 +- .../netty/NettyHttpServerTransformer.kt | 12 +- .../netty/NettyWsClientTransformer.kt | 4 +- .../netty/NettyWsMessagesTransformer.kt | 4 +- .../netty/NettyWsServerTransformer.kt | 4 +- .../instrument/servers/CadenceTransformer.kt | 12 +- .../servers/CompatibilityTestsTransformer.kt | 6 +- .../instrument/servers/KafkaTransformer.kt | 11 +- .../instrument/servers/ReactorTransformer.kt | 4 +- .../servers/SSLEngineTransformer.kt | 12 +- .../instrument/servers/TTLTransformer.kt | 20 +- .../tomcat/TomcatHttpServerTransformer.kt | 8 +- .../tomcat/TomcatWsClientTransformer.kt | 4 +- .../tomcat/TomcatWsMessagesTransformer.kt | 4 +- .../tomcat/TomcatWsServerTransformer.kt | 4 +- .../undertow/UndertowHttpServerTransformer.kt | 8 +- .../undertow/UndertowWsClientTransformer.kt | 4 +- .../undertow/UndertowWsMessagesTransformer.kt | 4 +- .../undertow/UndertowWsServerTransformer.kt | 4 +- .../drill/agent/jvmti/ClassFileLoadHook.kt | 172 ++++++------------ 63 files changed, 292 insertions(+), 212 deletions(-) create mode 100644 java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt diff --git a/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt index e1e1aeb3..e09e6e3c 100644 --- a/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt +++ b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt @@ -37,10 +37,6 @@ object ParameterDefinitions: AgentParameterDefinitionCollection() { val LOG_LEVEL = AgentParameterDefinition.forString(name = "logLevel", defaultValue = "INFO").register() val LOG_FILE = NullableAgentParameterDefinition.forString(name = "logFile").register() val LOG_LIMIT = AgentParameterDefinition.forInt(name = "logLimit", defaultValue = 512).register() - val IS_KAFKA = AgentParameterDefinition.forBoolean(name = "isKafka", defaultValue = false).register() - val IS_CADENCE = AgentParameterDefinition.forBoolean(name = "isCadence", defaultValue = false).register() - val IS_COMPATIBILITY_TESTS = - AgentParameterDefinition.forBoolean(name = "isCompatibilityTests", defaultValue = false).register() val USE_PROTOBUF_SERIALIZER = AgentParameterDefinition.forBoolean(name = "useProtobufSerializer", defaultValue = true).register() val USE_GZIP_COMPRESSION = AgentParameterDefinition.forBoolean(name = "useGzipCompression", defaultValue = true).register() diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt index 56842f8e..f5936dbd 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.clients +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object ApacheHttpClientTransformer : TransformerObject, - ApacheHttpClientTransformerObject(), + ApacheHttpClientTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt index 81c95f19..c74852e1 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.clients +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object JavaHttpClientTransformer : TransformerObject, - JavaHttpClientTransformerObject(), + JavaHttpClientTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt index 0630ea45..03573898 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.clients +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object OkHttp3ClientTransformer : TransformerObject, - OkHttp3ClientTransformerObject(), + OkHttp3ClientTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt index 30917f3d..f51d91b6 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt @@ -15,10 +15,11 @@ */ package com.epam.drill.agent.instrument.clients +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* actual object SpringWebClientTransformer: TransformerObject, - SpringWebClientTransformerObject(), + SpringWebClientTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt index be12cae5..b7d45605 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt @@ -15,11 +15,13 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.common.configuration.AgentParameters +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* actual object Jetty10WsMessagesTransformer : TransformerObject, - Jetty10WsMessagesTransformerObject(), + Jetty10WsMessagesTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt index 2f3304b6..c1aa15fd 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* actual object Jetty11WsMessagesTransformer : TransformerObject, - Jetty11WsMessagesTransformerObject(), + Jetty11WsMessagesTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt index e55e350d..da21d5f7 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* actual object Jetty9WsMessagesTransformer : TransformerObject, - Jetty9WsMessagesTransformerObject(), + Jetty9WsMessagesTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt index 7feaafa3..f85d5f81 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* import com.epam.drill.agent.request.HeadersRetriever actual object JettyHttpServerTransformer : TransformerObject, - JettyHttpServerTransformerObject(HeadersRetriever), + JettyHttpServerTransformerObject(HeadersRetriever, Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt index ad7c0dd0..7e9da2ad 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt @@ -15,10 +15,11 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* actual object JettyWsClientTransformer : TransformerObject, - JettyWsClientTransformerObject(), + JettyWsClientTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt index cd95da28..c5e49fa9 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt @@ -15,10 +15,11 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* actual object JettyWsServerTransformer : TransformerObject, - JettyWsServerTransformerObject(), + JettyWsServerTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt index aeeeb1eb..176b3095 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.netty +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -24,6 +25,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object NettyHttpServerTransformer : TransformerObject, - NettyHttpServerTransformerObject(HeadersRetriever), + NettyHttpServerTransformerObject(HeadersRetriever, Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt index a2c51635..8dc629f6 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.netty +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object NettyWsClientTransformer : TransformerObject, - NettyWsClientTransformerObject(), + NettyWsClientTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt index a02ccbc0..1891e494 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.netty +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.DefaultPayloadProcessor @@ -25,7 +26,7 @@ import com.epam.drill.agent.instrument.TransformerObject actual object NettyWsMessagesTransformer : TransformerObject, - NettyWsMessagesTransformerObject(), + NettyWsMessagesTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt index 6a9040da..51df4fcb 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.netty +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object NettyWsServerTransformer : TransformerObject, - NettyWsServerTransformerObject(), + NettyWsServerTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/FluxTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/FluxTransformer.kt index 539f99fc..fa422c22 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/FluxTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/FluxTransformer.kt @@ -15,12 +15,13 @@ */ package com.epam.drill.agent.instrument.reactor.transformers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.RuntimeClassPathProvider import com.epam.drill.agent.instrument.TransformerObject import com.epam.drill.agent.request.DrillRequestHolder object FluxTransformer: TransformerObject, - FluxTransformerObject(), + FluxTransformerObject(Configuration.parameters), com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/MonoTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/MonoTransformer.kt index ca07f47b..bd528315 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/MonoTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/MonoTransformer.kt @@ -15,12 +15,13 @@ */ package com.epam.drill.agent.instrument.reactor.transformers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.RuntimeClassPathProvider import com.epam.drill.agent.instrument.TransformerObject import com.epam.drill.agent.request.DrillRequestHolder object MonoTransformer : TransformerObject, - MonoTransformerObject(), + MonoTransformerObject(Configuration.parameters), com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/ParallelFluxTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/ParallelFluxTransformer.kt index 2b2e6504..d5e5e5e5 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/ParallelFluxTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/ParallelFluxTransformer.kt @@ -15,12 +15,13 @@ */ package com.epam.drill.agent.instrument.reactor.transformers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.RuntimeClassPathProvider import com.epam.drill.agent.instrument.TransformerObject import com.epam.drill.agent.request.DrillRequestHolder object ParallelFluxTransformer: TransformerObject, - ParallelFluxTransformerObject(), + ParallelFluxTransformerObject(Configuration.parameters), com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/SchedulersTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/SchedulersTransformer.kt index 457bc8dc..354caeca 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/SchedulersTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/SchedulersTransformer.kt @@ -15,12 +15,13 @@ */ package com.epam.drill.agent.instrument.reactor.transformers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.TransformerObject import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.RuntimeClassPathProvider import com.epam.drill.agent.request.DrillRequestHolder object SchedulersTransformer: TransformerObject, - SchedulersTransformerObject(), + SchedulersTransformerObject(Configuration.parameters), com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt index 65151f14..f571be2b 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.servers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object CadenceTransformer : TransformerObject, - CadenceTransformerObject(), + CadenceTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt index accbb802..9ea510f9 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.servers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* import com.epam.drill.agent.instrument.test.CompatibilityTestsTransformerObject import com.epam.drill.agent.request.DrillRequestHolder @@ -22,5 +23,5 @@ import com.epam.drill.agent.request.DrillRequestHolder actual object CompatibilityTestsTransformer : TransformerObject, com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, - CompatibilityTestsTransformerObject(), + CompatibilityTestsTransformerObject(Configuration.parameters), ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt index 95be7e56..0513f022 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.servers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object KafkaTransformer : TransformerObject, - KafkaTransformerObject(), + KafkaTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt index 32d8a9d5..e6b220b2 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.servers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.AbstractTransformerObject import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.RuntimeClassPathProvider @@ -33,5 +34,5 @@ private val reactorTransformers = setOf( actual object ReactorTransformer : TransformerObject, - ReactorTransformerObject(reactorTransformers), + ReactorTransformerObject(reactorTransformers, Configuration.parameters), ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt index 2694b093..d68a2915 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.servers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -24,6 +25,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object SSLEngineTransformer : TransformerObject, - SSLEngineTransformerObject(HeadersRetriever), + SSLEngineTransformerObject(HeadersRetriever, Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt index d564c94b..420dbc2c 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.servers +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.RuntimeClassPathProvider import com.epam.drill.agent.instrument.TransformerObject actual object TTLTransformer : TransformerObject, - TTLTransformerObject(), + TTLTransformerObject(Configuration.parameters), ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt index e16fabb5..05769b44 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.tomcat +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -24,6 +25,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object TomcatHttpServerTransformer : TransformerObject, - TomcatHttpServerTransformerObject(HeadersRetriever), + TomcatHttpServerTransformerObject(HeadersRetriever, Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt index 9031b67a..19468afa 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.tomcat +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object TomcatWsClientTransformer : TransformerObject, - TomcatWsClientTransformerObject(), + TomcatWsClientTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt index 5a9458f9..88133f50 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.tomcat +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.DefaultPayloadProcessor @@ -25,7 +26,7 @@ import com.epam.drill.agent.instrument.TransformerObject actual object TomcatWsMessagesTransformer : TransformerObject, - TomcatWsMessagesTransformerObject(), + TomcatWsMessagesTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt index ba32835b..7235e058 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt @@ -15,6 +15,7 @@ */ package com.epam.drill.agent.instrument.tomcat +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.ClassPathProvider import com.epam.drill.agent.instrument.DefaultHeadersProcessor import com.epam.drill.agent.instrument.HeadersProcessor @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object TomcatWsServerTransformer : TransformerObject, - TomcatWsServerTransformerObject(), + TomcatWsServerTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt index 4625ccec..afceb119 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.undertow +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* import com.epam.drill.agent.request.HeadersRetriever actual object UndertowHttpServerTransformer : TransformerObject, - UndertowHttpServerTransformerObject(HeadersRetriever), + UndertowHttpServerTransformerObject(HeadersRetriever, Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt index 23ea0e78..2600f04f 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.undertow +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* import com.epam.drill.agent.request.HeadersRetriever actual object UndertowWsClientTransformer : TransformerObject, - UndertowWsClientTransformerObject(), + UndertowWsClientTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt index 88c98580..c94cab22 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt @@ -15,12 +15,13 @@ */ package com.epam.drill.agent.instrument.undertow +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* import com.epam.drill.agent.request.HeadersRetriever actual object UndertowWsMessagesTransformer : TransformerObject, - UndertowWsMessagesTransformerObject(), + UndertowWsMessagesTransformerObject(Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt index fa558541..16eeaa88 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.undertow +import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.instrument.* import com.epam.drill.agent.request.HeadersRetriever actual object UndertowWsServerTransformer : TransformerObject, - UndertowWsServerTransformerObject(HeadersRetriever), + UndertowWsServerTransformerObject(HeadersRetriever, Configuration.parameters), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt new file mode 100644 index 00000000..d69d7148 --- /dev/null +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt @@ -0,0 +1,52 @@ +/** + * Copyright 2020 - 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.epam.drill.agent.instrument + +import com.epam.drill.agent.common.classloading.ClassSource +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.module.InstrumentationAgentModule +import com.epam.drill.agent.module.JvmModuleStorage + +object ApplicationClassTransformer : Transformer { + + override fun enabled(): Boolean { + return super.enabled() + } + + override fun precheck( + className: String, + loader: Any?, + protectionDomain: Any? + ): Boolean = loader != null && protectionDomain != null && '$' !in className + + override fun permit( + className: String, + superName: String?, + interfaces: Array + ): Boolean = ClassSource(className, superName ?: "") + .prefixMatches(Configuration.agentMetadata.packagesPrefixes) + + override fun transform( + className: String, + classFileBuffer: ByteArray, + loader: Any?, + protectionDomain: Any? + ): ByteArray = JvmModuleStorage.values() + .filterIsInstance() + .fold(classFileBuffer) { bytes, plugin -> + plugin.instrument(className, bytes) ?: bytes + } +} \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt index 80b8ec6a..fa89f215 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.clients -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object ApacheHttpClientTransformer : TransformerObject, AbstractTransformerObject() +actual object ApacheHttpClientTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt index 964f5a0d..1b91c2fd 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt @@ -15,7 +15,13 @@ */ package com.epam.drill.agent.instrument.clients -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object JavaHttpClientTransformer : TransformerObject, AbstractTransformerObject() +actual object JavaHttpClientTransformer : TransformerObject, JvmTransformerObject() { + override fun precheck( + className: String, + loader: Any?, + protectionDomain: Any? + ): Boolean = loader != null && protectionDomain != null || className.contains("Http") +} diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt index a823acd2..36526745 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.clients -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object OkHttp3ClientTransformer : TransformerObject, AbstractTransformerObject() +actual object OkHttp3ClientTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt index 8e8a460b..6be230fc 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.clients -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object SpringWebClientTransformer : TransformerObject, AbstractTransformerObject() \ No newline at end of file +actual object SpringWebClientTransformer : TransformerObject, JvmTransformerObject() \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt index 796a3417..3de95511 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.jetty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object Jetty10WsMessagesTransformer : TransformerObject, AbstractTransformerObject() +actual object Jetty10WsMessagesTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt index ecb89f1e..a5550059 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.jetty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object Jetty11WsMessagesTransformer : TransformerObject, AbstractTransformerObject() +actual object Jetty11WsMessagesTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt index 906630a5..6882dbda 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.jetty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object Jetty9WsMessagesTransformer : TransformerObject, AbstractTransformerObject() +actual object Jetty9WsMessagesTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt index 757f2992..6563139f 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt @@ -15,7 +15,11 @@ */ package com.epam.drill.agent.instrument.jetty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.instrument.JETTY_SERVER_HANDLER import com.epam.drill.agent.instrument.TransformerObject -actual object JettyHttpServerTransformer : TransformerObject, AbstractTransformerObject() +actual object JettyHttpServerTransformer : TransformerObject, JvmTransformerObject() { + override fun permit(className: String, superName: String?, interfaces: Array) = + JETTY_SERVER_HANDLER == className +} diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt index 1f9e220b..09dbc29f 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.jetty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object JettyWsClientTransformer : TransformerObject, AbstractTransformerObject() +actual object JettyWsClientTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt index e177416a..c1bc97ee 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.jetty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object JettyWsServerTransformer : TransformerObject, AbstractTransformerObject() +actual object JettyWsServerTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt index 24fc20ec..65f38be3 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt @@ -15,9 +15,15 @@ */ package com.epam.drill.agent.instrument.netty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.instrument.NETTY_CHANNEL_HANDLER_CONTEXT import com.epam.drill.agent.instrument.TransformerObject -actual object NettyHttpServerTransformer : TransformerObject, AbstractTransformerObject() { - const val HANDLER_CONTEXT = "io/netty/channel/AbstractChannelHandlerContext" +actual object NettyHttpServerTransformer : TransformerObject, JvmTransformerObject() { + + override fun permit( + className: String, + superName: String?, + interfaces: Array + ): Boolean = '$' !in className && className.startsWith(NETTY_CHANNEL_HANDLER_CONTEXT) } diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt index 1581eef3..f649b21f 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.netty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object NettyWsClientTransformer : TransformerObject, AbstractTransformerObject() +actual object NettyWsClientTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt index d7be5c4b..6aba682f 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.netty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object NettyWsMessagesTransformer : TransformerObject, AbstractTransformerObject() +actual object NettyWsMessagesTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt index eaed5025..0876fe8c 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.netty -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object NettyWsServerTransformer : TransformerObject, AbstractTransformerObject() +actual object NettyWsServerTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt index e0e05ce1..b043f30a 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt @@ -15,7 +15,15 @@ */ package com.epam.drill.agent.instrument.servers -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.configuration.ParameterDefinitions +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject +import com.epam.drill.agent.instrument.CADENCE_CONSUMER +import com.epam.drill.agent.instrument.CADENCE_PRODUCER -actual object CadenceTransformer : TransformerObject, AbstractTransformerObject() + +actual object CadenceTransformer : TransformerObject, JvmTransformerObject() { + override fun permit(className: String, superName: String?, interfaces: Array) = + CADENCE_PRODUCER == className || CADENCE_CONSUMER == className +} diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt index 6694a0c9..1743f3e4 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt @@ -15,7 +15,9 @@ */ package com.epam.drill.agent.instrument.servers -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.configuration.ParameterDefinitions +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object CompatibilityTestsTransformer : TransformerObject, AbstractTransformerObject() \ No newline at end of file +actual object CompatibilityTestsTransformer : TransformerObject, JvmTransformerObject() \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt index 2e8e9221..edf1af38 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt @@ -15,7 +15,14 @@ */ package com.epam.drill.agent.instrument.servers -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.configuration.ParameterDefinitions +import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.instrument.KAFKA_CONSUMER_SPRING +import com.epam.drill.agent.instrument.KAFKA_PRODUCER_INTERFACE import com.epam.drill.agent.instrument.TransformerObject -actual object KafkaTransformer : TransformerObject, AbstractTransformerObject() +actual object KafkaTransformer : TransformerObject, JvmTransformerObject() { + override fun permit(className: String, superName: String?, interfaces: Array) = + KAFKA_CONSUMER_SPRING == className || interfaces.contains(KAFKA_PRODUCER_INTERFACE) +} diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt index 472b1c03..88e9ed3a 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.servers -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object ReactorTransformer: TransformerObject, AbstractTransformerObject() \ No newline at end of file +actual object ReactorTransformer: TransformerObject, JvmTransformerObject() \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt index dac71dd1..dec3d061 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt @@ -15,9 +15,15 @@ */ package com.epam.drill.agent.instrument.servers -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.instrument.SSL_ENGINE_CLASS_NAME import com.epam.drill.agent.instrument.TransformerObject -actual object SSLEngineTransformer : TransformerObject, AbstractTransformerObject() { - const val SSL_ENGINE_CLASS_NAME = "javax/net/ssl/SSLEngine" +actual object SSLEngineTransformer : TransformerObject, JvmTransformerObject() { + + override fun permit( + className: String, + superName: String?, + interfaces: Array + ): Boolean = superName == SSL_ENGINE_CLASS_NAME } diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt index 664576bf..c4c12391 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt @@ -15,10 +15,10 @@ */ package com.epam.drill.agent.instrument.servers -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object TTLTransformer : TransformerObject, AbstractTransformerObject() { +actual object TTLTransformer : TransformerObject, JvmTransformerObject() { val directTtlClasses = listOf( "java/util/concurrent/ScheduledThreadPoolExecutor", "java/util/concurrent/ThreadPoolExecutor", @@ -29,4 +29,20 @@ actual object TTLTransformer : TransformerObject, AbstractTransformerObject() { const val runnableInterface = "java/lang/Runnable" const val poolExecutor = "java/util/concurrent/ThreadPoolExecutor" const val jdkInternal = "jdk/internal" + + override fun precheck( + className: String, + loader: Any?, + protectionDomain: Any? + ): Boolean = loader != null && protectionDomain != null || className in directTtlClasses + + override fun permit( + className: String, + superName: String?, + interfaces: Array + ): Boolean = className in directTtlClasses + || (className != timerTaskClass + && (runnableInterface in interfaces.filterNotNull() + || superName == poolExecutor)) + && !className.startsWith(jdkInternal) } diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt index 81f3a1bd..306b1b3a 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt @@ -15,7 +15,11 @@ */ package com.epam.drill.agent.instrument.tomcat -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.instrument.TOMCAT_HTTP_FILTER import com.epam.drill.agent.instrument.TransformerObject -actual object TomcatHttpServerTransformer : TransformerObject, AbstractTransformerObject() +actual object TomcatHttpServerTransformer : TransformerObject, JvmTransformerObject() { + override fun permit(className: String, superName: String?, interfaces: Array) = + TOMCAT_HTTP_FILTER == className +} diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt index 049a09ac..ade06a81 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.tomcat -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object TomcatWsClientTransformer : TransformerObject, AbstractTransformerObject() +actual object TomcatWsClientTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt index 39cd79d7..e8e0e47e 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.tomcat -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object TomcatWsMessagesTransformer : TransformerObject, AbstractTransformerObject() +actual object TomcatWsMessagesTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt index bf3d4e41..1bd4ba44 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.tomcat -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object TomcatWsServerTransformer : TransformerObject, AbstractTransformerObject() +actual object TomcatWsServerTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt index ca39fee8..9b9bebac 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt @@ -15,7 +15,11 @@ */ package com.epam.drill.agent.instrument.undertow -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject +import com.epam.drill.agent.instrument.UNDERTOW_SERVER_CONNECTORS -actual object UndertowHttpServerTransformer : TransformerObject, AbstractTransformerObject() +actual object UndertowHttpServerTransformer : TransformerObject, JvmTransformerObject() { + override fun permit(className: String, superName: String?, interfaces: Array) = + UNDERTOW_SERVER_CONNECTORS == className +} diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt index 121ae64b..73019306 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.undertow -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object UndertowWsClientTransformer : TransformerObject, AbstractTransformerObject() +actual object UndertowWsClientTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt index f99ebe2a..2e127f4a 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.undertow -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object UndertowWsMessagesTransformer : TransformerObject, AbstractTransformerObject() +actual object UndertowWsMessagesTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt index 1980e91a..2ca4bfd1 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt @@ -15,7 +15,7 @@ */ package com.epam.drill.agent.instrument.undertow -import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object UndertowWsServerTransformer : TransformerObject, AbstractTransformerObject() +actual object UndertowWsServerTransformer : TransformerObject, JvmTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt index 75d51a98..9c15f84a 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt @@ -15,12 +15,6 @@ */ package com.epam.drill.agent.jvmti -import com.epam.drill.agent.configuration.Configuration -import com.epam.drill.agent.configuration.ParameterDefinitions -import com.epam.drill.agent.instrument.CADENCE_CONSUMER -import com.epam.drill.agent.instrument.CADENCE_PRODUCER -import com.epam.drill.agent.instrument.KAFKA_CONSUMER_SPRING -import com.epam.drill.agent.instrument.KAFKA_PRODUCER_INTERFACE import com.epam.drill.agent.instrument.clients.ApacheHttpClientTransformer import com.epam.drill.agent.instrument.clients.JavaHttpClientTransformer import com.epam.drill.agent.instrument.clients.OkHttp3ClientTransformer @@ -31,10 +25,7 @@ import com.epam.drill.agent.instrument.jetty.* import com.epam.drill.agent.instrument.netty.* import com.epam.drill.agent.instrument.tomcat.* import com.epam.drill.agent.instrument.undertow.* -import com.epam.drill.agent.interceptor.HttpInterceptorConfigurer -import com.epam.drill.agent.module.InstrumentationAgentModule -import com.epam.drill.agent.module.JvmModuleStorage -import com.epam.drill.agent.common.classloading.ClassSource +import com.epam.drill.agent.instrument.ApplicationClassTransformer import com.epam.drill.agent.jvmapi.gen.Allocate import com.epam.drill.agent.jvmapi.gen.jint import com.epam.drill.agent.jvmapi.gen.jintVar @@ -52,11 +43,21 @@ object ClassFileLoadHook { private val logger = KotlinLogging.logger("com.epam.drill.agent.jvmti.ClassFileLoadHook") - private val strategies = listOf( - JavaHttpClientTransformer, ApacheHttpClientTransformer, OkHttp3ClientTransformer, - ReactorTransformer, SpringWebClientTransformer - ) - private val wsStrategies = listOf( + private val allTransformers = listOf( + ApplicationClassTransformer, + TomcatHttpServerTransformer, + JettyHttpServerTransformer, + UndertowHttpServerTransformer, + NettyHttpServerTransformer, + JavaHttpClientTransformer, + ApacheHttpClientTransformer, + OkHttp3ClientTransformer, + SpringWebClientTransformer, + KafkaTransformer, + CadenceTransformer, + TTLTransformer, + ReactorTransformer, + SSLEngineTransformer, JettyWsClientTransformer, JettyWsServerTransformer, Jetty9WsMessagesTransformer, @@ -70,12 +71,10 @@ object ClassFileLoadHook { TomcatWsMessagesTransformer, UndertowWsClientTransformer, UndertowWsServerTransformer, - UndertowWsMessagesTransformer + UndertowWsMessagesTransformer, + CompatibilityTestsTransformer, ) - private val isKafka = Configuration.parameters[ParameterDefinitions.IS_KAFKA] - private val isCadence = Configuration.parameters[ParameterDefinitions.IS_CADENCE] - private val isCompatibilityTests = Configuration.parameters[ParameterDefinitions.IS_COMPATIBILITY_TESTS] private val totalTransformClass = AtomicInt(0) @@ -91,109 +90,46 @@ object ClassFileLoadHook { ) { initRuntimeIfNeeded() val kClassName = clsName?.toKString() ?: return - if (isBootstrapClassLoading(loader, protectionDomain) && !when { - kClassName.contains("Http") -> true // raw hack for Http(s) URL Connection classes - kClassName in TTLTransformer.directTtlClasses -> true - else -> false - } - ) return - if (classData == null || kClassName.startsWith(DRILL_PACKAGE)) return - try { + val kClassData = classData ?: return + + val precheckedTransformers = allTransformers + .filter { it.enabled() } + .filterNot { kClassName.startsWith(DRILL_PACKAGE) } + .filter { it.precheck(kClassName, loader, protectionDomain) } + .takeIf { it.any() } + ?: return + + val (oldClassBytes, reader) = runCatching { val classBytes = ByteArray(classDataLen).apply { - Memory.of(classData, classDataLen).loadByteArray(0, this) - } - val transformers = mutableListOf<(ByteArray) -> ByteArray?>() - val classReader = ClassReader(classBytes) - val superName = classReader.superName ?: "" - val interfaces = classReader.interfaces.filterNotNull() - - if (isTTLCandidate(kClassName, superName, interfaces)) { - transformers += { bytes -> - TTLTransformer.transform( - kClassName, - bytes, - loader, - protectionDomain - ) - } - } - if (superName == SSLEngineTransformer.SSL_ENGINE_CLASS_NAME) { - transformers += { bytes -> SSLEngineTransformer.transform(kClassName, bytes, loader, protectionDomain) } + Memory.of(kClassData, classDataLen).loadByteArray(0, this) } + classBytes to ClassReader(classBytes) + }.onFailure { + logger.error(it) { "Can't read class: $kClassName" } + }.getOrNull() ?: return - if (isKafka) { - if (KAFKA_PRODUCER_INTERFACE in interfaces) { - transformers += { bytes -> - KafkaTransformer.transform(KAFKA_PRODUCER_INTERFACE, bytes, loader, protectionDomain) - } - } - if (kClassName == KAFKA_CONSUMER_SPRING) { - transformers += { bytes -> - KafkaTransformer.transform(KAFKA_CONSUMER_SPRING, bytes, loader, protectionDomain) - } - } - } - if (isCadence) { - if (CADENCE_PRODUCER == kClassName || CADENCE_CONSUMER == kClassName) { - transformers += { bytes -> CadenceTransformer.transform(kClassName, bytes, loader, protectionDomain ) } - } - } - if (isCompatibilityTests) { - /** - * Uses for compatibility tests https://github.com/Drill4J/internal-compatibility-matrix-tests. - */ - if (CompatibilityTestsTransformer.permit(classReader.className, classReader.superName, classReader.interfaces)) { - transformers += { bytes -> CompatibilityTestsTransformer.transform(kClassName, bytes, loader, protectionDomain) } - } - } - val classSource = ClassSource(kClassName, classReader.superName ?: "", classBytes) - if ('$' !in kClassName && classSource.prefixMatches(Configuration.agentMetadata.packagesPrefixes)) { - JvmModuleStorage.values().filterIsInstance().forEach { plugin -> - transformers += { bytes -> plugin.instrument(kClassName, bytes) } - } - } - if (!HttpInterceptorConfigurer.enabled) { - if (kClassName.startsWith("org/apache/catalina/core/ApplicationFilterChain")) { - transformers += { bytes -> TomcatHttpServerTransformer.transform(kClassName, bytes, loader, protectionDomain) } - } - if (kClassName == "org/eclipse/jetty/server/handler/HandlerWrapper") { - transformers += { bytes -> JettyHttpServerTransformer.transform(kClassName, bytes, loader, protectionDomain) } - } - if (kClassName == "io/undertow/server/Connectors") { - transformers += { bytes -> UndertowHttpServerTransformer.transform(kClassName, bytes, loader, protectionDomain) } - } - strategies.forEach { strategy -> - if (strategy.permit(classReader.className, classReader.superName, classReader.interfaces)) { - transformers += { bytes -> strategy.transform(kClassName, bytes, loader, protectionDomain) } - } - } - wsStrategies.forEach { strategy -> - if (strategy.permit(classReader.className, classReader.superName, classReader.interfaces)) { - transformers += { bytes -> strategy.transform(kClassName, bytes, loader, protectionDomain) } - } - } - } - if ('$' !in kClassName && kClassName.startsWith(NettyHttpServerTransformer.HANDLER_CONTEXT)) { - logger.info { "Starting transform Netty class kClassName $kClassName..." } - transformers += { bytes -> - NettyHttpServerTransformer.transform(kClassName, bytes, loader, protectionDomain) - } - } - if (transformers.any()) { - transformers.fold(classBytes) { bytes, transformer -> - transformer(bytes) ?: bytes - }.takeIf { it !== classBytes }?.let { newBytes -> - logger.trace { "$kClassName transformed" } - totalTransformClass.addAndGet(1).takeIf { it % 100 == 0 }?.let { - logger.trace { "$it classes are transformed" } - } - convertToNativePointers(newBytes, newData, newClassDataLen) - } - } - } catch (throwable: Throwable) { - logger.error(throwable) { - "Can't retransform class: $kClassName, ${classData.readBytes(classDataLen).contentToString()}" + val permittedTransformers = precheckedTransformers.filter { + it.permit( + kClassName, + reader.superName, + reader.interfaces + ) + } + + val newClassBytes = permittedTransformers.fold(oldClassBytes) { bytes, transformer -> + runCatching { + transformer.transform(kClassName, bytes, loader, protectionDomain) + }.onFailure { + logger.error(it) { "Can't transform class: $kClassName with ${transformer::class}" } + }.getOrDefault(bytes) + } + + if (newClassBytes !== oldClassBytes) { + logger.debug { "$kClassName transformed" } + totalTransformClass.addAndGet(1).takeIf { it % 100 == 0 }?.let { + logger.debug { "At least $it classes were transformed" } } + convertToNativePointers(newClassBytes, newData, newClassDataLen) } } From 097562e371e6126c8d2f449fe96e33e19ba83567 Mon Sep 17 00:00:00 2001 From: iryabov Date: Mon, 1 Sep 2025 16:43:28 +0200 Subject: [PATCH 03/14] refactor: remove HttpInterceptor EPMDJ-11058 --- java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt index fa702823..6c22a48e 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt @@ -26,8 +26,6 @@ import mu.KotlinLogging import com.epam.drill.agent.configuration.AgentLoggingConfiguration import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.configuration.DefaultParameterDefinitions.INSTALLATION_DIR -import com.epam.drill.agent.configuration.ParameterDefinitions -import com.epam.drill.agent.interceptor.HttpInterceptorConfigurer import com.epam.drill.agent.jvmti.classFileLoadHook import com.epam.drill.agent.jvmti.vmDeathEvent import com.epam.drill.agent.jvmti.vmInitEvent @@ -84,7 +82,6 @@ object Agent { AgentLoggingConfiguration.updateJvmLoggingConfiguration() Configuration.initializeJvm() - HttpInterceptorConfigurer(HeadersRetriever, DrillRequestHolder) loadJvmModule("com.epam.drill.agent.test2code.Test2Code") JvmModuleMessageSender.sendAgentMetadata() From 82e7175ad79eb1582d1f789a508f973c78746a1e Mon Sep 17 00:00:00 2001 From: iryabov Date: Mon, 1 Sep 2025 17:32:20 +0200 Subject: [PATCH 04/14] feat: implement `enabled` function of `Transformer` classes on native source set EPMDJ-11058 --- .../drill/agent/configuration/ParameterDefinitions.kt | 2 +- .../drill/agent/instrument/DefaultPayloadProcessor.kt | 2 +- .../agent/instrument/AbstractHttpTransformerObject.kt | 8 ++++++++ .../agent/instrument/AbstractReactTransformerObject.kt | 8 ++++++++ .../drill/agent/instrument/AbstractTransformerObject.kt | 8 ++++++++ .../drill/agent/instrument/AbstractWsTransformerObject.kt | 8 ++++++++ .../drill/agent/instrument/ApplicationClassTransformer.kt | 3 ++- .../instrument/clients/ApacheHttpClientTransformer.kt | 8 ++++++-- .../agent/instrument/clients/JavaHttpClientTransformer.kt | 7 +++++-- .../agent/instrument/clients/OkHttp3ClientTransformer.kt | 8 ++++++-- .../instrument/clients/SpringWebClientTransformer.kt | 8 +++++++- .../instrument/jetty/Jetty10WsMessagesTransformer.kt | 7 ++++++- .../instrument/jetty/Jetty11WsMessagesTransformer.kt | 3 ++- .../agent/instrument/jetty/Jetty9WsMessagesTransformer.kt | 7 ++++++- .../agent/instrument/jetty/JettyHttpServerTransformer.kt | 4 ++-- .../agent/instrument/jetty/JettyWsClientTransformer.kt | 3 ++- .../agent/instrument/jetty/JettyWsServerTransformer.kt | 3 ++- .../agent/instrument/netty/NettyHttpServerTransformer.kt | 3 ++- .../agent/instrument/netty/NettyWsClientTransformer.kt | 3 ++- .../agent/instrument/netty/NettyWsMessagesTransformer.kt | 3 ++- .../agent/instrument/netty/NettyWsServerTransformer.kt | 3 ++- .../drill/agent/instrument/servers/CadenceTransformer.kt | 6 ++++-- .../instrument/servers/CompatibilityTestsTransformer.kt | 7 ++++++- .../drill/agent/instrument/servers/KafkaTransformer.kt | 7 ++++--- .../drill/agent/instrument/servers/ReactorTransformer.kt | 3 ++- .../agent/instrument/servers/SSLEngineTransformer.kt | 7 ++++++- .../epam/drill/agent/instrument/servers/TTLTransformer.kt | 7 ++++++- .../instrument/tomcat/TomcatHttpServerTransformer.kt | 3 ++- .../agent/instrument/tomcat/TomcatWsClientTransformer.kt | 3 ++- .../instrument/tomcat/TomcatWsMessagesTransformer.kt | 3 ++- .../agent/instrument/tomcat/TomcatWsServerTransformer.kt | 3 ++- .../instrument/undertow/UndertowHttpServerTransformer.kt | 3 ++- .../instrument/undertow/UndertowWsClientTransformer.kt | 3 ++- .../instrument/undertow/UndertowWsMessagesTransformer.kt | 3 ++- .../instrument/undertow/UndertowWsServerTransformer.kt | 3 ++- 35 files changed, 132 insertions(+), 38 deletions(-) create mode 100644 java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractHttpTransformerObject.kt create mode 100644 java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractReactTransformerObject.kt create mode 100644 java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractTransformerObject.kt create mode 100644 java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractWsTransformerObject.kt diff --git a/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt index e09e6e3c..a7dbd482 100644 --- a/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt +++ b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt @@ -40,5 +40,5 @@ object ParameterDefinitions: AgentParameterDefinitionCollection() { val USE_PROTOBUF_SERIALIZER = AgentParameterDefinition.forBoolean(name = "useProtobufSerializer", defaultValue = true).register() val USE_GZIP_COMPRESSION = AgentParameterDefinition.forBoolean(name = "useGzipCompression", defaultValue = true).register() - val IS_WS_MESSAGES = AgentParameterDefinition.forBoolean(name = "isWsMsg", defaultValue = true).register() + val COVERAGE_COLLECTION_ENABLED = AgentParameterDefinition.forBoolean(name = "coverageCollectionEnabled", defaultValue = true).register() } diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/DefaultPayloadProcessor.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/DefaultPayloadProcessor.kt index 5431c011..aabee553 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/DefaultPayloadProcessor.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/DefaultPayloadProcessor.kt @@ -19,6 +19,6 @@ import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.configuration.ParameterDefinitions object DefaultPayloadProcessor : DrillRequestPayloadProcessor( - { Configuration.parameters[ParameterDefinitions.IS_WS_MESSAGES] }, + { true }, DefaultHeadersProcessor ) diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractHttpTransformerObject.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractHttpTransformerObject.kt new file mode 100644 index 00000000..fa2ef7ee --- /dev/null +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractHttpTransformerObject.kt @@ -0,0 +1,8 @@ +package com.epam.drill.agent.instrument + +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_HTTP_ENABLED + +abstract class AbstractHttpTransformerObject: AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_HTTP_ENABLED] +} \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractReactTransformerObject.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractReactTransformerObject.kt new file mode 100644 index 00000000..5a1cdc37 --- /dev/null +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractReactTransformerObject.kt @@ -0,0 +1,8 @@ +package com.epam.drill.agent.instrument + +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_REACTOR_ENABLED + +abstract class AbstractReactTransformerObject: AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_REACTOR_ENABLED] +} \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractTransformerObject.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractTransformerObject.kt new file mode 100644 index 00000000..d12ae91a --- /dev/null +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractTransformerObject.kt @@ -0,0 +1,8 @@ +package com.epam.drill.agent.instrument + +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_ENABLED + +abstract class AbstractTransformerObject: JvmTransformerObject() { + override fun enabled() = Configuration.parameters[INSTRUMENTATION_ENABLED] +} \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractWsTransformerObject.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractWsTransformerObject.kt new file mode 100644 index 00000000..158ded39 --- /dev/null +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractWsTransformerObject.kt @@ -0,0 +1,8 @@ +package com.epam.drill.agent.instrument + +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_WS_ENABLED + +abstract class AbstractWsTransformerObject: AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_WS_ENABLED] +} \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt index d69d7148..80730ec2 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt @@ -17,13 +17,14 @@ package com.epam.drill.agent.instrument import com.epam.drill.agent.common.classloading.ClassSource import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.configuration.ParameterDefinitions.COVERAGE_COLLECTION_ENABLED import com.epam.drill.agent.module.InstrumentationAgentModule import com.epam.drill.agent.module.JvmModuleStorage object ApplicationClassTransformer : Transformer { override fun enabled(): Boolean { - return super.enabled() + return Configuration.parameters[COVERAGE_COLLECTION_ENABLED] } override fun precheck( diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt index fa89f215..c10008c0 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt @@ -15,7 +15,11 @@ */ package com.epam.drill.agent.instrument.clients -import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_APACHE_HTTP_CLIENT_ENABLED import com.epam.drill.agent.instrument.TransformerObject -actual object ApacheHttpClientTransformer : TransformerObject, JvmTransformerObject() +actual object ApacheHttpClientTransformer : TransformerObject, AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_APACHE_HTTP_CLIENT_ENABLED] +} diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt index 1b91c2fd..5fa1f25c 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt @@ -15,10 +15,13 @@ */ package com.epam.drill.agent.instrument.clients -import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_JAVA_HTTP_CLIENT_ENABLED import com.epam.drill.agent.instrument.TransformerObject -actual object JavaHttpClientTransformer : TransformerObject, JvmTransformerObject() { +actual object JavaHttpClientTransformer : TransformerObject, AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_JAVA_HTTP_CLIENT_ENABLED] override fun precheck( className: String, loader: Any?, diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt index 36526745..4ecd338c 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt @@ -15,7 +15,11 @@ */ package com.epam.drill.agent.instrument.clients -import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_OK_HTTP_CLIENT_ENABLED import com.epam.drill.agent.instrument.TransformerObject -actual object OkHttp3ClientTransformer : TransformerObject, JvmTransformerObject() +actual object OkHttp3ClientTransformer : TransformerObject, AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_OK_HTTP_CLIENT_ENABLED] +} diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt index 6be230fc..4e1edb86 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt @@ -15,7 +15,13 @@ */ package com.epam.drill.agent.instrument.clients +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_APACHE_HTTP_CLIENT_ENABLED +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_SPRING_WEB_CLIENT_ENABLED import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object SpringWebClientTransformer : TransformerObject, JvmTransformerObject() \ No newline at end of file +actual object SpringWebClientTransformer : TransformerObject, AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_SPRING_WEB_CLIENT_ENABLED] +} \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt index 3de95511..5cb074a9 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt @@ -15,7 +15,12 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.AbstractWsTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_APACHE_HTTP_CLIENT_ENABLED +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_WS_ENABLED import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object Jetty10WsMessagesTransformer : TransformerObject, JvmTransformerObject() +actual object Jetty10WsMessagesTransformer : TransformerObject, AbstractWsTransformerObject() \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt index a5550059..471b9b83 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object Jetty11WsMessagesTransformer : TransformerObject, JvmTransformerObject() +actual object Jetty11WsMessagesTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt index 6882dbda..cb9c1253 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt @@ -15,7 +15,12 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.AbstractWsTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_APACHE_HTTP_CLIENT_ENABLED +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_WS_ENABLED import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object Jetty9WsMessagesTransformer : TransformerObject, JvmTransformerObject() +actual object Jetty9WsMessagesTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt index 6563139f..b9d8c319 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt @@ -15,11 +15,11 @@ */ package com.epam.drill.agent.instrument.jetty -import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.instrument.AbstractHttpTransformerObject import com.epam.drill.agent.instrument.JETTY_SERVER_HANDLER import com.epam.drill.agent.instrument.TransformerObject -actual object JettyHttpServerTransformer : TransformerObject, JvmTransformerObject() { +actual object JettyHttpServerTransformer : TransformerObject, AbstractHttpTransformerObject() { override fun permit(className: String, superName: String?, interfaces: Array) = JETTY_SERVER_HANDLER == className } diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt index 09dbc29f..1166e255 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object JettyWsClientTransformer : TransformerObject, JvmTransformerObject() +actual object JettyWsClientTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt index c1bc97ee..8159e9d9 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.jetty +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object JettyWsServerTransformer : TransformerObject, JvmTransformerObject() +actual object JettyWsServerTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt index 65f38be3..9dff80d8 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.netty +import com.epam.drill.agent.instrument.AbstractHttpTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.NETTY_CHANNEL_HANDLER_CONTEXT import com.epam.drill.agent.instrument.TransformerObject -actual object NettyHttpServerTransformer : TransformerObject, JvmTransformerObject() { +actual object NettyHttpServerTransformer : TransformerObject, AbstractHttpTransformerObject() { override fun permit( className: String, diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt index f649b21f..aee92da0 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.netty +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object NettyWsClientTransformer : TransformerObject, JvmTransformerObject() +actual object NettyWsClientTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt index 6aba682f..90e32c00 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.netty +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object NettyWsMessagesTransformer : TransformerObject, JvmTransformerObject() +actual object NettyWsMessagesTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt index 0876fe8c..0a21b76c 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.netty +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object NettyWsServerTransformer : TransformerObject, JvmTransformerObject() +actual object NettyWsServerTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt index b043f30a..eb57d01e 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt @@ -16,14 +16,16 @@ package com.epam.drill.agent.instrument.servers import com.epam.drill.agent.configuration.Configuration -import com.epam.drill.agent.configuration.ParameterDefinitions +import com.epam.drill.agent.instrument.AbstractTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject import com.epam.drill.agent.instrument.CADENCE_CONSUMER import com.epam.drill.agent.instrument.CADENCE_PRODUCER +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_CADENCE_ENABLED -actual object CadenceTransformer : TransformerObject, JvmTransformerObject() { +actual object CadenceTransformer : TransformerObject, AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_CADENCE_ENABLED] override fun permit(className: String, superName: String?, interfaces: Array) = CADENCE_PRODUCER == className || CADENCE_CONSUMER == className } diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt index 1743f3e4..bd1c5784 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt @@ -17,7 +17,12 @@ package com.epam.drill.agent.instrument.servers import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.configuration.ParameterDefinitions +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_COMPATIBILITY_TESTS_ENABLED +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_WS_ENABLED import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object CompatibilityTestsTransformer : TransformerObject, JvmTransformerObject() \ No newline at end of file +actual object CompatibilityTestsTransformer : TransformerObject, AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_COMPATIBILITY_TESTS_ENABLED] +} \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt index edf1af38..e44e2793 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt @@ -16,13 +16,14 @@ package com.epam.drill.agent.instrument.servers import com.epam.drill.agent.configuration.Configuration -import com.epam.drill.agent.configuration.ParameterDefinitions -import com.epam.drill.agent.instrument.JvmTransformerObject +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_KAFKA_ENABLED import com.epam.drill.agent.instrument.KAFKA_CONSUMER_SPRING import com.epam.drill.agent.instrument.KAFKA_PRODUCER_INTERFACE import com.epam.drill.agent.instrument.TransformerObject -actual object KafkaTransformer : TransformerObject, JvmTransformerObject() { +actual object KafkaTransformer : TransformerObject, AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_KAFKA_ENABLED] override fun permit(className: String, superName: String?, interfaces: Array) = KAFKA_CONSUMER_SPRING == className || interfaces.contains(KAFKA_PRODUCER_INTERFACE) } diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt index 88e9ed3a..4fbebdab 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.servers +import com.epam.drill.agent.instrument.AbstractReactTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object ReactorTransformer: TransformerObject, JvmTransformerObject() \ No newline at end of file +actual object ReactorTransformer: TransformerObject, AbstractReactTransformerObject() \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt index dec3d061..265ea35a 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt @@ -15,12 +15,17 @@ */ package com.epam.drill.agent.instrument.servers +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_SSL_ENABLED +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_WS_ENABLED import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.SSL_ENGINE_CLASS_NAME import com.epam.drill.agent.instrument.TransformerObject -actual object SSLEngineTransformer : TransformerObject, JvmTransformerObject() { +actual object SSLEngineTransformer : TransformerObject, AbstractTransformerObject() { + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_SSL_ENABLED] override fun permit( className: String, superName: String?, diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt index c4c12391..84891034 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt @@ -15,10 +15,14 @@ */ package com.epam.drill.agent.instrument.servers +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.instrument.AbstractTransformerObject +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_TTL_ENABLED +import com.epam.drill.agent.instrument.InstrumentationParameterDefinitions.INSTRUMENTATION_WS_ENABLED import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object TTLTransformer : TransformerObject, JvmTransformerObject() { +actual object TTLTransformer : TransformerObject, AbstractTransformerObject() { val directTtlClasses = listOf( "java/util/concurrent/ScheduledThreadPoolExecutor", "java/util/concurrent/ThreadPoolExecutor", @@ -30,6 +34,7 @@ actual object TTLTransformer : TransformerObject, JvmTransformerObject() { const val poolExecutor = "java/util/concurrent/ThreadPoolExecutor" const val jdkInternal = "jdk/internal" + override fun enabled() = super.enabled() && Configuration.parameters[INSTRUMENTATION_TTL_ENABLED] override fun precheck( className: String, loader: Any?, diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt index 306b1b3a..ae8b2069 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.tomcat +import com.epam.drill.agent.instrument.AbstractHttpTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TOMCAT_HTTP_FILTER import com.epam.drill.agent.instrument.TransformerObject -actual object TomcatHttpServerTransformer : TransformerObject, JvmTransformerObject() { +actual object TomcatHttpServerTransformer : TransformerObject, AbstractHttpTransformerObject() { override fun permit(className: String, superName: String?, interfaces: Array) = TOMCAT_HTTP_FILTER == className } diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt index ade06a81..f5d8c039 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.tomcat +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object TomcatWsClientTransformer : TransformerObject, JvmTransformerObject() +actual object TomcatWsClientTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt index e8e0e47e..8a863048 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.tomcat +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object TomcatWsMessagesTransformer : TransformerObject, JvmTransformerObject() +actual object TomcatWsMessagesTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt index 1bd4ba44..31095dc3 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.tomcat +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object TomcatWsServerTransformer : TransformerObject, JvmTransformerObject() +actual object TomcatWsServerTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt index 9b9bebac..3d006b81 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt @@ -15,11 +15,12 @@ */ package com.epam.drill.agent.instrument.undertow +import com.epam.drill.agent.instrument.AbstractHttpTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject import com.epam.drill.agent.instrument.UNDERTOW_SERVER_CONNECTORS -actual object UndertowHttpServerTransformer : TransformerObject, JvmTransformerObject() { +actual object UndertowHttpServerTransformer : TransformerObject, AbstractHttpTransformerObject() { override fun permit(className: String, superName: String?, interfaces: Array) = UNDERTOW_SERVER_CONNECTORS == className } diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt index 73019306..f7dec9a2 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.undertow +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object UndertowWsClientTransformer : TransformerObject, JvmTransformerObject() +actual object UndertowWsClientTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt index 2e127f4a..67f99e63 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.undertow +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object UndertowWsMessagesTransformer : TransformerObject, JvmTransformerObject() +actual object UndertowWsMessagesTransformer : TransformerObject, AbstractWsTransformerObject() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt index 2ca4bfd1..f8923a52 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt @@ -15,7 +15,8 @@ */ package com.epam.drill.agent.instrument.undertow +import com.epam.drill.agent.instrument.AbstractWsTransformerObject import com.epam.drill.agent.instrument.JvmTransformerObject import com.epam.drill.agent.instrument.TransformerObject -actual object UndertowWsServerTransformer : TransformerObject, JvmTransformerObject() +actual object UndertowWsServerTransformer : TransformerObject, AbstractWsTransformerObject() From c072aba2f81dacfce2adf6d66e1595f13cefc718 Mon Sep 17 00:00:00 2001 From: iryabov Date: Mon, 1 Sep 2025 17:45:49 +0200 Subject: [PATCH 05/14] fix: substitute `Configuration.parameters` to `Configuration` to avoid lazyinit exception EPMDJ-11058 --- .../agent/instrument/clients/ApacheHttpClientTransformer.kt | 2 +- .../drill/agent/instrument/clients/JavaHttpClientTransformer.kt | 2 +- .../drill/agent/instrument/clients/OkHttp3ClientTransformer.kt | 2 +- .../agent/instrument/clients/SpringWebClientTransformer.kt | 2 +- .../agent/instrument/jetty/Jetty10WsMessagesTransformer.kt | 2 +- .../agent/instrument/jetty/Jetty11WsMessagesTransformer.kt | 2 +- .../drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt | 2 +- .../drill/agent/instrument/jetty/JettyHttpServerTransformer.kt | 2 +- .../drill/agent/instrument/jetty/JettyWsClientTransformer.kt | 2 +- .../drill/agent/instrument/jetty/JettyWsServerTransformer.kt | 2 +- .../drill/agent/instrument/netty/NettyHttpServerTransformer.kt | 2 +- .../drill/agent/instrument/netty/NettyWsClientTransformer.kt | 2 +- .../drill/agent/instrument/netty/NettyWsMessagesTransformer.kt | 2 +- .../drill/agent/instrument/netty/NettyWsServerTransformer.kt | 2 +- .../agent/instrument/reactor/transformers/FluxTransformer.kt | 2 +- .../agent/instrument/reactor/transformers/MonoTransformer.kt | 2 +- .../instrument/reactor/transformers/ParallelFluxTransformer.kt | 2 +- .../instrument/reactor/transformers/SchedulersTransformer.kt | 2 +- .../epam/drill/agent/instrument/servers/CadenceTransformer.kt | 2 +- .../agent/instrument/servers/CompatibilityTestsTransformer.kt | 2 +- .../com/epam/drill/agent/instrument/servers/KafkaTransformer.kt | 2 +- .../epam/drill/agent/instrument/servers/ReactorTransformer.kt | 2 +- .../epam/drill/agent/instrument/servers/SSLEngineTransformer.kt | 2 +- .../com/epam/drill/agent/instrument/servers/TTLTransformer.kt | 2 +- .../agent/instrument/tomcat/TomcatHttpServerTransformer.kt | 2 +- .../drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt | 2 +- .../agent/instrument/tomcat/TomcatWsMessagesTransformer.kt | 2 +- .../drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt | 2 +- .../agent/instrument/undertow/UndertowHttpServerTransformer.kt | 2 +- .../agent/instrument/undertow/UndertowWsClientTransformer.kt | 2 +- .../agent/instrument/undertow/UndertowWsMessagesTransformer.kt | 2 +- .../agent/instrument/undertow/UndertowWsServerTransformer.kt | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt index f5936dbd..c6f18222 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/ApacheHttpClientTransformer.kt @@ -24,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object ApacheHttpClientTransformer : TransformerObject, - ApacheHttpClientTransformerObject(Configuration.parameters), + ApacheHttpClientTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt index c74852e1..3a4a845a 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/JavaHttpClientTransformer.kt @@ -24,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object JavaHttpClientTransformer : TransformerObject, - JavaHttpClientTransformerObject(Configuration.parameters), + JavaHttpClientTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt index 03573898..8cbace7b 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/OkHttp3ClientTransformer.kt @@ -24,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object OkHttp3ClientTransformer : TransformerObject, - OkHttp3ClientTransformerObject(Configuration.parameters), + OkHttp3ClientTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt index f51d91b6..918aba52 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/clients/SpringWebClientTransformer.kt @@ -20,6 +20,6 @@ import com.epam.drill.agent.instrument.* actual object SpringWebClientTransformer: TransformerObject, - SpringWebClientTransformerObject(Configuration.parameters), + SpringWebClientTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt index b7d45605..9dca362a 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty10WsMessagesTransformer.kt @@ -21,7 +21,7 @@ import com.epam.drill.agent.instrument.* actual object Jetty10WsMessagesTransformer : TransformerObject, - Jetty10WsMessagesTransformerObject(Configuration.parameters), + Jetty10WsMessagesTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt index c1aa15fd..7caae792 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty11WsMessagesTransformer.kt @@ -20,7 +20,7 @@ import com.epam.drill.agent.instrument.* actual object Jetty11WsMessagesTransformer : TransformerObject, - Jetty11WsMessagesTransformerObject(Configuration.parameters), + Jetty11WsMessagesTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt index da21d5f7..0e754bc5 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/Jetty9WsMessagesTransformer.kt @@ -20,7 +20,7 @@ import com.epam.drill.agent.instrument.* actual object Jetty9WsMessagesTransformer : TransformerObject, - Jetty9WsMessagesTransformerObject(Configuration.parameters), + Jetty9WsMessagesTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt index f85d5f81..fac55cbd 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyHttpServerTransformer.kt @@ -21,6 +21,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object JettyHttpServerTransformer : TransformerObject, - JettyHttpServerTransformerObject(HeadersRetriever, Configuration.parameters), + JettyHttpServerTransformerObject(HeadersRetriever, Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt index 7e9da2ad..2b2d3f0c 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsClientTransformer.kt @@ -20,6 +20,6 @@ import com.epam.drill.agent.instrument.* actual object JettyWsClientTransformer : TransformerObject, - JettyWsClientTransformerObject(Configuration.parameters), + JettyWsClientTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt index c5e49fa9..a5cdfb01 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/jetty/JettyWsServerTransformer.kt @@ -20,6 +20,6 @@ import com.epam.drill.agent.instrument.* actual object JettyWsServerTransformer : TransformerObject, - JettyWsServerTransformerObject(Configuration.parameters), + JettyWsServerTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt index 176b3095..497e31fa 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyHttpServerTransformer.kt @@ -25,6 +25,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object NettyHttpServerTransformer : TransformerObject, - NettyHttpServerTransformerObject(HeadersRetriever, Configuration.parameters), + NettyHttpServerTransformerObject(HeadersRetriever, Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt index 8dc629f6..dae6ab09 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsClientTransformer.kt @@ -24,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object NettyWsClientTransformer : TransformerObject, - NettyWsClientTransformerObject(Configuration.parameters), + NettyWsClientTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt index 1891e494..8dd3fbf0 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsMessagesTransformer.kt @@ -26,7 +26,7 @@ import com.epam.drill.agent.instrument.TransformerObject actual object NettyWsMessagesTransformer : TransformerObject, - NettyWsMessagesTransformerObject(Configuration.parameters), + NettyWsMessagesTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt index 51df4fcb..b9eacf3e 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/netty/NettyWsServerTransformer.kt @@ -24,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object NettyWsServerTransformer : TransformerObject, - NettyWsServerTransformerObject(Configuration.parameters), + NettyWsServerTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/FluxTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/FluxTransformer.kt index fa422c22..afbc3828 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/FluxTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/FluxTransformer.kt @@ -22,6 +22,6 @@ import com.epam.drill.agent.instrument.TransformerObject import com.epam.drill.agent.request.DrillRequestHolder object FluxTransformer: TransformerObject, - FluxTransformerObject(Configuration.parameters), + FluxTransformerObject(Configuration), com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/MonoTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/MonoTransformer.kt index bd528315..1952bf00 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/MonoTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/MonoTransformer.kt @@ -22,6 +22,6 @@ import com.epam.drill.agent.instrument.TransformerObject import com.epam.drill.agent.request.DrillRequestHolder object MonoTransformer : TransformerObject, - MonoTransformerObject(Configuration.parameters), + MonoTransformerObject(Configuration), com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/ParallelFluxTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/ParallelFluxTransformer.kt index d5e5e5e5..41c1acdb 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/ParallelFluxTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/ParallelFluxTransformer.kt @@ -22,6 +22,6 @@ import com.epam.drill.agent.instrument.TransformerObject import com.epam.drill.agent.request.DrillRequestHolder object ParallelFluxTransformer: TransformerObject, - ParallelFluxTransformerObject(Configuration.parameters), + ParallelFluxTransformerObject(Configuration), com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/SchedulersTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/SchedulersTransformer.kt index 354caeca..5883ce3e 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/SchedulersTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/reactor/transformers/SchedulersTransformer.kt @@ -22,6 +22,6 @@ import com.epam.drill.agent.instrument.RuntimeClassPathProvider import com.epam.drill.agent.request.DrillRequestHolder object SchedulersTransformer: TransformerObject, - SchedulersTransformerObject(Configuration.parameters), + SchedulersTransformerObject(Configuration), com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt index f571be2b..f16af633 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CadenceTransformer.kt @@ -24,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object CadenceTransformer : TransformerObject, - CadenceTransformerObject(Configuration.parameters), + CadenceTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt index 9ea510f9..3cb25ce0 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/CompatibilityTestsTransformer.kt @@ -23,5 +23,5 @@ import com.epam.drill.agent.request.DrillRequestHolder actual object CompatibilityTestsTransformer : TransformerObject, com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder, - CompatibilityTestsTransformerObject(Configuration.parameters), + CompatibilityTestsTransformerObject(Configuration), ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt index 0513f022..82755906 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/KafkaTransformer.kt @@ -24,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object KafkaTransformer : TransformerObject, - KafkaTransformerObject(Configuration.parameters), + KafkaTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt index e6b220b2..bd3c70e2 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/ReactorTransformer.kt @@ -34,5 +34,5 @@ private val reactorTransformers = setOf( actual object ReactorTransformer : TransformerObject, - ReactorTransformerObject(reactorTransformers, Configuration.parameters), + ReactorTransformerObject(reactorTransformers, Configuration), ClassPathProvider by RuntimeClassPathProvider \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt index d68a2915..bbf9cbdc 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/SSLEngineTransformer.kt @@ -25,6 +25,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object SSLEngineTransformer : TransformerObject, - SSLEngineTransformerObject(HeadersRetriever, Configuration.parameters), + SSLEngineTransformerObject(HeadersRetriever, Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt index 420dbc2c..3c300607 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/servers/TTLTransformer.kt @@ -22,5 +22,5 @@ import com.epam.drill.agent.instrument.TransformerObject actual object TTLTransformer : TransformerObject, - TTLTransformerObject(Configuration.parameters), + TTLTransformerObject(Configuration), ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt index 05769b44..8c3a60b2 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatHttpServerTransformer.kt @@ -25,6 +25,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object TomcatHttpServerTransformer : TransformerObject, - TomcatHttpServerTransformerObject(HeadersRetriever, Configuration.parameters), + TomcatHttpServerTransformerObject(HeadersRetriever, Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt index 19468afa..9442959a 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsClientTransformer.kt @@ -24,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object TomcatWsClientTransformer : TransformerObject, - TomcatWsClientTransformerObject(Configuration.parameters), + TomcatWsClientTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt index 88133f50..b27fb0ff 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsMessagesTransformer.kt @@ -26,7 +26,7 @@ import com.epam.drill.agent.instrument.TransformerObject actual object TomcatWsMessagesTransformer : TransformerObject, - TomcatWsMessagesTransformerObject(Configuration.parameters), + TomcatWsMessagesTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt index 7235e058..484145c7 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/tomcat/TomcatWsServerTransformer.kt @@ -24,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject actual object TomcatWsServerTransformer : TransformerObject, - TomcatWsServerTransformerObject(Configuration.parameters), + TomcatWsServerTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt index afceb119..1793c479 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowHttpServerTransformer.kt @@ -21,6 +21,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object UndertowHttpServerTransformer : TransformerObject, - UndertowHttpServerTransformerObject(HeadersRetriever, Configuration.parameters), + UndertowHttpServerTransformerObject(HeadersRetriever, Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt index 2600f04f..86b1d18a 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsClientTransformer.kt @@ -21,6 +21,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object UndertowWsClientTransformer : TransformerObject, - UndertowWsClientTransformerObject(Configuration.parameters), + UndertowWsClientTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt index c94cab22..a4890c89 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsMessagesTransformer.kt @@ -21,7 +21,7 @@ import com.epam.drill.agent.request.HeadersRetriever actual object UndertowWsMessagesTransformer : TransformerObject, - UndertowWsMessagesTransformerObject(Configuration.parameters), + UndertowWsMessagesTransformerObject(Configuration), HeadersProcessor by DefaultHeadersProcessor, PayloadProcessor by DefaultPayloadProcessor, ClassPathProvider by RuntimeClassPathProvider diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt index 16eeaa88..721c144e 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/undertow/UndertowWsServerTransformer.kt @@ -21,6 +21,6 @@ import com.epam.drill.agent.request.HeadersRetriever actual object UndertowWsServerTransformer : TransformerObject, - UndertowWsServerTransformerObject(HeadersRetriever, Configuration.parameters), + UndertowWsServerTransformerObject(HeadersRetriever, Configuration), HeadersProcessor by DefaultHeadersProcessor, ClassPathProvider by RuntimeClassPathProvider From 88032778cc37420c2ffae18488c92e5cfbaffd0b Mon Sep 17 00:00:00 2001 From: iryabov Date: Tue, 2 Sep 2025 10:00:18 +0200 Subject: [PATCH 06/14] refactor: move transformers initialization to Agent file EPMDJ-11058 --- java-agent/build.gradle.kts | 1 + .../kotlin/com/epam/drill/agent/Agent.kt | 64 ++++++++++++++++++- .../drill/agent/jvmti/ClassFileLoadHook.kt | 50 ++------------- 3 files changed, 67 insertions(+), 48 deletions(-) diff --git a/java-agent/build.gradle.kts b/java-agent/build.gradle.kts index b3bd753f..fd0dfaa8 100644 --- a/java-agent/build.gradle.kts +++ b/java-agent/build.gradle.kts @@ -131,6 +131,7 @@ kotlin { implementation(project(":jvmapi")) implementation(project(":knasm")) implementation(project(":konform")) + implementation(project(":agent-instrumentation")) if (nativeAgentHookEnabled == "true") implementation(project(":interceptor-http")) else diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt index 6c22a48e..9e8b6304 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/Agent.kt @@ -26,16 +26,44 @@ import mu.KotlinLogging import com.epam.drill.agent.configuration.AgentLoggingConfiguration import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.configuration.DefaultParameterDefinitions.INSTALLATION_DIR +import com.epam.drill.agent.instrument.ApplicationClassTransformer import com.epam.drill.agent.jvmti.classFileLoadHook import com.epam.drill.agent.jvmti.vmDeathEvent import com.epam.drill.agent.jvmti.vmInitEvent import com.epam.drill.agent.module.JvmModuleLoader -import com.epam.drill.agent.request.HeadersRetriever -import com.epam.drill.agent.request.DrillRequestHolder import com.epam.drill.agent.transport.JvmModuleMessageSender import com.epam.drill.agent.jvmapi.gen.* import kotlinx.cinterop.ExperimentalForeignApi import kotlin.experimental.ExperimentalNativeApi +import com.epam.drill.agent.instrument.TransformerRegistrar +import com.epam.drill.agent.instrument.clients.ApacheHttpClientTransformer +import com.epam.drill.agent.instrument.clients.JavaHttpClientTransformer +import com.epam.drill.agent.instrument.clients.OkHttp3ClientTransformer +import com.epam.drill.agent.instrument.clients.SpringWebClientTransformer +import com.epam.drill.agent.instrument.jetty.Jetty10WsMessagesTransformer +import com.epam.drill.agent.instrument.jetty.Jetty11WsMessagesTransformer +import com.epam.drill.agent.instrument.jetty.Jetty9WsMessagesTransformer +import com.epam.drill.agent.instrument.jetty.JettyHttpServerTransformer +import com.epam.drill.agent.instrument.jetty.JettyWsClientTransformer +import com.epam.drill.agent.instrument.jetty.JettyWsServerTransformer +import com.epam.drill.agent.instrument.netty.NettyHttpServerTransformer +import com.epam.drill.agent.instrument.netty.NettyWsClientTransformer +import com.epam.drill.agent.instrument.netty.NettyWsMessagesTransformer +import com.epam.drill.agent.instrument.netty.NettyWsServerTransformer +import com.epam.drill.agent.instrument.servers.CadenceTransformer +import com.epam.drill.agent.instrument.servers.CompatibilityTestsTransformer +import com.epam.drill.agent.instrument.servers.KafkaTransformer +import com.epam.drill.agent.instrument.servers.ReactorTransformer +import com.epam.drill.agent.instrument.servers.SSLEngineTransformer +import com.epam.drill.agent.instrument.servers.TTLTransformer +import com.epam.drill.agent.instrument.tomcat.TomcatHttpServerTransformer +import com.epam.drill.agent.instrument.tomcat.TomcatWsClientTransformer +import com.epam.drill.agent.instrument.tomcat.TomcatWsMessagesTransformer +import com.epam.drill.agent.instrument.tomcat.TomcatWsServerTransformer +import com.epam.drill.agent.instrument.undertow.UndertowHttpServerTransformer +import com.epam.drill.agent.instrument.undertow.UndertowWsClientTransformer +import com.epam.drill.agent.instrument.undertow.UndertowWsMessagesTransformer +import com.epam.drill.agent.instrument.undertow.UndertowWsServerTransformer object Agent { @@ -51,6 +79,37 @@ object Agent { """.trimIndent() private val logger = KotlinLogging.logger("com.epam.drill.agent.Agent") + private val transformers = setOf( + ApplicationClassTransformer, + TomcatHttpServerTransformer, + JettyHttpServerTransformer, + UndertowHttpServerTransformer, + NettyHttpServerTransformer, + JavaHttpClientTransformer, + ApacheHttpClientTransformer, + OkHttp3ClientTransformer, + SpringWebClientTransformer, + KafkaTransformer, + CadenceTransformer, + TTLTransformer, + ReactorTransformer, + SSLEngineTransformer, + JettyWsClientTransformer, + JettyWsServerTransformer, + Jetty9WsMessagesTransformer, + Jetty10WsMessagesTransformer, + Jetty11WsMessagesTransformer, + NettyWsClientTransformer, + NettyWsServerTransformer, + NettyWsMessagesTransformer, + TomcatWsClientTransformer, + TomcatWsServerTransformer, + TomcatWsMessagesTransformer, + UndertowWsClientTransformer, + UndertowWsServerTransformer, + UndertowWsMessagesTransformer, + CompatibilityTestsTransformer, + ) @OptIn(ExperimentalNativeApi::class, ExperimentalForeignApi::class) fun agentOnLoad(options: String): Int { @@ -58,6 +117,7 @@ object Agent { AgentLoggingConfiguration.defaultNativeLoggingConfiguration() Configuration.initializeNative(options) AgentLoggingConfiguration.updateNativeLoggingConfiguration() + TransformerRegistrar.initialize(transformers) addCapabilities() setEventCallbacks() diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt index 9c15f84a..6b94d66c 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt @@ -15,17 +15,8 @@ */ package com.epam.drill.agent.jvmti -import com.epam.drill.agent.instrument.clients.ApacheHttpClientTransformer -import com.epam.drill.agent.instrument.clients.JavaHttpClientTransformer -import com.epam.drill.agent.instrument.clients.OkHttp3ClientTransformer -import com.epam.drill.agent.instrument.clients.SpringWebClientTransformer -import com.epam.drill.agent.instrument.servers.ReactorTransformer import com.epam.drill.agent.instrument.servers.* -import com.epam.drill.agent.instrument.jetty.* -import com.epam.drill.agent.instrument.netty.* -import com.epam.drill.agent.instrument.tomcat.* -import com.epam.drill.agent.instrument.undertow.* -import com.epam.drill.agent.instrument.ApplicationClassTransformer +import com.epam.drill.agent.instrument.TransformerRegistrar import com.epam.drill.agent.jvmapi.gen.Allocate import com.epam.drill.agent.jvmapi.gen.jint import com.epam.drill.agent.jvmapi.gen.jintVar @@ -42,40 +33,6 @@ object ClassFileLoadHook { private const val DRILL_PACKAGE = "com/epam/drill/agent" private val logger = KotlinLogging.logger("com.epam.drill.agent.jvmti.ClassFileLoadHook") - - private val allTransformers = listOf( - ApplicationClassTransformer, - TomcatHttpServerTransformer, - JettyHttpServerTransformer, - UndertowHttpServerTransformer, - NettyHttpServerTransformer, - JavaHttpClientTransformer, - ApacheHttpClientTransformer, - OkHttp3ClientTransformer, - SpringWebClientTransformer, - KafkaTransformer, - CadenceTransformer, - TTLTransformer, - ReactorTransformer, - SSLEngineTransformer, - JettyWsClientTransformer, - JettyWsServerTransformer, - Jetty9WsMessagesTransformer, - Jetty10WsMessagesTransformer, - Jetty11WsMessagesTransformer, - NettyWsClientTransformer, - NettyWsServerTransformer, - NettyWsMessagesTransformer, - TomcatWsClientTransformer, - TomcatWsServerTransformer, - TomcatWsMessagesTransformer, - UndertowWsClientTransformer, - UndertowWsServerTransformer, - UndertowWsMessagesTransformer, - CompatibilityTestsTransformer, - ) - - private val totalTransformClass = AtomicInt(0) @OptIn(ExperimentalForeignApi::class) @@ -92,8 +49,9 @@ object ClassFileLoadHook { val kClassName = clsName?.toKString() ?: return val kClassData = classData ?: return - val precheckedTransformers = allTransformers - .filter { it.enabled() } + + + val precheckedTransformers = TransformerRegistrar.enabledTransformers .filterNot { kClassName.startsWith(DRILL_PACKAGE) } .filter { it.precheck(kClassName, loader, protectionDomain) } .takeIf { it.any() } From 0cd6c43f2e045d3588f4063e1d90f542504ef826 Mon Sep 17 00:00:00 2001 From: iryabov Date: Tue, 2 Sep 2025 10:00:41 +0200 Subject: [PATCH 07/14] chore: add license header to transformer classes EPMDJ-11058 --- .../instrument/AbstractHttpTransformerObject.kt | 15 +++++++++++++++ .../instrument/AbstractReactTransformerObject.kt | 15 +++++++++++++++ .../agent/instrument/AbstractTransformerObject.kt | 15 +++++++++++++++ .../instrument/AbstractWsTransformerObject.kt | 15 +++++++++++++++ 4 files changed, 60 insertions(+) diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractHttpTransformerObject.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractHttpTransformerObject.kt index fa2ef7ee..03eaaa8b 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractHttpTransformerObject.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractHttpTransformerObject.kt @@ -1,3 +1,18 @@ +/** + * Copyright 2020 - 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.epam.drill.agent.instrument import com.epam.drill.agent.configuration.Configuration diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractReactTransformerObject.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractReactTransformerObject.kt index 5a1cdc37..1ecfaa2a 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractReactTransformerObject.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractReactTransformerObject.kt @@ -1,3 +1,18 @@ +/** + * Copyright 2020 - 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.epam.drill.agent.instrument import com.epam.drill.agent.configuration.Configuration diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractTransformerObject.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractTransformerObject.kt index d12ae91a..db0b6e27 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractTransformerObject.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractTransformerObject.kt @@ -1,3 +1,18 @@ +/** + * Copyright 2020 - 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.epam.drill.agent.instrument import com.epam.drill.agent.configuration.Configuration diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractWsTransformerObject.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractWsTransformerObject.kt index 158ded39..7bdccef2 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractWsTransformerObject.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/AbstractWsTransformerObject.kt @@ -1,3 +1,18 @@ +/** + * Copyright 2020 - 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.epam.drill.agent.instrument import com.epam.drill.agent.configuration.Configuration From 6ce09e95067a90a5684e3c939bc2c29408d28d2a Mon Sep 17 00:00:00 2001 From: iryabov Date: Tue, 2 Sep 2025 10:54:17 +0200 Subject: [PATCH 08/14] feat: add ApplicationClassTransformer multiplatform implementation EPMDJ-11058 --- .../configuration/ParameterDefinitions.kt | 1 - .../instrument/ApplicationClassTransformer.kt | 18 ++++++ .../instrument/ApplicationClassTransformer.kt | 55 +++++++++++++++++++ .../instrument/ApplicationClassTransformer.kt | 7 +-- 4 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 java-agent/src/commonMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt create mode 100644 java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt diff --git a/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt index a7dbd482..8472b1aa 100644 --- a/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt +++ b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/configuration/ParameterDefinitions.kt @@ -40,5 +40,4 @@ object ParameterDefinitions: AgentParameterDefinitionCollection() { val USE_PROTOBUF_SERIALIZER = AgentParameterDefinition.forBoolean(name = "useProtobufSerializer", defaultValue = true).register() val USE_GZIP_COMPRESSION = AgentParameterDefinition.forBoolean(name = "useGzipCompression", defaultValue = true).register() - val COVERAGE_COLLECTION_ENABLED = AgentParameterDefinition.forBoolean(name = "coverageCollectionEnabled", defaultValue = true).register() } diff --git a/java-agent/src/commonMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt new file mode 100644 index 00000000..6287331d --- /dev/null +++ b/java-agent/src/commonMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt @@ -0,0 +1,18 @@ +/** + * Copyright 2020 - 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.epam.drill.agent.instrument + +expect object ApplicationClassTransformer: TransformerObject \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt new file mode 100644 index 00000000..1fdd4de9 --- /dev/null +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt @@ -0,0 +1,55 @@ +/** + * Copyright 2020 - 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.epam.drill.agent.instrument + +import com.epam.drill.agent.common.classloading.ClassSource +import com.epam.drill.agent.common.module.Instrumenter +import com.epam.drill.agent.configuration.Configuration +import com.epam.drill.agent.module.JvmModuleStorage +import javassist.CtClass +import mu.KLogger +import mu.KotlinLogging + +actual object ApplicationClassTransformer : + TransformerObject, + AbstractTransformerObject(Configuration), + HeadersProcessor by DefaultHeadersProcessor, + ClassPathProvider by RuntimeClassPathProvider { + + override val logger: KLogger = KotlinLogging.logger {} + + override fun permit( + className: String, + superName: String?, + interfaces: Array + ): Boolean = ClassSource(className, superName ?: "") + .prefixMatches(Configuration.agentMetadata.packagesPrefixes) + + override fun transform( + className: String, + classFileBuffer: ByteArray, + loader: Any?, + protectionDomain: Any? + ): ByteArray = JvmModuleStorage.values() + .filterIsInstance() + .fold(classFileBuffer) { bytes, plugin -> + plugin.instrument(className, bytes) ?: bytes + } + + override fun transform(className: String, ctClass: CtClass) { + throw UnsupportedOperationException("Use transform with ByteArray") + } +} \ No newline at end of file diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt index 80730ec2..dfae73bf 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/instrument/ApplicationClassTransformer.kt @@ -17,15 +17,10 @@ package com.epam.drill.agent.instrument import com.epam.drill.agent.common.classloading.ClassSource import com.epam.drill.agent.configuration.Configuration -import com.epam.drill.agent.configuration.ParameterDefinitions.COVERAGE_COLLECTION_ENABLED import com.epam.drill.agent.module.InstrumentationAgentModule import com.epam.drill.agent.module.JvmModuleStorage -object ApplicationClassTransformer : Transformer { - - override fun enabled(): Boolean { - return Configuration.parameters[COVERAGE_COLLECTION_ENABLED] - } +actual object ApplicationClassTransformer : TransformerObject, AbstractTransformerObject() { override fun precheck( className: String, From b7c76bbe9c882d427262de93310b54a4a969245d Mon Sep 17 00:00:00 2001 From: iryabov Date: Tue, 2 Sep 2025 10:54:44 +0200 Subject: [PATCH 09/14] feat: add coverage collection toggle to Test2Code EPMDJ-11058 --- .../com/epam/drill/agent/test2code/Test2Code.kt | 14 +++++++++++--- .../configuration/Test2CodeParameterDefinitions.kt | 6 +++++- .../agent/test2code/coverage/CoverageSender.kt | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/Test2Code.kt b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/Test2Code.kt index bc19e215..01383e99 100644 --- a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/Test2Code.kt +++ b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/Test2Code.kt @@ -36,6 +36,7 @@ import com.epam.drill.agent.test2code.classloading.ClassLoadersScanner import com.epam.drill.agent.test2code.classloading.ClassScanner import com.epam.drill.agent.test2code.classparsing.parseAstClass import com.epam.drill.agent.test2code.configuration.Test2CodeParameterDefinitions +import com.epam.drill.agent.test2code.configuration.Test2CodeParameterDefinitions.COVERAGE_COLLECTION_ENABLED import com.epam.drill.agent.test2code.coverage.* private const val DRILL_TEST_ID_HEADER = "drill-test-id" @@ -65,13 +66,16 @@ class Test2Code( sender = sender, collectProbes = { coverageManager.pollRecorded() } ) + private val coverageCollectionEnabled = configuration.parameters[COVERAGE_COLLECTION_ENABLED] override fun onConnect() {} override fun instrument( className: String, initialBytes: ByteArray, - ): ByteArray? = instrumenter.instrument(className, initialBytes) + ): ByteArray? = takeIf { coverageCollectionEnabled }?.let { + instrumenter.instrument(className, initialBytes) + } override fun load() { AgentParametersValidator(configuration.parameters).validate( @@ -81,8 +85,12 @@ class Test2Code( thread { scanAndSendMetadataClasses() } - coverageSender.startSendingCoverage() - Runtime.getRuntime().addShutdownHook(Thread { coverageSender.stopSendingCoverage() }) + if (coverageCollectionEnabled) { + coverageSender.startSendingCoverage() + Runtime.getRuntime().addShutdownHook(Thread { coverageSender.stopSendingCoverage() }) + } else { + logger.info { "Coverage collection is disabled" } + } } /** diff --git a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/configuration/Test2CodeParameterDefinitions.kt b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/configuration/Test2CodeParameterDefinitions.kt index 43d031db..eb2ae1ff 100644 --- a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/configuration/Test2CodeParameterDefinitions.kt +++ b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/configuration/Test2CodeParameterDefinitions.kt @@ -23,7 +23,7 @@ import com.epam.drill.agent.common.configuration.ValidationType import com.epam.drill.agent.configuration.isNotBlank import com.epam.drill.agent.configuration.minDuration -object Test2CodeParameterDefinitions: AgentParameterDefinitionCollection() { +object Test2CodeParameterDefinitions : AgentParameterDefinitionCollection() { val SCAN_CLASS_PATH = AgentParameterDefinition.forList( name = "scanClassPath", @@ -58,5 +58,9 @@ object Test2CodeParameterDefinitions: AgentParameterDefinitionCollection() { name = "methodsSendPageSize", defaultValue = 1000 ).register() + val COVERAGE_COLLECTION_ENABLED = AgentParameterDefinition.forBoolean( + name = "coverageCollectionEnabled", + defaultValue = true + ).register() } diff --git a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt index f4e5a8c5..cc60dd88 100644 --- a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt +++ b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt @@ -49,7 +49,7 @@ class IntervalCoverageSender( intervalMs, TimeUnit.MILLISECONDS ) - logger.debug { "Coverage sending job is started." } + logger.info { "Coverage sending job is started." } } override fun stopSendingCoverage() { From 55243a410dd835535f401a225b9b588e9e7a95be Mon Sep 17 00:00:00 2001 From: iryabov Date: Tue, 2 Sep 2025 11:20:31 +0200 Subject: [PATCH 10/14] feat: add toggle for class scanning in Test2Code EPMDJ-11058 --- .../main/kotlin/com/epam/drill/agent/test2code/Test2Code.kt | 5 +++++ .../configuration/Test2CodeParameterDefinitions.kt | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/Test2Code.kt b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/Test2Code.kt index 01383e99..db279ef9 100644 --- a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/Test2Code.kt +++ b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/Test2Code.kt @@ -67,6 +67,7 @@ class Test2Code( collectProbes = { coverageManager.pollRecorded() } ) private val coverageCollectionEnabled = configuration.parameters[COVERAGE_COLLECTION_ENABLED] + private val classScanningEnabled = configuration.parameters[Test2CodeParameterDefinitions.CLASS_SCANNING_ENABLED] override fun onConnect() {} @@ -139,6 +140,10 @@ class Test2Code( * Scan, parse and send metadata classes to the admin side */ fun scanAndSendMetadataClasses() { + if (!classScanningEnabled) { + logger.info { "Class scanning is disabled" } + return + } var classCount = 0 var methodCount = 0 scanClasses { classes -> diff --git a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/configuration/Test2CodeParameterDefinitions.kt b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/configuration/Test2CodeParameterDefinitions.kt index eb2ae1ff..fdc5547c 100644 --- a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/configuration/Test2CodeParameterDefinitions.kt +++ b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/configuration/Test2CodeParameterDefinitions.kt @@ -60,6 +60,12 @@ object Test2CodeParameterDefinitions : AgentParameterDefinitionCollection() { ).register() val COVERAGE_COLLECTION_ENABLED = AgentParameterDefinition.forBoolean( name = "coverageCollectionEnabled", + description = "Enable/disable application code coverage collection", + defaultValue = true + ).register() + val CLASS_SCANNING_ENABLED = AgentParameterDefinition.forBoolean( + name = "classScanningEnabled", + description = "Enable/disable application classes scanning", defaultValue = true ).register() From 646cc3dd868bfb1b2096b5270c5268dacee80d16 Mon Sep 17 00:00:00 2001 From: iryabov Date: Tue, 2 Sep 2025 15:34:28 +0200 Subject: [PATCH 11/14] feat: update sharedLibsRef to point to the feature branch for transformers --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 1926729f..8550088d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,7 +21,7 @@ apacheHttpClientVersion = 5.2.3 aesyDatasizeVersion = 1.0.0 bytebuddyVersion = 1.14.11 -sharedLibsRef = main +sharedLibsRef = feature/enable-disable-transformers-EPMDJ-11058 sharedLibsLocalPath = lib-jvm-shared nativeAgentLibName = drill-agent nativeAgentHookEnabled = false From 6ff25fd281949b03e3f3f9c1e8916db361a218a7 Mon Sep 17 00:00:00 2001 From: iryabov Date: Wed, 3 Sep 2025 18:01:28 +0200 Subject: [PATCH 12/14] feat: improve logging and handling of class transformations in ClassFileLoadHook --- .../com/epam/drill/agent/jvmti/ClassFileLoadHook.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt index 6b94d66c..affe5f93 100644 --- a/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt +++ b/java-agent/src/nativeMain/kotlin/com/epam/drill/agent/jvmti/ClassFileLoadHook.kt @@ -49,8 +49,6 @@ object ClassFileLoadHook { val kClassName = clsName?.toKString() ?: return val kClassData = classData ?: return - - val precheckedTransformers = TransformerRegistrar.enabledTransformers .filterNot { kClassName.startsWith(DRILL_PACKAGE) } .filter { it.precheck(kClassName, loader, protectionDomain) } @@ -78,12 +76,15 @@ object ClassFileLoadHook { runCatching { transformer.transform(kClassName, bytes, loader, protectionDomain) }.onFailure { - logger.error(it) { "Can't transform class: $kClassName with ${transformer::class}" } - }.getOrDefault(bytes) + logger.warn(it) { "Can't transform class: $kClassName with ${transformer::class.simpleName}" } + }.getOrNull() + ?.takeIf { it !== bytes } + ?.also { + logger.debug { "$kClassName was transformed by ${transformer::class.simpleName}" } + } ?: bytes } if (newClassBytes !== oldClassBytes) { - logger.debug { "$kClassName transformed" } totalTransformClass.addAndGet(1).takeIf { it % 100 == 0 }?.let { logger.debug { "At least $it classes were transformed" } } From faaf6242293ef25ce8c1ade87d3670ad10340195 Mon Sep 17 00:00:00 2001 From: iryabov Date: Wed, 3 Sep 2025 18:11:11 +0200 Subject: [PATCH 13/14] fix: enhance package validation regex to allow optional negation --- .../epam/drill/agent/configuration/ValidationBuilderTest.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/java-agent/src/nativeTest/kotlin/com/epam/drill/agent/configuration/ValidationBuilderTest.kt b/java-agent/src/nativeTest/kotlin/com/epam/drill/agent/configuration/ValidationBuilderTest.kt index 3aa04f01..51046185 100644 --- a/java-agent/src/nativeTest/kotlin/com/epam/drill/agent/configuration/ValidationBuilderTest.kt +++ b/java-agent/src/nativeTest/kotlin/com/epam/drill/agent/configuration/ValidationBuilderTest.kt @@ -146,6 +146,11 @@ class ValidationBuilderTest { assertTrue { validPackage.validate(SomeObject("/com/example")) is Invalid } } + @Test + fun `given exclamation sign ahead of package validator must be valid`() { + assertTrue { validPackage.validate(SomeObject("!com/example")) is Valid } + } + private val logLevel = Validation { SomeObject::strToList onEach { isValidLogLevel() From b684f1b3834280a8264f3d5a4adb166b587f1cb1 Mon Sep 17 00:00:00 2001 From: iryabov Date: Fri, 5 Sep 2025 14:49:08 +0200 Subject: [PATCH 14/14] feat: update sharedLibsRef to point to main branch --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 8550088d..1926729f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,7 +21,7 @@ apacheHttpClientVersion = 5.2.3 aesyDatasizeVersion = 1.0.0 bytebuddyVersion = 1.14.11 -sharedLibsRef = feature/enable-disable-transformers-EPMDJ-11058 +sharedLibsRef = main sharedLibsLocalPath = lib-jvm-shared nativeAgentLibName = drill-agent nativeAgentHookEnabled = false