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>