Skip to content
Open
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
6 changes: 4 additions & 2 deletions tests/org.eclipse.ui.monitoring.tests/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Import-Package: org.junit.jupiter.api;version="[5.14.0,6.0.0)",
org.junit.jupiter.api.extension;version="[5.14.0,6.0.0)",
org.junit.jupiter.api.function;version="[5.14.0,6.0.0)",
org.junit.jupiter.engine;version="[5.14.0,6.0.0)",
org.junit.platform.suite.api;version="[1.14.0,2.0.0)"
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-SymbolicName: org.eclipse.ui.monitoring.tests;singleton:=true
Bundle-Vendor: %Bundle-Vendor
Bundle-Version: 1.3.0.qualifier
Fragment-Host: org.eclipse.ui.monitoring;bundle-version="1.0.0"
Require-Bundle: org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
org.eclipse.ui.workbench;bundle-version="[3.106.0,4.0.0)",
org.junit;bundle-version="[4.12.0,5.0.0)"
org.eclipse.ui.workbench;bundle-version="[3.106.0,4.0.0)"
Automatic-Module-Name: org.eclipse.ui.monitoring.tests
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
*******************************************************************************/
package org.eclipse.ui.internal.monitoring;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
Expand All @@ -30,8 +30,8 @@
import org.eclipse.ui.monitoring.PreferenceConstants;
import org.eclipse.ui.monitoring.StackSample;
import org.eclipse.ui.monitoring.UiFreezeEvent;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

/**
* JUnit test for the {@link DefaultUiFreezeEventLogger}.
Expand All @@ -45,7 +45,7 @@ public class DefaultLoggerTests {
private ThreadInfo thread;
private IStatus loggedStatus;

@Before
@BeforeEach
public void setUp() {
logger = new DefaultUiFreezeEventLogger(DURATION * 10);
createLogListener();
Expand All @@ -68,30 +68,31 @@ private UiFreezeEvent createFreezeEvent() {
}

@Test
public void testLogEvent() {
UiFreezeEvent event = createFreezeEvent();
String expectedTime = dateFormat.format(new Date(TIME).toInstant());
String expectedHeader =
String.format("UI freeze of %.2gs at %s", DURATION / 1000.0, expectedTime);
String expectedEventMessage = String.format("Sample at %s (+%.3fs)", expectedTime, 0.000);
void testLogEvent() {
UiFreezeEvent event = createFreezeEvent();
String expectedTime = dateFormat.format(new Date(TIME).toInstant());
String expectedHeader =
String.format("UI freeze of %.2gs at %s", DURATION / 1000.0, expectedTime);
String expectedEventMessage = String.format("Sample at %s (+%.3fs)", expectedTime, 0.000);

logger.log(event);
logger.log(event);

assertEquals(PreferenceConstants.PLUGIN_ID, loggedStatus.getPlugin());
assertTrue("Logged status was not a MultiStatus", loggedStatus.isMultiStatus());
assertEquals(expectedHeader, loggedStatus.getMessage());
assertEquals("One nested IStatus did not get logged correctly.", 1,
loggedStatus.getChildren().length);
assertEquals(PreferenceConstants.PLUGIN_ID, loggedStatus.getPlugin());
assertTrue(loggedStatus.isMultiStatus(), "Logged status was not a MultiStatus");
assertEquals(expectedHeader, loggedStatus.getMessage());
assertEquals(1, loggedStatus.getChildren().length,
"One nested IStatus did not get logged correctly.");

IStatus freezeEvent = loggedStatus.getChildren()[0];
assertTrue(freezeEvent.getMessage().contains(expectedEventMessage));
IStatus freezeEvent = loggedStatus.getChildren()[0];
assertTrue(freezeEvent.getMessage().contains(expectedEventMessage));

StackTraceElement[] threadStackTrace = thread.getStackTrace();
StackTraceElement[] loggedStackTrace = freezeEvent.getException().getStackTrace();
assertEquals(threadStackTrace.length, loggedStackTrace.length);
StackTraceElement[] threadStackTrace = thread.getStackTrace();
StackTraceElement[] loggedStackTrace = freezeEvent.getException().getStackTrace();
assertEquals(threadStackTrace.length, loggedStackTrace.length);

for (int i = 0; i < threadStackTrace.length; i++) {
assertEquals(threadStackTrace[i], loggedStackTrace[i]);
}
for (int i = 0; i < threadStackTrace.length; i++) {
assertEquals(threadStackTrace[i], loggedStackTrace[i]);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@
*******************************************************************************/
package org.eclipse.ui.internal.monitoring;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
Expand All @@ -35,9 +36,9 @@
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.monitoring.PreferenceConstants;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

/**
* A test that measures performance overhead of {@link EventLoopMonitorThread}.
Expand Down Expand Up @@ -111,12 +112,12 @@ public class EventLoopMonitorThreadManualTests {
*/
protected static final long PN63_GENERATOR_POLY = (3L << 62) | 1;

@Before
@BeforeEach
public void setUp() {
MonitoringPlugin.getPreferenceStore().setValue(PreferenceConstants.MONITORING_ENABLED, false);
}

