Bug 578643 - updated Test for visual stable Sort Order
+ add JobInfo.tostring for debugging
Change-Id: I2f649b3a1cb1c19ae11e786eeca2f72461a8230d
Signed-off-by: Joerg Kubitz <jkubitz-eclipse@gmx.de>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.ui/+/190740
Tested-by: Platform Bot <platform-bot@eclipse.org>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java
index 9e8b489..faea8fb 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java
@@ -159,6 +159,16 @@
return 1;
}
+ // for debugging only
+ @Override
+ public String toString() {
+ return this.getClass().getSimpleName() + "('" + job.getName() //$NON-NLS-1$
+ + "' isUser=" + job.isUser() //$NON-NLS-1$
+ + " isBlocked=" + isBlocked() //$NON-NLS-1$
+ + " priority=" + job.getPriority() //$NON-NLS-1$
+ + ")"; //$NON-NLS-1$
+ }
+
@Override
public int compareTo(JobTreeElement other) {
if (!(other instanceof JobInfo)) {
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressViewTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressViewTests.java
index f1d8bfa..afd9aa3 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressViewTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/progress/ProgressViewTests.java
@@ -14,10 +14,14 @@
package org.eclipse.ui.tests.progress;
+import static org.junit.Assert.assertArrayEquals;
+
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
@@ -155,9 +159,21 @@
ArrayList<DummyJob> shuffledJobs = new ArrayList<>(jobsToSchedule);
Collections.shuffle(shuffledJobs);
StringBuilder scheduleOrder = new StringBuilder("Jobs schedule order: ");
+ progressView.getViewer().refresh(); // order will only hold on the first time.
+ Thread.sleep(200); // wait till throttled update ran.
+ Job dummyJob = new Job("dummy throttled caller") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ return Status.OK_STATUS;
+ }
+ };
+ dummyJob.schedule(); // trigger throttled update to clear ProgressViewerComparator.lastIndexes
+ // now hope the loop is executed before next throttled update (could fail if VM
+ // is busy otherwise):
for (DummyJob job : shuffledJobs) {
job.shouldFinish = false;
- job.schedule();
+ job.schedule(); // if the schedule updates the progress View (throttled) the sort order is
+ // affected
scheduleOrder.append(job.getName()).append(", ");
}
TestPlugin.getDefault().getLog()
@@ -172,9 +188,9 @@
ProgressInfoItem[] progressInfoItems = progressView.getViewer().getProgressInfoItems();
assertEquals("Not all jobs visible in progress view", allJobs.size(), progressInfoItems.length);
- for (int i = 0; i < progressInfoItems.length; i++) {
- assertEquals("Wrong job order", allJobs.get(i), progressInfoItems[i].getJobInfos()[0].getJob());
- }
+ Object[] expected = allJobs.toArray();
+ Object[] actual = Arrays.stream(progressInfoItems).map(pi -> pi.getJobInfos()[0].getJob()).toArray();
+ assertArrayEquals("Wrong job order", expected, actual);
} finally {
for (DummyJob job : jobsToSchedule) {
job.shouldFinish = true;
diff --git a/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
index 420a65e..938c39d 100644
--- a/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Eclipse UI Tests
Bundle-SymbolicName: org.eclipse.ui.tests; singleton:=true
-Bundle-Version: 3.15.500.qualifier
+Bundle-Version: 3.15.600.qualifier
Eclipse-BundleShape: dir
Bundle-Activator: org.eclipse.ui.tests.TestPlugin
Bundle-Vendor: Eclipse.org
diff --git a/tests/org.eclipse.ui.tests/pom.xml b/tests/org.eclipse.ui.tests/pom.xml
index 7e3fa0c..5201dcb 100644
--- a/tests/org.eclipse.ui.tests/pom.xml
+++ b/tests/org.eclipse.ui.tests/pom.xml
@@ -19,7 +19,7 @@
</parent>
<groupId>org.eclipse.ui</groupId>
<artifactId>org.eclipse.ui.tests</artifactId>
- <version>3.15.500-SNAPSHOT</version>
+ <version>3.15.600-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>
<properties>