Skip to content

Commit 4db31cf

Browse files
committed
TS-38628 Apply last PR to migrated codebase
1 parent 99d5fcc commit 4db31cf

File tree

2 files changed

+17
-18
lines changed

2 files changed

+17
-18
lines changed

agent/src/main/kotlin/com/teamscale/jacoco/agent/Agent.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,16 @@ import kotlin.time.toDuration
3030
* interval.
3131
*/
3232
class Agent(options: AgentOptions, instrumentation: Instrumentation?) : AgentBase(options) {
33-
/** Converts binary data to XML. */
34-
private val generator: JaCoCoXmlReportGenerator
3533

3634
/** Regular dump task. */
3735
private var timer: Timer? = null
3836

3937
/** Stores the XML files. */
4038
private val uploader = options.createUploader(instrumentation)
4139

42-
/** Constructor. */
4340
init {
4441
logger.info("Upload method: {}", uploader.describe())
4542
retryUnsuccessfulUploads(options, uploader)
46-
generator = JaCoCoXmlReportGenerator(
47-
options.classDirectoriesOrZips,
48-
options.locationIncludeFilter,
49-
options.duplicateClassFileBehavior,
50-
options.ignoreUncoveredClasses,
51-
LoggingUtils.wrap(logger)
52-
)
5343

5444
if (options.shouldDumpInIntervals()) {
5545
val period = options.dumpIntervalInMinutes.toDuration(DurationUnit.MINUTES).inWholeMilliseconds
@@ -131,9 +121,12 @@ class Agent(options: AgentOptions, instrumentation: Instrumentation?) : AgentBas
131121
}
132122

133123
/**
134-
* Dumps the current execution data, converts it, writes it to the output directory defined in [.options] and
124+
* Dumps the current execution data, converts it, writes it to the output directory defined in [options] and
135125
* uploads it if an uploader is configured. Logs any errors, never throws an exception.
126+
*
127+
* Synchronized because this can be triggered concurrently by the timer and by the HTTP /dump endpoint.
136128
*/
129+
@Synchronized
137130
override fun dumpReport() {
138131
logger.debug("Starting dump")
139132

@@ -155,6 +148,14 @@ class Agent(options: AgentOptions, instrumentation: Instrumentation?) : AgentBas
155148
return
156149
}
157150

151+
val generator = JaCoCoXmlReportGenerator(
152+
options.classDirectoriesOrZips,
153+
options.locationIncludeFilter,
154+
options.duplicateClassFileBehavior,
155+
options.ignoreUncoveredClasses,
156+
LoggingUtils.wrap(logger)
157+
)
158+
158159
try {
159160
benchmark("Generating the XML report") {
160161
val outputFile = options.createNewFileInOutputDirectory("jacoco", "xml")

agent/src/main/kotlin/com/teamscale/jacoco/agent/options/JacocoAgentOptionsBuilder.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ package com.teamscale.jacoco.agent.options
33
import com.teamscale.jacoco.agent.logging.LoggingUtils.getLogger
44
import com.teamscale.jacoco.agent.util.AgentUtils.agentDirectory
55
import com.teamscale.jacoco.agent.util.AgentUtils.mainTempDirectory
6-
import java.io.File
76
import java.io.IOException
87
import java.nio.file.Files
98
import java.nio.file.Path
10-
import java.util.function.Consumer
119

1210
/** Builder for the JaCoCo agent options string. */
1311
class JacocoAgentOptionsBuilder(private val agentOptions: AgentOptions) {
@@ -30,11 +28,11 @@ class JacocoAgentOptionsBuilder(private val agentOptions: AgentOptions) {
3028
val needsClassFiles =
3129
agentOptions.mode == EMode.NORMAL || agentOptions.testwiseCoverageMode != ETestwiseCoverageMode.EXEC_FILE
3230
if (agentOptions.classDirectoriesOrZips.isEmpty() && needsClassFiles) {
33-
val tempDir = createTemporaryDumpDirectory()
34-
tempDir.toFile().deleteOnExit()
35-
builder.append(",classdumpdir=").append(tempDir.toAbsolutePath())
31+
val classDumpDirectory = createTemporaryDumpDirectory()
32+
classDumpDirectory.toFile().deleteOnExit()
33+
builder.append(",classdumpdir=").append(classDumpDirectory.toAbsolutePath())
3634

37-
agentOptions.classDirectoriesOrZips = mutableListOf(tempDir.toFile())
35+
agentOptions.classDirectoriesOrZips = mutableListOf(classDumpDirectory.toFile())
3836
}
3937

4038
agentOptions.additionalJacocoOptions.forEach { pair ->
@@ -59,7 +57,7 @@ class JacocoAgentOptionsBuilder(private val agentOptions: AgentOptions) {
5957
}
6058

6159
try {
62-
return Files.createTempDirectory(agentOptions.outputDirectory, "jacoco-class-dump")
60+
return Files.createTempDirectory(agentOptions.outputDirectory!!, "jacoco-class-dump")
6361
} catch (_: IOException) {
6462
logger.warn("Unable to create temporary directory in output directory. Trying in agent's directory.")
6563
}

0 commit comments

Comments
 (0)