Bug 526058 - test should wait for job trigered by AbstractModelProxy
This seem to fix the instability of the
ContentTests.testLabelUpdatesCompletedOutOfSequence* tests.
Change-Id: Ib3b414c4f65076095ba7a9d5fc9c29dc33d8a795
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/ContentTests.java b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/ContentTests.java
index bbec1ca..aef5d9f 100644
--- a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/ContentTests.java
+++ b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/ContentTests.java
@@ -25,6 +25,7 @@
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta;
import org.eclipse.debug.tests.AbstractDebugTest;
+import org.eclipse.debug.tests.TestUtil;
import org.eclipse.debug.tests.viewer.model.TestModel.TestElement;
import org.eclipse.jface.viewers.TreePath;
@@ -139,7 +140,7 @@
* use data from stale updates to populate the viewer.<br>
* See bug 210027
*/
- public void testLabelUpdatesCompletedOutOfSequence3() throws Exception {
+ public void testLabelUpdatesCompletedOutOfSequence1() throws Exception {
TestModelWithCapturedUpdates model = new TestModelWithCapturedUpdates();
model.fCaptureLabelUpdates = true;
@@ -151,10 +152,11 @@
// Set input into the view to update it, but block children updates.
// Wait for view to start retrieving content.
fViewer.setInput(model.getRootElement());
+ TestUtil.waitForJobs(getName(), 300, 5000);
waitWhile(t -> model.fCapturedUpdates.size() < model.getRootElement().fChildren.length, createModelErrorMessage(model));
List<IViewerUpdate> firstUpdates = model.fCapturedUpdates;
- model.fCapturedUpdates = new ArrayList<IViewerUpdate>(2);
+ model.fCapturedUpdates = Collections.synchronizedList(new ArrayList<IViewerUpdate>(2));
// // Change the model and run another update set.
model.getElement(model.findElement("1")).setLabelAppendix(" - changed"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -205,16 +207,17 @@
// Set input into the view to update it, but block children updates.
// Wait for view to start retrieving content.
fViewer.setInput(model.getRootElement());
+ TestUtil.waitForJobs(getName(), 300, 5000);
waitWhile(t -> model.fCapturedUpdates.size() < model.getRootElement().fChildren.length, createModelErrorMessage(model));
List<IViewerUpdate> firstUpdates = model.fCapturedUpdates;
- model.fCapturedUpdates = new ArrayList<IViewerUpdate>(2);
+ model.fCapturedUpdates = Collections.synchronizedList(new ArrayList<IViewerUpdate>(2));
// Change the model and run another update set.
model.setElementChildren(TreePath.EMPTY, new TestElement[] {
new TestElement(model, "1-new", new TestElement[0]), //$NON-NLS-1$
new TestElement(model, "2-new", new TestElement[0]), //$NON-NLS-1$
});
- fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
+ fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, false, false);
model.postDelta(new ModelDelta(model.getRootElement(), IModelDelta.CONTENT));
waitWhile(t -> model.fCapturedUpdates.size() < model.getRootElement().fChildren.length, createModelErrorMessage(model));