diff --git a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/CollatorPerformanceTest.java b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/CollatorPerformanceTest.java index e066ef89cbab..8627fbda2bf9 100644 --- a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/CollatorPerformanceTest.java +++ b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/CollatorPerformanceTest.java @@ -19,18 +19,20 @@ import java.util.Comparator; import org.eclipse.jface.util.Policy; -import org.eclipse.test.performance.PerformanceTestCaseJunit4; +import org.eclipse.test.performance.Performance; +import org.eclipse.test.performance.PerformanceMeter; import org.eclipse.ui.tests.performance.UIPerformanceTestRule; -import org.junit.ClassRule; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.extension.RegisterExtension; /** * @since 3.5 */ -public class CollatorPerformanceTest extends PerformanceTestCaseJunit4 { +public class CollatorPerformanceTest { - @ClassRule - public static final UIPerformanceTestRule uiPerformanceTestRule = new UIPerformanceTestRule(); + @RegisterExtension + static UIPerformanceTestRule uiPerformanceTestRule = new UIPerformanceTestRule(); private static final int ARRAYSIZE=100000; private static String[] fArray; @@ -43,16 +45,24 @@ public CollatorPerformanceTest() { * test Collator by sorting the array */ @Test - public void testCollator(){ + public void testCollator(TestInfo testInfo) { + Performance perf = Performance.getDefault(); + String scenarioId = this.getClass().getName() + "." + testInfo.getDisplayName(); + PerformanceMeter meter = perf.createPerformanceMeter(scenarioId); + Comparator comparator=Policy.getComparator(); - for (int i = 0; i < 15; i++) { - String[] array=fArray.clone(); - startMeasuring(); - Arrays.sort(array, comparator); - stopMeasuring(); + try { + for (int i = 0; i < 15; i++) { + String[] array=fArray.clone(); + meter.start(); + Arrays.sort(array, comparator); + meter.stop(); + } + meter.commit(); + perf.assertPerformance(meter); + } finally { + meter.dispose(); } - commitMeasurements(); - assertPerformance(); } /** diff --git a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/FileImageDescriptorTest.java b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/FileImageDescriptorTest.java index 96730d530e72..883b4b386d81 100644 --- a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/FileImageDescriptorTest.java +++ b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/FileImageDescriptorTest.java @@ -26,10 +26,12 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; -import org.eclipse.test.performance.PerformanceTestCaseJunit4; -import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule; -import org.junit.Rule; -import org.junit.Test; +import org.eclipse.test.performance.Performance; +import org.eclipse.test.performance.PerformanceMeter; +import org.eclipse.ui.tests.harness.util.CloseTestWindowsExtension; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.extension.RegisterExtension; import org.osgi.framework.Bundle; import org.osgi.framework.FrameworkUtil; @@ -37,10 +39,10 @@ * ComboViewerRefreshTest is a test of refreshes of difference size in the combo * viewer. */ -public class FileImageDescriptorTest extends PerformanceTestCaseJunit4 { +public class FileImageDescriptorTest { - @Rule - public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); + @RegisterExtension + CloseTestWindowsExtension closeTestWindows = new CloseTestWindowsExtension(); protected static final String IMAGES_DIRECTORY = "/icons/imagetests"; @@ -48,49 +50,57 @@ public class FileImageDescriptorTest extends PerformanceTestCaseJunit4 { * Test the time for doing a refresh. */ @Test - public void testRefresh() throws Throwable { + public void testRefresh(TestInfo testInfo) throws Throwable { - exercise(() -> { - Class missing = null; - ArrayList images = new ArrayList<>(); + Performance perf = Performance.getDefault(); + String scenarioId = this.getClass().getName() + "." + testInfo.getDisplayName(); + PerformanceMeter meter = perf.createPerformanceMeter(scenarioId); - Bundle bundle = FrameworkUtil.getBundle(getClass()); - Enumeration bundleEntries = bundle.getEntryPaths(IMAGES_DIRECTORY); + try { + exercise(() -> { + Class missing = null; + ArrayList images = new ArrayList<>(); + Bundle bundle = FrameworkUtil.getBundle(getClass()); + Enumeration bundleEntries = bundle.getEntryPaths(IMAGES_DIRECTORY); - while (bundleEntries.hasMoreElements()) { - ImageDescriptor descriptor; - String localImagePath = bundleEntries.nextElement(); - if (localImagePath.indexOf('.') < 0) - continue; + while (bundleEntries.hasMoreElements()) { + ImageDescriptor descriptor; + String localImagePath = bundleEntries.nextElement(); - URL[] files = FileLocator.findEntries(bundle, IPath.fromOSString(localImagePath)); + if (localImagePath.indexOf('.') < 0) + continue; - for (URL file : files) { - startMeasuring(); - descriptor = ImageDescriptor.createFromFile(missing, FileLocator.toFileURL(file).getFile()); + URL[] files = FileLocator.findEntries(bundle, IPath.fromOSString(localImagePath)); - for (int j = 0; j < 10; j++) { - Image image = descriptor.createImage(); - images.add(image); - } + for (URL file : files) { + meter.start(); + descriptor = ImageDescriptor.createFromFile(missing, FileLocator.toFileURL(file).getFile()); - processEvents(); - stopMeasuring(); + for (int j = 0; j < 10; j++) { + Image image = descriptor.createImage(); + images.add(image); + } - } + processEvents(); + meter.stop(); + + } - } + } - Iterator imageIterator = images.iterator(); - while (imageIterator.hasNext()) { - imageIterator.next().dispose(); - } - }, 20, 100, JFacePerformanceSuite.MAX_TIME); + Iterator imageIterator = images.iterator(); + while (imageIterator.hasNext()) { + imageIterator.next().dispose(); + } + }, 20, 100, JFacePerformanceSuite.MAX_TIME); - commitMeasurements(); - assertPerformance(); + meter.commit(); + perf.assertPerformance(meter); + } finally { + meter.dispose(); + } } } diff --git a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ListPopulationTest.java b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ListPopulationTest.java index 9874b1d99856..12765b01611e 100644 --- a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ListPopulationTest.java +++ b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ListPopulationTest.java @@ -22,19 +22,21 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Shell; -import org.eclipse.test.performance.PerformanceTestCaseJunit4; -import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule; -import org.junit.Rule; -import org.junit.Test; +import org.eclipse.test.performance.Performance; +import org.eclipse.test.performance.PerformanceMeter; +import org.eclipse.ui.tests.harness.util.CloseTestWindowsExtension; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.extension.RegisterExtension; /** * The ListPopulationTest is the test for simple * SWT lists. */ -public class ListPopulationTest extends PerformanceTestCaseJunit4 { +public class ListPopulationTest { - @Rule - public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); + @RegisterExtension + CloseTestWindowsExtension closeTestWindows = new CloseTestWindowsExtension(); List list; @@ -52,72 +54,89 @@ protected void openBrowser() { } @Test - public void testSmallAdd() throws Throwable { - addBench(100); + public void testSmallAdd(TestInfo testInfo) throws Throwable { + addBench(100, testInfo); } @Test - public void testSmallSetItems() throws Throwable { - setItemsBench(100); + public void testSmallSetItems(TestInfo testInfo) throws Throwable { + setItemsBench(100, testInfo); } @Test - public void testMediumAdd() throws Throwable { - addBench(5000); + public void testMediumAdd(TestInfo testInfo) throws Throwable { + addBench(5000, testInfo); } @Test - public void testMediumSetItems() throws Throwable { - setItemsBench(5000); + public void testMediumSetItems(TestInfo testInfo) throws Throwable { + setItemsBench(5000, testInfo); } @Test - public void testLargeAdd() throws Throwable { - addBench(50000); + public void testLargeAdd(TestInfo testInfo) throws Throwable { + addBench(50000, testInfo); } @Test - public void testLargeSetItems() throws Throwable { - setItemsBench(50000); + public void testLargeSetItems(TestInfo testInfo) throws Throwable { + setItemsBench(50000, testInfo); } /** * Test the time for adding elements using add. */ - public void addBench(int count) throws Throwable { + public void addBench(int count, TestInfo testInfo) throws Throwable { openBrowser(); final String [] items = getItems(count); - exercise(() -> { - list.removeAll(); - startMeasuring(); - for (String item : items) { - list.add(item); - } - processEvents(); - stopMeasuring(); - }); - - commitMeasurements(); - assertPerformance(); + Performance perf = Performance.getDefault(); + String scenarioId = this.getClass().getName() + "." + testInfo.getDisplayName(); + PerformanceMeter meter = perf.createPerformanceMeter(scenarioId); + + try { + exercise(() -> { + list.removeAll(); + meter.start(); + for (String item : items) { + list.add(item); + } + processEvents(); + meter.stop(); + }); + + meter.commit(); + perf.assertPerformance(meter); + } finally { + meter.dispose(); + } } /** * Test the time for adding elements using setItem. */ - public void setItemsBench(int count) throws Throwable { + public void setItemsBench(int count, TestInfo testInfo) throws Throwable { openBrowser(); final String [] items = getItems(count); - exercise(() -> { - list.removeAll(); - startMeasuring(); - list.setItems(items); - processEvents(); - stopMeasuring(); - }); - - commitMeasurements(); - assertPerformance(); + + Performance perf = Performance.getDefault(); + String scenarioId = this.getClass().getName() + "." + testInfo.getDisplayName(); + PerformanceMeter meter = perf.createPerformanceMeter(scenarioId); + + try { + exercise(() -> { + list.removeAll(); + meter.start(); + list.setItems(items); + processEvents(); + meter.stop(); + }); + + meter.commit(); + perf.assertPerformance(meter); + } finally { + meter.dispose(); + } } /** diff --git a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ProgressMonitorDialogPerformanceTest.java b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ProgressMonitorDialogPerformanceTest.java index ec89ecdebef1..22e966ac886b 100644 --- a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ProgressMonitorDialogPerformanceTest.java +++ b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ProgressMonitorDialogPerformanceTest.java @@ -20,29 +20,30 @@ import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -import org.eclipse.test.performance.PerformanceTestCaseJunit4; -import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule; +import org.eclipse.test.performance.Performance; +import org.eclipse.test.performance.PerformanceMeter; +import org.eclipse.ui.tests.harness.util.CloseTestWindowsExtension; import org.eclipse.ui.tests.performance.UIPerformanceTestRule; -import org.junit.ClassRule; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.extension.RegisterExtension; /** * @since 3.3 */ -public class ProgressMonitorDialogPerformanceTest extends PerformanceTestCaseJunit4 { +public class ProgressMonitorDialogPerformanceTest { - @ClassRule - public static final UIPerformanceTestRule uiPerformanceTestRule = new UIPerformanceTestRule(); + @RegisterExtension + static UIPerformanceTestRule uiPerformanceTestRule = new UIPerformanceTestRule(); - @Rule - public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); + @RegisterExtension + CloseTestWindowsExtension closeTestWindows = new CloseTestWindowsExtension(); /** * Test the time for doing a refresh. */ @Test - public void testLongNames() throws Throwable { + public void testLongNames(TestInfo testInfo) throws Throwable { Display display = Display.getCurrent(); if (display == null) { display = new Display(); @@ -51,6 +52,10 @@ public void testLongNames() throws Throwable { Shell shell = new Shell(display); ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell); + Performance perf = Performance.getDefault(); + String scenarioId = this.getClass().getName() + "." + testInfo.getDisplayName(); + PerformanceMeter meter = perf.createPerformanceMeter(scenarioId); + IRunnableWithProgress runnable = monitor -> { char[] chars = new char[10000]; @@ -65,22 +70,25 @@ public void testLongNames() throws Throwable { // test for (int testCounter = 0; testCounter < 20; testCounter++) { - startMeasuring(); + meter.start(); for (int counter = 0; counter < 30; counter++) { monitor.setTaskName(taskName); processEvents(); } processEvents(); - stopMeasuring(); + meter.stop(); } }; - dialog.run(false, true, runnable); - - commitMeasurements(); - assertPerformance(); + try { + dialog.run(false, true, runnable); - shell.dispose(); + meter.commit(); + perf.assertPerformance(meter); + } finally { + meter.dispose(); + shell.dispose(); + } } } diff --git a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/SWTTreeTest.java b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/SWTTreeTest.java index 578f7358a1b4..6f7b7fcca507 100644 --- a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/SWTTreeTest.java +++ b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/SWTTreeTest.java @@ -23,15 +23,17 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; -import org.eclipse.test.performance.PerformanceTestCaseJunit4; -import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule; -import org.junit.Rule; -import org.junit.Test; +import org.eclipse.test.performance.Performance; +import org.eclipse.test.performance.PerformanceMeter; +import org.eclipse.ui.tests.harness.util.CloseTestWindowsExtension; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.extension.RegisterExtension; -public class SWTTreeTest extends PerformanceTestCaseJunit4 { +public class SWTTreeTest { - @Rule - public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); + @RegisterExtension + CloseTestWindowsExtension closeTestWindows = new CloseTestWindowsExtension(); Shell browserShell; @@ -64,22 +66,30 @@ private void createChildren() { * Test the getItems API. */ @Test - public void testGetItems() throws CoreException { + public void testGetItems(TestInfo testInfo) throws CoreException { openBrowser(); - exercise(() -> { - processEvents(); - startMeasuring(); - for (int j = 0; j < TreeAddTest.TEST_COUNT; j++) { - tree.getItems(); - processEvents(); - } - stopMeasuring(); - }); + Performance perf = Performance.getDefault(); + String scenarioId = this.getClass().getName() + "." + testInfo.getDisplayName(); + PerformanceMeter meter = perf.createPerformanceMeter(scenarioId); - commitMeasurements(); - assertPerformance(); - browserShell.close(); + try { + exercise(() -> { + processEvents(); + meter.start(); + for (int j = 0; j < TreeAddTest.TEST_COUNT; j++) { + tree.getItems(); + processEvents(); + } + meter.stop(); + }); + + meter.commit(); + perf.assertPerformance(meter); + } finally { + meter.dispose(); + browserShell.close(); + } } /** @@ -87,22 +97,30 @@ public void testGetItems() throws CoreException { * Test the getItem API. */ @Test - public void testGetItemAt() throws CoreException { + public void testGetItemAt(TestInfo testInfo) throws CoreException { openBrowser(); - exercise(() -> { - processEvents(); - startMeasuring(); - for (int j = 0; j < TreeAddTest.TEST_COUNT; j++) { - tree.getItem(j); - processEvents(); - } - stopMeasuring(); - }); + Performance perf = Performance.getDefault(); + String scenarioId = this.getClass().getName() + "." + testInfo.getDisplayName(); + PerformanceMeter meter = perf.createPerformanceMeter(scenarioId); - commitMeasurements(); - assertPerformance(); - browserShell.close(); + try { + exercise(() -> { + processEvents(); + meter.start(); + for (int j = 0; j < TreeAddTest.TEST_COUNT; j++) { + tree.getItem(j); + processEvents(); + } + meter.stop(); + }); + + meter.commit(); + perf.assertPerformance(meter); + } finally { + meter.dispose(); + browserShell.close(); + } } } diff --git a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ViewerTest.java b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ViewerTest.java index 81a1a547c391..e266f2b0a549 100644 --- a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ViewerTest.java +++ b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/ViewerTest.java @@ -21,29 +21,74 @@ import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -import org.eclipse.test.performance.PerformanceTestCaseJunit4; -import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule; +import org.eclipse.test.performance.Dimension; +import org.eclipse.test.performance.Performance; +import org.eclipse.test.performance.PerformanceMeter; +import org.eclipse.ui.tests.harness.util.CloseTestWindowsExtension; import org.eclipse.ui.tests.performance.UIPerformanceTestRule; -import org.junit.After; -import org.junit.ClassRule; -import org.junit.Rule; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.RegisterExtension; /** * The LinearViewerTest is a test that tests viewers. */ -public abstract class ViewerTest extends PerformanceTestCaseJunit4 { +public abstract class ViewerTest implements BeforeEachCallback, AfterEachCallback { - @ClassRule - public static final UIPerformanceTestRule uiPerformanceTestRule = new UIPerformanceTestRule(); + @RegisterExtension + static UIPerformanceTestRule uiPerformanceTestRule = new UIPerformanceTestRule(); - @Rule - public final CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule(); + @RegisterExtension + CloseTestWindowsExtension closeTestWindows = new CloseTestWindowsExtension(); Shell browserShell; public static int ITERATIONS = 100; public static int MIN_ITERATIONS = 20; + private PerformanceMeter performanceMeter; + + @Override + public void beforeEach(ExtensionContext context) throws Exception { + Performance perf = Performance.getDefault(); + String scenarioId = this.getClass().getName() + "." + context.getDisplayName(); + performanceMeter = perf.createPerformanceMeter(scenarioId); + } + + @Override + public void afterEach(ExtensionContext context) throws Exception { + if (performanceMeter != null) { + performanceMeter.dispose(); + performanceMeter = null; + } + } + + protected void startMeasuring() { + if (performanceMeter != null) { + performanceMeter.start(); + } + } + + protected void stopMeasuring() { + if (performanceMeter != null) { + performanceMeter.stop(); + } + } + + protected void commitMeasurements() { + if (performanceMeter != null) { + performanceMeter.commit(); + } + } + + protected void assertPerformance() { + if (performanceMeter != null) { + Performance.getDefault().assertPerformance(performanceMeter); + } + } + protected void openBrowser() { Display display = Display.getCurrent(); if (display == null) { @@ -81,7 +126,7 @@ public String getText(Object element) { }; } - @After + @AfterEach public final void closeBrowserShell() throws Exception { if(browserShell!= null){ browserShell.close(); @@ -110,4 +155,12 @@ public int slowWindowsIterations(){ return ITERATIONS; } + public void tagAsSummary(String shortName, Dimension dimension) { + Performance.getDefault().tagAsSummary(performanceMeter, shortName, new Dimension[] { dimension }); + } + + public void tagAsGlobalSummary(String shortName, Dimension dimension) { + Performance.getDefault().tagAsGlobalSummary(performanceMeter, shortName, new Dimension[] { dimension }); + } + }