@After
@AfterEach
public void tearDown() {
MonitoringPlugin.getPreferenceStore().setToDefault(PreferenceConstants.MONITORING_ENABLED);
}
Expand Down Expand Up @@ -163,7 +164,7 @@ protected static long doWork(long pnSeqeuence, long iterations) {
@Test
public void testFixedWork() throws Exception{
final Display display = Display.getDefault();
assertNotNull("No SWT Display available.", display);
assertNotNull(display, "No SWT Display available.");

final MockUiFreezeEventLogger logger = new MockUiFreezeEventLogger();
final CountDownLatch backgroundJobsDone = new CountDownLatch(1);
Expand Down Expand Up @@ -246,13 +247,18 @@ public void testFixedWork() throws Exception{
maxRelativeIncreaseOneStackAllowed * 100));
}
assertTrue(
String.format("""
Relative overhead of monitoring surpassed threshold for
measurement %d of %d. It took %.3fs with a relative increase of %.3f%%
(allowed < %.3f%%).""",
i, NUM_UI_STACK_MEASUREMENTS, tWork[0] / 1e9, relativeDiffOneThread * 100,
maxRelativeIncreaseOneStackAllowed * 100),
relativeDiffOneThread <= maxRelativeIncreaseOneStackAllowed);
relativeDiffOneThread <= maxRelativeIncreaseOneStackAllowed,
String.format("""
Relative overhead of monitoring surpassed threshold for \
measurement %d of %d. It took %.3fs with a relative increase of %.3f%% \
(allowed < %.3f%%).""",
i,
NUM_UI_STACK_MEASUREMENTS,
tWork[0] / 1e9,
relativeDiffOneThread * 100,
maxRelativeIncreaseOneStackAllowed * 100)
);

}
killMonitorThread(monitor1, display);

Expand All @@ -277,13 +283,19 @@ public void testFixedWork() throws Exception{
i, NUM_ALL_STACKS_MEASUREMENTS, tWork[0] / 1e9, relativeDiffAllThreads * 100,
maxRelativeIncreaseAllStacksAllowed * 100));
}
assertTrue(String.format("""
Relative overhead of monitoring with stack traces of all threads
surpassed threshold for measurement %d of %d. It took %.3fs with a relative
increase of %.3f%% (allowed < %.3f%%).""",
i, NUM_ALL_STACKS_MEASUREMENTS, tWork[0] / 1e9, relativeDiffAllThreads * 100,
maxRelativeIncreaseAllStacksAllowed * 100),
relativeDiffAllThreads <= maxRelativeIncreaseAllStacksAllowed);
assertTrue(
relativeDiffAllThreads <= maxRelativeIncreaseAllStacksAllowed,
String.format("""
Relative overhead of monitoring with stack traces of all threads \
surpassed threshold for measurement %d of %d. It took %.3fs with a relative \
increase of %.3f%% (allowed < %.3f%%).""",
i,
NUM_ALL_STACKS_MEASUREMENTS,
tWork[0] / 1e9,
relativeDiffAllThreads * 100,
maxRelativeIncreaseAllStacksAllowed * 100)
);

}
killMonitorThread(monitor2, display);

Expand Down Expand Up @@ -376,22 +388,30 @@ public void testFixedWork() throws Exception{
threads.offer(t); // Retry.
}
}

assertEquals("Did not log expected number of freeze events,",
assertEquals(
NUM_UI_STACK_MEASUREMENTS + NUM_ALL_STACKS_MEASUREMENTS,
logger.getLoggedEvents().size());
assertTrue(String.format("""
Relative overhead of monitoring with stack traces of the UI
thread was %.3f%% (allowed < %.3f%%).""",
worstRelativeDiffOneThread * 100,
maxRelativeIncreaseOneStackAllowed * 100),
worstRelativeDiffOneThread <= maxRelativeIncreaseOneStackAllowed);
assertTrue(String.format("""
Relative overhead of monitoring with stack traces of all
threads was %.3f%% (allowed < %.3f%%).""",
worstRelativeDiffAllThreads * 100,
maxRelativeIncreaseAllStacksAllowed * 100),
worstRelativeDiffAllThreads <= maxRelativeIncreaseAllStacksAllowed);
logger.getLoggedEvents().size(),
"Did not log expected number of freeze events."
);

assertTrue(
worstRelativeDiffOneThread <= maxRelativeIncreaseOneStackAllowed,
String.format("""
Relative overhead of monitoring with stack traces of the UI \
thread was %.3f%% (allowed < %.3f%%).""",
worstRelativeDiffOneThread * 100,
maxRelativeIncreaseOneStackAllowed * 100)
);

assertTrue(
worstRelativeDiffAllThreads <= maxRelativeIncreaseAllStacksAllowed,
String.format("""
Relative overhead of monitoring with stack traces of all \
threads was %.3f%% (allowed < %.3f%%).""",
worstRelativeDiffAllThreads * 100,
maxRelativeIncreaseAllStacksAllowed * 100)
);

}

private Thread createAndStartMonitoringThread(Display display, boolean dumpAll) throws Exception {
Expand Down
Loading
Loading