Skip to content

Commit 1facf59

Browse files
author
David Grieve
committed
add end-to-end diagnostic command test
1 parent dc92f02 commit 1facf59

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

jfr-connection/src/test/java/io/opentelemetry/contrib/jfr/connection/FlightRecorderDiagnosticCommandConnectionTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@
77

88
import static org.junit.jupiter.api.Assertions.assertEquals;
99
import static org.junit.jupiter.api.Assertions.assertThrows;
10+
import static org.junit.jupiter.api.Assertions.fail;
1011
import static org.mockito.ArgumentMatchers.any;
1112
import static org.mockito.ArgumentMatchers.anyString;
1213
import static org.mockito.Mockito.mock;
1314
import static org.mockito.Mockito.when;
1415

1516
import java.lang.management.ManagementFactory;
17+
import java.nio.file.Files;
18+
import java.nio.file.Path;
1619
import javax.management.MBeanServer;
1720
import javax.management.MBeanServerConnection;
1821
import javax.management.ObjectName;
@@ -73,6 +76,36 @@ void startRecordingParsesIdCorrectly() throws Exception {
7376
assertEquals(id, 99);
7477
}
7578

79+
@Test
80+
void endToEndTest() throws Exception {
81+
82+
MBeanServerConnection mBeanServer = ManagementFactory.getPlatformMBeanServer();
83+
FlightRecorderConnection flightRecorderConnection =
84+
FlightRecorderDiagnosticCommandConnection.connect(mBeanServer);
85+
RecordingOptions recordingOptions =
86+
new RecordingOptions.Builder().disk("true").duration("5s").build();
87+
RecordingConfiguration recordingConfiguration = RecordingConfiguration.PROFILE_CONFIGURATION;
88+
Path tempFile = Files.createTempFile("recording", ".jfr");
89+
90+
try (Recording recording =
91+
flightRecorderConnection.newRecording(recordingOptions, recordingConfiguration)) {
92+
93+
recording.start();
94+
try {
95+
Thread.sleep(1000);
96+
} catch (InterruptedException e) {
97+
Thread.currentThread().interrupt();
98+
}
99+
recording.dump(tempFile.toString());
100+
recording.stop();
101+
} finally {
102+
if (!Files.exists(tempFile)) {
103+
fail("Recording file not found");
104+
}
105+
Files.deleteIfExists(tempFile);
106+
}
107+
}
108+
76109
MBeanServerConnection mockMbeanServer(
77110
ObjectName objectName, String vmCheckCommercialFeaturesResponse) throws Exception {
78111
MBeanServerConnection mBeanServerConnection = mock(MBeanServerConnection.class);

0 commit comments

Comments
 (0)