Skip to content

Commit ffa412c

Browse files
Added heap dump
1 parent b44cf56 commit ffa412c

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/src/previewTest/groovy/StructuredConcurrencyTest.groovy

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import com.sun.management.HotSpotDiagnosticMXBean
12
import datadog.trace.agent.test.AgentTestRunner
23
import datadog.trace.api.Trace
34

5+
import javax.management.MBeanServer
6+
import java.lang.management.ManagementFactory
47
import java.util.concurrent.Callable
58
import java.util.concurrent.Executors
69
import java.util.concurrent.ScheduledExecutorService
@@ -207,8 +210,13 @@ class StructuredConcurrencyTest extends AgentTestRunner {
207210
}
208211

209212
void start() {
213+
new File(outputDir, "${System.currentTimeMillis()}-start-mark.txt") << testName
214+
heapDump("initial")
215+
210216
task = scheduler.scheduleAtFixedRate({
211-
def reportFile = new File(outputDir, "thread-dump-${System.currentTimeMillis()}.log")
217+
heapDump("test")
218+
219+
def reportFile = new File(outputDir, "${System.currentTimeMillis()}-thread-dump.log")
212220
try (def writer = new FileWriter(reportFile)) {
213221
writer.write("=== Test: ${testName} ===\n")
214222
writer.write("=== Thread Dump Triggered at ${new Date()} ===\n")
@@ -218,7 +226,15 @@ class StructuredConcurrencyTest extends AgentTestRunner {
218226
}
219227
writer.write("==============================================\n")
220228
}
221-
}, 10001, 60001, TimeUnit.MILLISECONDS)
229+
}, 10000, 60000, TimeUnit.MILLISECONDS)
230+
}
231+
232+
void heapDump(String kind) {
233+
def heapDumpFile = new File(outputDir, "${System.currentTimeMillis()}-heap-dump-${kind}.hprof").absolutePath
234+
MBeanServer server = ManagementFactory.getPlatformMBeanServer()
235+
HotSpotDiagnosticMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(
236+
server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class)
237+
mxBean.dumpHeap(heapDumpFile, true)
222238
}
223239

224240
void stop() {

dd-java-agent/instrumentation/lettuce-4/src/test/groovy/Lettuce4ClientTestBase.groovy

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@ import com.lambdaworks.redis.RedisClient
33
import com.lambdaworks.redis.api.StatefulConnection
44
import com.lambdaworks.redis.api.async.RedisAsyncCommands
55
import com.lambdaworks.redis.api.sync.RedisCommands
6+
import com.sun.management.HotSpotDiagnosticMXBean
67
import datadog.trace.agent.test.naming.VersionedNamingTestBase
78
import datadog.trace.agent.test.utils.PortUtils
89
import redis.embedded.RedisServer
910
import spock.lang.Shared
1011

12+
import javax.management.MBeanServer
13+
import java.lang.management.ManagementFactory
1114
import java.util.concurrent.Executors
1215
import java.util.concurrent.ScheduledExecutorService
1316
import java.util.concurrent.ScheduledFuture
@@ -122,8 +125,13 @@ abstract class Lettuce4ClientTestBase extends VersionedNamingTestBase {
122125
}
123126

124127
void start() {
128+
new File(outputDir, "${System.currentTimeMillis()}-start-mark.txt") << testName
129+
heapDump("initial")
130+
125131
task = scheduler.scheduleAtFixedRate({
126-
def reportFile = new File(outputDir, "thread-dump-${System.currentTimeMillis()}.log")
132+
heapDump("test")
133+
134+
def reportFile = new File(outputDir, "${System.currentTimeMillis()}-thread-dump.log")
127135
try (def writer = new FileWriter(reportFile)) {
128136
writer.write("=== Test: ${testName} ===\n")
129137
writer.write("=== Thread Dump Triggered at ${new Date()} ===\n")
@@ -133,7 +141,15 @@ abstract class Lettuce4ClientTestBase extends VersionedNamingTestBase {
133141
}
134142
writer.write("==============================================\n")
135143
}
136-
}, 10001, 60000, TimeUnit.MILLISECONDS)
144+
}, 10000, 60000, TimeUnit.MILLISECONDS)
145+
}
146+
147+
void heapDump(String kind) {
148+
def heapDumpFile = new File(outputDir, "${System.currentTimeMillis()}-heap-dump-${kind}.hprof").absolutePath
149+
MBeanServer server = ManagementFactory.getPlatformMBeanServer()
150+
HotSpotDiagnosticMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(
151+
server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class)
152+
mxBean.dumpHeap(heapDumpFile, true)
137153
}
138154

139155
void stop() {

0 commit comments

Comments
 (0)