From 71124403fbf73afbad14068fc31c5052b91a3141 Mon Sep 17 00:00:00 2001 From: iryabov Date: Thu, 16 Jul 2026 17:35:45 +0200 Subject: [PATCH 1/2] feat: filter out tests with NOT_IMPACTED status when loading from file --- .../test/prioritization/RecommendedTestsReceiver.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/test/prioritization/RecommendedTestsReceiver.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/test/prioritization/RecommendedTestsReceiver.kt index 3aaa84f0..b6ab3a97 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/test/prioritization/RecommendedTestsReceiver.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/test/prioritization/RecommendedTestsReceiver.kt @@ -98,10 +98,12 @@ class RecommendedTestsReceiverImpl( logger.debug { "Loading tests to skip from file: $filePath" } return runCatching { val content = File(filePath).readText() - val entries = fileJson.decodeFromString(ListSerializer(TestDefinitionResponse.serializer()), content) - entries.map { it.toTestMethodInfo() }.also { - logger.info { "Loaded ${it.size} tests to skip from file: $filePath" } - } + fileJson.decodeFromString(ListSerializer(TestDefinitionResponse.serializer()), content) + .filter { it.impactStatus == "NOT_IMPACTED" } + .map { it.toTestMethodInfo() } + .also { + logger.info { "Loaded ${it.size} tests to skip from file: $filePath" } + } }.onFailure { logger.warn { "Unable to load tests to skip from file '$filePath'. Error message: $it" } }.getOrElse { From ca8abb1d64b95a4b0d5cd7f3074cdae60dffb571 Mon Sep 17 00:00:00 2001 From: iryabov Date: Mon, 27 Jul 2026 12:31:19 +0200 Subject: [PATCH 2/2] feat: add agent metadata fields to BuildPayload and InstancePayload --- .../agent/configuration/Configuration.kt | 3 ++ .../drill/agent/transport/BuildPayload.kt | 6 ++- .../drill/agent/transport/InstancePayload.kt | 4 ++ .../agent/transport/JvmModuleMessageSender.kt | 40 ++++++++++++++++++- 4 files changed, 50 insertions(+), 3 deletions(-) diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/configuration/Configuration.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/configuration/Configuration.kt index 99f699c4..372eb537 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/configuration/Configuration.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/configuration/Configuration.kt @@ -52,6 +52,9 @@ actual object Configuration : AgentConfiguration { actual override val parameters: AgentParameters get() = configuration.parameters + val inputParameters: Map + get() = configuration.inputParameters + actual fun initializeNative(agentOptions: String) { val environmentVariablesProvider = EnvironmentVariablesProvider() logger.debug { "initializeNative: Found environment variables: ${environmentVariablesProvider.configuration}" } diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/BuildPayload.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/BuildPayload.kt index 98a3cfdb..c6eef170 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/BuildPayload.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/BuildPayload.kt @@ -17,6 +17,7 @@ package com.epam.drill.agent.transport import com.epam.drill.agent.common.transport.AgentMessage import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject @Serializable class BuildPayload( @@ -27,5 +28,8 @@ class BuildPayload( val branch: String? = null, val commitDate: String? = null, val commitMessage: String? = null, - val commitAuthor: String? = null + val commitAuthor: String? = null, + val agentVersion: String? = null, + val agentEnvironment: JsonObject? = null, + val agentParams: JsonObject? = null ) : AgentMessage() \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/InstancePayload.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/InstancePayload.kt index e00724be..687a7c53 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/InstancePayload.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/InstancePayload.kt @@ -17,6 +17,7 @@ package com.epam.drill.agent.transport import com.epam.drill.agent.common.transport.AgentMessage import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject @Serializable class InstancePayload( @@ -26,4 +27,7 @@ class InstancePayload( val commitSha: String? = null, val buildVersion: String? = null, val envId: String? = null, + val agentVersion: String? = null, + val agentEnvironment: JsonObject? = null, + val agentParams: JsonObject? = null, ): AgentMessage() \ No newline at end of file diff --git a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/JvmModuleMessageSender.kt b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/JvmModuleMessageSender.kt index f5f7b4fc..ea9042f2 100644 --- a/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/JvmModuleMessageSender.kt +++ b/java-agent/src/jvmMain/kotlin/com/epam/drill/agent/transport/JvmModuleMessageSender.kt @@ -15,9 +15,18 @@ */ package com.epam.drill.agent.transport +import java.net.InetAddress +import com.epam.drill.agent.agentVersion import com.epam.drill.agent.configuration.Configuration import com.epam.drill.agent.common.transport.AgentMessageDestination import com.epam.drill.agent.common.transport.AgentMessageSender +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.JsonPrimitive +import mu.KotlinLogging + +private val logger = KotlinLogging.logger {} + +private val AGENT_PARAMS_FILTER = setOf("apiKey", "sslTruststorePassword", "apiUrl", "groupId", "appId", "instanceId", "commitSha", "buildVersion", "envId") actual object JvmModuleMessageSender : AgentMessageSender by DataIngestMessageSender { actual fun sendAgentMetadata() { @@ -29,7 +38,10 @@ actual object JvmModuleMessageSender : AgentMessageSender by DataIngestMessageSe instanceId = Configuration.agentMetadata.instanceId, commitSha = Configuration.agentMetadata.commitSha, buildVersion = Configuration.agentMetadata.buildVersion, - envId = Configuration.agentMetadata.envId + envId = Configuration.agentMetadata.envId, + agentVersion = agentVersion, + agentEnvironment = agentEnvironment(), + agentParams = agentParams() ), InstancePayload.serializer() ) @@ -42,9 +54,33 @@ actual object JvmModuleMessageSender : AgentMessageSender by DataIngestMessageSe groupId = Configuration.agentMetadata.groupId, appId = Configuration.agentMetadata.appId, commitSha = Configuration.agentMetadata.commitSha, - buildVersion = Configuration.agentMetadata.buildVersion + buildVersion = Configuration.agentMetadata.buildVersion, + agentVersion = agentVersion, + agentEnvironment = agentEnvironment(), + agentParams = agentParams() ), BuildPayload.serializer() ) } + + private fun agentParams(): JsonObject = JsonObject( + Configuration.inputParameters + .filterKeys { it !in AGENT_PARAMS_FILTER } + .mapValues { (_, value) -> JsonPrimitive(value) } + ) + + private fun agentEnvironment(): JsonObject = JsonObject( + buildMap { + put("osName", JsonPrimitive(System.getProperty("os.name"))) + put("osVersion", JsonPrimitive(System.getProperty("os.version"))) + put("osArch", JsonPrimitive(System.getProperty("os.arch"))) + put("javaVersion", JsonPrimitive(System.getProperty("java.version"))) + put("javaVendor", JsonPrimitive(System.getProperty("java.vendor"))) + put("host", JsonPrimitive(hostName())) + } + ) + + private fun hostName(): String? = runCatching { InetAddress.getLocalHost().hostName } + .onFailure { logger.debug(it) { "Unable to resolve local host name for agent environment." } } + .getOrNull() }