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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions java-agent/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,7 @@ 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 =
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()
}
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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<String?>
): Boolean = ClassSource(className, superName ?: "")
.prefixMatches(Configuration.agentMetadata.packagesPrefixes)

override fun transform(
className: String,
classFileBuffer: ByteArray,
loader: Any?,
protectionDomain: Any?
): ByteArray = JvmModuleStorage.values()
.filterIsInstance<Instrumenter>()
.fold(classFileBuffer) { bytes, plugin ->
plugin.instrument(className, bytes) ?: bytes
}

override fun transform(className: String, ctClass: CtClass) {
throw UnsupportedOperationException("Use transform with ByteArray")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject

actual object ApacheHttpClientTransformer :
TransformerObject,
ApacheHttpClientTransformerObject(),
ApacheHttpClientTransformerObject(Configuration),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject

actual object JavaHttpClientTransformer :
TransformerObject,
JavaHttpClientTransformerObject(),
JavaHttpClientTransformerObject(Configuration),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject

actual object OkHttp3ClientTransformer :
TransformerObject,
OkHttp3ClientTransformerObject(),
OkHttp3ClientTransformerObject(Configuration),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
HeadersProcessor by DefaultHeadersProcessor,
PayloadProcessor by DefaultPayloadProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
HeadersProcessor by DefaultHeadersProcessor,
PayloadProcessor by DefaultPayloadProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
HeadersProcessor by DefaultHeadersProcessor,
PayloadProcessor by DefaultPayloadProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -24,6 +25,6 @@ import com.epam.drill.agent.request.HeadersRetriever

actual object NettyHttpServerTransformer :
TransformerObject,
NettyHttpServerTransformerObject(HeadersRetriever),
NettyHttpServerTransformerObject(HeadersRetriever, Configuration),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject

actual object NettyWsClientTransformer :
TransformerObject,
NettyWsClientTransformerObject(),
NettyWsClientTransformerObject(Configuration),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -25,7 +26,7 @@ import com.epam.drill.agent.instrument.TransformerObject

actual object NettyWsMessagesTransformer :
TransformerObject,
NettyWsMessagesTransformerObject(),
NettyWsMessagesTransformerObject(Configuration),
HeadersProcessor by DefaultHeadersProcessor,
PayloadProcessor by DefaultPayloadProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject

actual object NettyWsServerTransformer :
TransformerObject,
NettyWsServerTransformerObject(),
NettyWsServerTransformerObject(Configuration),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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),
com.epam.drill.agent.common.request.RequestHolder by DrillRequestHolder,
ClassPathProvider by RuntimeClassPathProvider
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -23,6 +24,6 @@ import com.epam.drill.agent.instrument.TransformerObject

actual object CadenceTransformer :
TransformerObject,
CadenceTransformerObject(),
CadenceTransformerObject(Configuration),
HeadersProcessor by DefaultHeadersProcessor,
ClassPathProvider by RuntimeClassPathProvider
Loading
Loading