Bug 135666 - The first run of the headless startup test should be excluded from the performance results
diff --git a/tests/org.eclipse.core.tests.runtime/META-INF/MANIFEST.MF b/tests/org.eclipse.core.tests.runtime/META-INF/MANIFEST.MF
index a19cf2f..f2378dd 100644
--- a/tests/org.eclipse.core.tests.runtime/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.core.tests.runtime/META-INF/MANIFEST.MF
@@ -20,6 +20,6 @@
Require-Bundle: org.eclipse.core.runtime.compatibility,
org.eclipse.core.tests.harness,
org.junit,
- org.eclipse.test.performance;resolution:=optional
+ org.eclipse.test.performance
Eclipse-AutoStart: true
Plugin-Class: org.eclipse.core.tests.runtime.RuntimeTestsPlugin
diff --git a/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/perf/AllTests.java b/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/perf/AllTests.java
index 558fd77..6ca249b 100644
--- a/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/perf/AllTests.java
+++ b/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/perf/AllTests.java
@@ -12,12 +12,24 @@
import junit.framework.*;
import org.eclipse.core.tests.runtime.RuntimeTestsPlugin;
-import org.eclipse.core.tests.session.PerformanceSessionTestSuite;
-import org.eclipse.core.tests.session.UIPerformanceSessionTestSuite;
+import org.eclipse.core.tests.session.*;
+import org.eclipse.core.tests.session.SetupManager.SetupException;
public class AllTests extends TestCase {
public static Test suite() {
TestSuite suite = new TestSuite(AllTests.class.getName());
+
+ // make sure that the first run of the startup test is not recorded - it is heavily
+ // influenced by the presence and validity of the cached information
+ try {
+ PerformanceSessionTestSuite firstRun = new PerformanceSessionTestSuite(RuntimeTestsPlugin.PI_RUNTIME_TESTS, 1, StartupTest.class);
+ Setup setup = firstRun.getSetup();
+ setup.setSystemProperty("eclipseTest.ReportResults", "false");
+ suite.addTest(firstRun);
+ } catch (SetupException e) {
+ fail("Unable to create warm up test");
+ }
+
suite.addTest(new PerformanceSessionTestSuite(RuntimeTestsPlugin.PI_RUNTIME_TESTS, 5, StartupTest.class));
suite.addTest(new UIPerformanceSessionTestSuite(RuntimeTestsPlugin.PI_RUNTIME_TESTS, 5, UIStartupTest.class));
suite.addTest(BenchPath.suite());
diff --git a/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/perf/StartupTest.java b/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/perf/StartupTest.java
index 47965fb..01740b5 100644
--- a/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/perf/StartupTest.java
+++ b/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/runtime/perf/StartupTest.java
@@ -29,7 +29,10 @@
meter.stop();
// tag for showing in the performance fingerprint graph
Performance.getDefault().tagAsGlobalSummary(meter, "Core Headless Startup", Dimension.ELAPSED_PROCESS);
- meter.commit();
+ String reportOption = System.getProperty("eclipseTest.ReportResults");
+ boolean bReport = (reportOption == null) ? true : !("false".equalsIgnoreCase(reportOption));
+ if (bReport)
+ meter.commit();
Performance.getDefault().assertPerformanceInRelativeBand(meter, Dimension.ELAPSED_PROCESS, -100, 5);
} finally {
meter.dispose();