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
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,36 @@
package com.epam.drill.agent.configuration

import com.epam.drill.agent.common.configuration.AgentParameterDefinition
import com.epam.drill.agent.common.configuration.AgentParameterDefinitionCollection
import com.epam.drill.agent.common.configuration.NullableAgentParameterDefinition

object ParameterDefinitions {
object ParameterDefinitions: AgentParameterDefinitionCollection() {

val API_URL = AgentParameterDefinition.forString(name = "apiUrl", parser = { if (!it.endsWith("/")) "$it/" else it } )
val API_KEY = AgentParameterDefinition.forString(name = "apiKey")
val MESSAGE_QUEUE_LIMIT = AgentParameterDefinition.forString(name = "messageQueueLimit", defaultValue = "512Mb")
val MESSAGE_MAX_RETRIES = AgentParameterDefinition.forInt(name = "messageMaxRetries", defaultValue = Int.MAX_VALUE)
val SSL_TRUSTSTORE = AgentParameterDefinition.forString(name = "sslTruststore")
val SSL_TRUSTSTORE_PASSWORD = AgentParameterDefinition.forString(name = "sslTruststorePassword")
val LOG_LEVEL = AgentParameterDefinition.forString(name = "logLevel", defaultValue = "INFO")
val LOG_FILE = AgentParameterDefinition.forString(name = "logFile")
val LOG_LIMIT = AgentParameterDefinition.forInt(name = "logLimit", defaultValue = 512)
val IS_WEB_APP = AgentParameterDefinition.forBoolean(name = "isWebApp")
val IS_KAFKA = AgentParameterDefinition.forBoolean(name = "isKafka")
val IS_CADENCE = AgentParameterDefinition.forBoolean(name = "isCadence")
val IS_TLS_APP = AgentParameterDefinition.forBoolean(name = "isTlsApp")
val IS_ASYNC_APP = AgentParameterDefinition.forBoolean(name = "isAsyncApp")
val IS_COMPATIBILITY_TESTS = AgentParameterDefinition.forBoolean(name = "isCompatibilityTests", defaultValue = false)
val USE_PROTOBUF_SERIALIZER = AgentParameterDefinition.forBoolean(name = "useProtobufSerializer", defaultValue = true)
val USE_GZIP_COMPRESSION = AgentParameterDefinition.forBoolean(name = "useGzipCompression", defaultValue = true)
val IS_WS_MESSAGES = AgentParameterDefinition.forBoolean(name = "isWsMsg", defaultValue = true)
val API_URL = AgentParameterDefinition.forString(
name = "apiUrl",
description = "URL to Drill4J Backend /api endpoint. Example: http://localhost:8090/api",
parser = { if (!it.endsWith("/")) "$it/" else it },
validator = { validTransportUrl() }).register()
val API_KEY = NullableAgentParameterDefinition.forString(
name = "apiKey",
description = "Drill4J API key. It is recommended to set it with DRILL_API_KEY env variable, rather than using command line argument"
).register()
val MESSAGE_QUEUE_LIMIT = AgentParameterDefinition.forString(name = "messageQueueLimit", defaultValue = "512Mb").register()
val MESSAGE_MAX_RETRIES = AgentParameterDefinition.forInt(name = "messageMaxRetries", defaultValue = Int.MAX_VALUE).register()
val SSL_TRUSTSTORE = NullableAgentParameterDefinition.forString(name = "sslTruststore").register()
val SSL_TRUSTSTORE_PASSWORD = NullableAgentParameterDefinition.forString(name = "sslTruststorePassword").register()
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()
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,24 @@
package com.epam.drill.agent

import com.epam.drill.agent.common.configuration.AgentConfiguration
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.AgentMetadataValidator
import com.epam.drill.agent.configuration.AgentParameterValidationError
import com.epam.drill.agent.configuration.AgentParametersValidator
import com.epam.drill.agent.configuration.DefaultAgentConfiguration
import com.epam.drill.agent.configuration.DefaultParameterDefinitions
import com.epam.drill.agent.configuration.ParameterDefinitions
import com.epam.drill.agent.logging.LoggingConfiguration
import com.epam.drill.agent.test2code.Test2Code
import com.epam.drill.agent.test2code.configuration.ParametersValidator
import com.epam.drill.agent.test2code.configuration.Test2CodeParameterDefinitions
import com.epam.drill.agent.transport.HttpAgentMessageDestinationMapper
import com.epam.drill.agent.transport.JsonAgentMessageSerializer
import com.epam.drill.agent.transport.SimpleAgentMessageSender
import com.epam.drill.agent.transport.http.HttpAgentMessageTransport
import java.io.File
import kotlin.system.exitProcess
import kotlin.takeIf

fun main(args: Array<String>) {
Expand All @@ -46,27 +50,37 @@ fun main(args: Array<String>) {
.filterValues { !it.isNullOrEmpty() }
.mapKeys { toParameterName(it) }
val configuration = DefaultAgentConfiguration(envMap + argsMap)
AgentMetadataValidator.validate(configuration.parameters)
ParametersValidator.validate(configuration.parameters)
val definitions = collectAgentParameterDefinitions(
DefaultParameterDefinitions,
ParameterDefinitions,
Test2CodeParameterDefinitions
)
val validator = AgentParametersValidator(configuration.parameters)
try {
validator.validate(*definitions.toTypedArray()) }
catch (e: AgentParameterValidationError) {
println(e.message)
exitProcess(1)
}

val commitSha = configuration.parameters[DefaultParameterDefinitions.COMMIT_SHA]
val buildVersion = configuration.parameters[DefaultParameterDefinitions.BUILD_VERSION]
if (commitSha == null && buildVersion == null) {
throw IllegalArgumentException("Either commitSha or buildVersion must be provided")
}

configuration.parameters[ParameterDefinitions.LOG_LEVEL].takeIf { it.isNotEmpty() }
?.let(LoggingConfiguration::setLoggingLevels)
configuration.parameters[ParameterDefinitions.LOG_FILE].takeIf { it.isNotEmpty() }
configuration.parameters[ParameterDefinitions.LOG_LEVEL]
.let(LoggingConfiguration::setLoggingLevels)
configuration.parameters[ParameterDefinitions.LOG_FILE]
?.let(LoggingConfiguration::setLoggingFilename)
configuration.parameters[ParameterDefinitions.LOG_LIMIT].let(LoggingConfiguration::setLogMessageLimit)

val transport = HttpAgentMessageTransport(
serverAddress = configuration.parameters[ParameterDefinitions.API_URL],
apiKey = configuration.parameters[ParameterDefinitions.API_KEY],
sslTruststore = configuration.parameters[ParameterDefinitions.SSL_TRUSTSTORE].takeIf(String::isNotEmpty)
apiKey = configuration.parameters[ParameterDefinitions.API_KEY] ?: "",
sslTruststore = configuration.parameters[ParameterDefinitions.SSL_TRUSTSTORE]
?.let { resolvePath(configuration, it) } ?: "",
sslTruststorePass = configuration.parameters[ParameterDefinitions.SSL_TRUSTSTORE_PASSWORD],
sslTruststorePass = configuration.parameters[ParameterDefinitions.SSL_TRUSTSTORE_PASSWORD] ?: "",
gzipCompression = configuration.parameters[ParameterDefinitions.USE_GZIP_COMPRESSION],
)
val serializer = JsonAgentMessageSerializer<AgentMessage>()
Expand Down Expand Up @@ -96,4 +110,9 @@ internal fun toParameterName(entry: Map.Entry<String, String>) = entry.key
.lowercase()
.split("_")
.joinToString("") { it.replaceFirstChar(Char::uppercase) }
.replaceFirstChar(Char::lowercase)
.replaceFirstChar(Char::lowercase)

private fun collectAgentParameterDefinitions(vararg collections: AgentParameterDefinitionCollection): List<BaseAgentParameterDefinition<*>> {
return collections.flatMap { it.getAll() }

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ actual object JvmModuleMessageSender : AgentMessageSender<AgentMessage> {
private fun messageSender(): QueuedAgentMessageSender<AgentMessage> {
val transport = HttpAgentMessageTransport(
serverAddress = Configuration.parameters[ParameterDefinitions.API_URL],
apiKey = Configuration.parameters[ParameterDefinitions.API_KEY],
sslTruststore = Configuration.parameters[ParameterDefinitions.SSL_TRUSTSTORE].takeIf(String::isNotEmpty)
apiKey = Configuration.parameters[ParameterDefinitions.API_KEY] ?: "",
sslTruststore = Configuration.parameters[ParameterDefinitions.SSL_TRUSTSTORE]
?.let(::resolvePath) ?: "",
sslTruststorePass = Configuration.parameters[ParameterDefinitions.SSL_TRUSTSTORE_PASSWORD],
sslTruststorePass = Configuration.parameters[ParameterDefinitions.SSL_TRUSTSTORE_PASSWORD] ?: "",
gzipCompression = Configuration.parameters[ParameterDefinitions.USE_GZIP_COMPRESSION],
)
val serializer = takeIf { Configuration.parameters[ParameterDefinitions.USE_PROTOBUF_SERIALIZER] }?.let {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ object AgentLoggingConfiguration {

fun updateNativeLoggingConfiguration() {
val logLevel = Configuration.parameters[ParameterDefinitions.LOG_LEVEL]
val logFile = Configuration.parameters[ParameterDefinitions.LOG_FILE].takeIf(String::isNotEmpty)
val logFile = Configuration.parameters[ParameterDefinitions.LOG_FILE]
val logLimit = Configuration.parameters[ParameterDefinitions.LOG_LIMIT]

LoggingConfiguration.setLoggingLevels(logLevel)
Expand All @@ -50,7 +50,7 @@ object AgentLoggingConfiguration {
@OptIn(ExperimentalForeignApi::class)
fun updateJvmLoggingConfiguration() {
val logLevel = Configuration.parameters[ParameterDefinitions.LOG_LEVEL]
val logFile = Configuration.parameters[ParameterDefinitions.LOG_FILE].takeIf(String::isNotEmpty)
val logFile = Configuration.parameters[ParameterDefinitions.LOG_FILE]
val logLimit = Configuration.parameters[ParameterDefinitions.LOG_LIMIT]

callObjectVoidMethodWithString(LoggingConfiguration::class, "setLoggingLevels", logLevel)
Expand Down
1 change: 1 addition & 0 deletions test2code/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ dependencies {
implementation("io.github.microutils:kotlin-logging-jvm:$microutilsLoggingVersion")

implementation(project(":common"))
implementation(project(":agent-config"))
implementation(project(":test2code-common"))
implementation(project(":test2code-jacoco"))
implementation(project(":konform"))
Expand Down
Loading
Loading