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
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,4 @@ kotlin.native.ignoreDisabledTargets = true
kotlin.native.cacheKind = none
kotlin.mpp.stability.nowarn = true
kotlin.mpp.enableCInteropCommonization = true
kotlin.mpp.applyDefaultHierarchyTemplate=false
kotlin.mpp.applyDefaultHierarchyTemplate=false
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
package com.epam.drill.agent

import com.epam.drill.agent.common.configuration.AgentConfiguration
import com.epam.drill.agent.common.configuration.AgentMetadata
import com.epam.drill.agent.common.configuration.AgentParameterDefinitionCollection
import com.epam.drill.agent.common.configuration.BaseAgentParameterDefinition
import com.epam.drill.agent.common.transport.AgentMessage
import com.epam.drill.agent.common.transport.AgentMessageDestination
import com.epam.drill.agent.configuration.AgentParameterValidationError
import com.epam.drill.agent.configuration.AgentParametersValidator
Expand Down Expand Up @@ -83,7 +83,7 @@ fun main(args: Array<String>) {
sslTruststorePass = configuration.parameters[ParameterDefinitions.SSL_TRUSTSTORE_PASSWORD] ?: "",
gzipCompression = configuration.parameters[ParameterDefinitions.USE_GZIP_COMPRESSION],
)
val serializer = JsonAgentMessageSerializer<AgentMessage>()
val serializer = JsonAgentMessageSerializer()
val mapper = HttpAgentMessageDestinationMapper()
val sender = SimpleAgentMessageSender(transport, serializer, mapper)
val test2Code = Test2Code(
Expand All @@ -92,7 +92,7 @@ fun main(args: Array<String>) {
sender = sender,
configuration = configuration
)
sender.send(AgentMessageDestination("PUT", "builds"), configuration.agentMetadata)
sender.send(AgentMessageDestination("PUT", "builds"), configuration.agentMetadata, AgentMetadata.serializer())
test2Code.scanAndSendMetadataClasses()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package com.epam.drill.agent.transport

import com.epam.drill.agent.common.configuration.AgentMetadata
import java.io.File
import io.aesy.datasize.ByteUnit
import io.aesy.datasize.DataSize
Expand All @@ -26,26 +27,29 @@ import com.epam.drill.agent.transport.http.HttpAgentMessageTransport
import com.epam.drill.agent.common.transport.AgentMessage
import com.epam.drill.agent.common.transport.AgentMessageDestination
import com.epam.drill.agent.common.transport.AgentMessageSender
import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.KSerializer

actual object JvmModuleMessageSender : AgentMessageSender<AgentMessage> {
actual object JvmModuleMessageSender : AgentMessageSender {

private const val QUEUE_DEFAULT_SIZE: Long = 512L * 1024 * 1024

private val logger = KotlinLogging.logger {}
private val messageSender = messageSender()

override fun send(destination: AgentMessageDestination, message: AgentMessage) =
messageSender.send(destination, message)
override fun <T> send(destination: AgentMessageDestination, message: T, serializer: KSerializer<T>) =
messageSender.send(destination, message, serializer)

actual fun sendAgentMetadata() {
messageSender.send(AgentMessageDestination("PUT", "instances"), Configuration.agentMetadata)
messageSender.send(AgentMessageDestination("PUT", "instances"), Configuration.agentMetadata, AgentMetadata.serializer())
}

override fun shutdown() {
messageSender.shutdown()
}

private fun messageSender(): QueuedAgentMessageSender<AgentMessage> {
@OptIn(InternalSerializationApi::class)
private fun messageSender(): QueuedAgentMessageSender {
val transport = HttpAgentMessageTransport(
serverAddress = Configuration.parameters[ParameterDefinitions.API_URL],
apiKey = Configuration.parameters[ParameterDefinitions.API_KEY] ?: "",
Expand All @@ -55,8 +59,8 @@ actual object JvmModuleMessageSender : AgentMessageSender<AgentMessage> {
gzipCompression = Configuration.parameters[ParameterDefinitions.USE_GZIP_COMPRESSION],
)
val serializer = takeIf { Configuration.parameters[ParameterDefinitions.USE_PROTOBUF_SERIALIZER] }?.let {
ProtoBufAgentMessageSerializer<AgentMessage>()
} ?: JsonAgentMessageSerializer<AgentMessage>()
ProtoBufAgentMessageSerializer()
} ?: JsonAgentMessageSerializer()
val mapper = HttpAgentMessageDestinationMapper()
val queue = InMemoryAgentMessageQueue(
capacity = Configuration.parameters[ParameterDefinitions.MESSAGE_QUEUE_LIMIT].let(::parseBytes),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import com.epam.drill.agent.jvmapi.gen.GetMethodID
import com.epam.drill.agent.jvmapi.gen.jclass
import com.epam.drill.agent.jvmapi.gen.jobject
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.serialization.KSerializer

@OptIn(ExperimentalForeignApi::class)
open class GenericAgentModule(
Expand Down Expand Up @@ -58,8 +59,8 @@ open class GenericAgentModule(
override fun invoke() = throw NotImplementedError()
}

private class NopMessageSender : AgentMessageSender<AgentMessage> {
override fun send(destination: AgentMessageDestination, message: AgentMessage) = throw NotImplementedError()
private class NopMessageSender : AgentMessageSender {
override fun <T> send(destination: AgentMessageDestination, message: T, serializer: KSerializer<T>) = throw NotImplementedError()
}

private class NopConfiguration : AgentConfiguration {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import com.epam.drill.agent.common.configuration.AgentConfiguration
import com.epam.drill.agent.common.module.AgentModule
import com.epam.drill.agent.common.module.Instrumenter
import com.epam.drill.agent.common.request.RequestProcessor
import com.epam.drill.agent.common.transport.AgentMessage
import com.epam.drill.agent.common.transport.AgentMessageDestination
import com.epam.drill.agent.common.transport.AgentMessageSender
import com.epam.drill.agent.common.classloading.EntitySource
Expand All @@ -48,7 +47,7 @@ private const val DRILL_TEST_ID_HEADER = "drill-test-id"
class Test2Code(
id: String,
agentContext: AgentContext,
sender: AgentMessageSender<AgentMessage>,
sender: AgentMessageSender,
configuration: AgentConfiguration
) : AgentModule(id, agentContext, sender, configuration), Instrumenter, ClassScanner, RequestProcessor {

Expand Down Expand Up @@ -169,7 +168,7 @@ class Test2Code(
methods = methods
)
logger.debug { "sendClassMetadata: Sending methods: $message" }
sender.send(classMetadataDestination, message)
sender.send(classMetadataDestination, message, ClassMetadata.serializer())
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import com.epam.drill.agent.common.transport.AgentMessageSender
import com.epam.drill.agent.test2code.common.api.ClassCoverage
import com.epam.drill.agent.test2code.common.api.toBitSet
import com.epam.drill.agent.test2code.common.transport.CoveragePayload
import kotlinx.serialization.KSerializer

interface CoverageSender {
fun startSendingCoverage()
Expand All @@ -35,7 +36,7 @@ class IntervalCoverageSender(
private val instanceId: String,
private val intervalMs: Long,
private val pageSize: Int,
private val sender: AgentMessageSender<in CoveragePayload> = StubSender(),
private val sender: AgentMessageSender = StubSender(),
private val collectProbes: () -> Sequence<ExecDatum> = { emptySequence() }
) : CoverageSender {
private val scheduledThreadPool = Executors.newSingleThreadScheduledExecutor()
Expand Down Expand Up @@ -76,11 +77,11 @@ class IntervalCoverageSender(
testSessionId = it.sessionId,
probes = it.probes.values.toBitSet()) }
.chunked(pageSize)
.forEach { sender.send(destination, CoveragePayload(groupId, appId, instanceId, it)) }
.forEach { sender.send(destination, CoveragePayload(groupId, appId, instanceId, it), CoveragePayload.serializer()) }
}

}

private class StubSender : AgentMessageSender<CoveragePayload> {
override fun send(destination: AgentMessageDestination, message: CoveragePayload) {}
private class StubSender : AgentMessageSender {
override fun <T> send(destination: AgentMessageDestination, message: T, serializer: KSerializer<T>) {}
}
Loading