From 8668ed1c970ed723ab532cdb67cb290980154c37 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Mon, 1 Feb 2010 13:32:20 +0000 Subject: [PATCH] Fixes occasional JUnit failures. --- .../internal/index/tests/IndexBugsTests.java | 1 + .../internal/index/tests/IndexTestBase.java | 12 ++++++++++ .../index/tests/TeamSharedIndexTest.java | 7 ++++-- .../eclipse/cdt/ui/tests/BaseUITestCase.java | 24 +++++++++---------- .../tests/refactoring/rename/RenameTests.java | 1 + 5 files changed, 31 insertions(+), 14 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java index 9391ce22172..0a413efe432 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java @@ -273,6 +273,7 @@ public class IndexBugsTests extends BaseTestCase { private void waitForIndexer() throws InterruptedException { final IIndexManager indexManager = CCorePlugin.getIndexManager(); + assertTrue(indexManager.joinIndexer(INDEX_WAIT_TIME, NPM)); long waitms= 1; while (waitms < 2000 && indexManager.isIndexerSetupPostponed(fCProject)) { Thread.sleep(waitms); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTestBase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTestBase.java index e4fd5e32830..75a5929afdc 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTestBase.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexTestBase.java @@ -15,6 +15,7 @@ import java.io.IOException; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMManager; +import org.eclipse.cdt.core.index.IIndexManager; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.testplugin.CProjectHelper; import org.eclipse.cdt.core.testplugin.CTestPlugin; @@ -63,4 +64,15 @@ public class IndexTestBase extends BaseTestCase { return TestSourceReader.getContentsForTest( CTestPlugin.getDefault().getBundle(), "parser", getClass(), getName(), blocks); } + + protected void waitForIndexer(ICProject project) throws InterruptedException { + final IIndexManager indexManager = CCorePlugin.getIndexManager(); + assertTrue(indexManager.joinIndexer(INDEXER_WAIT_TIME, NPM)); + long waitms= 1; + while (waitms < 2000 && indexManager.isIndexerSetupPostponed(project)) { + Thread.sleep(waitms); + waitms *= 2; + } + assertTrue(indexManager.joinIndexer(INDEXER_WAIT_TIME, NPM)); + } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/TeamSharedIndexTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/TeamSharedIndexTest.java index a388ccb43e3..759abc6e630 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/TeamSharedIndexTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/TeamSharedIndexTest.java @@ -55,11 +55,13 @@ public class TeamSharedIndexTest extends IndexTestBase { super(name); } + @Override protected void setUp() throws Exception { super.setUp(); fProjects.clear(); } + @Override protected void tearDown() throws Exception { for (Iterator iterator = fProjects.iterator(); iterator.hasNext();) { ICProject project = (ICProject) iterator.next(); @@ -109,8 +111,9 @@ public class TeamSharedIndexTest extends IndexTestBase { } finally { pj.dispose(); } - fPDOMManager.joinIndexer(INDEXER_WAIT_TIME, NPM); - return CoreModel.getDefault().create(workspace.getRoot().getProject(prjName)); + ICProject result= CoreModel.getDefault().create(workspace.getRoot().getProject(prjName)); + waitForIndexer(result); + return result; } private void checkVariable(ICProject prj, String var, int expectedCount) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java index 8cc5662b8ed..a8f7d01e007 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java @@ -116,9 +116,12 @@ public class BaseUITestCase extends BaseTestCase { protected void waitForIndexer(IIndex index, IFile file, int maxmillis) throws Exception { boolean firstTime= true; long endTime= System.currentTimeMillis() + maxmillis; + long sleep= 1; while (firstTime || System.currentTimeMillis() < endTime) { - if (!firstTime) - Thread.sleep(50); + if (!firstTime) { + Thread.sleep(sleep); + sleep= Math.min(250, sleep*2); + } firstTime= false; if (CCorePlugin.getIndexManager().isIndexerSetupPostponed(CoreModel.getDefault().create(file.getProject()))) @@ -220,10 +223,9 @@ public class BaseUITestCase extends BaseTestCase { protected void closeAllEditors() { IWorkbenchWindow[] windows= PlatformUI.getWorkbench().getWorkbenchWindows(); - for (int i= 0; i < windows.length; i++) { - IWorkbenchPage[] pages= windows[i].getPages(); - for (int j= 0; j < pages.length; j++) { - IWorkbenchPage page= pages[j]; + for (IWorkbenchWindow window : windows) { + IWorkbenchPage[] pages= window.getPages(); + for (IWorkbenchPage page : pages) { page.closeAllEditors(false); } } @@ -235,13 +237,11 @@ public class BaseUITestCase extends BaseTestCase { runEventQueue(0); IViewReference[] viewRefs= page.getViewReferences(); - for (int i = 0; i < viewRefs.length; i++) { - IViewReference ref = viewRefs[i]; + for (IViewReference ref : viewRefs) { page.setPartState(ref, IWorkbenchPage.STATE_RESTORED); } IEditorReference[] editorRefs= page.getEditorReferences(); - for (int i = 0; i < editorRefs.length; i++) { - IEditorReference ref = editorRefs[i]; + for (IEditorReference ref : editorRefs) { page.setPartState(ref, IWorkbenchPage.STATE_RESTORED); } runEventQueue(0); @@ -273,8 +273,8 @@ public class BaseUITestCase extends BaseTestCase { if (w instanceof Composite) { Composite comp= (Composite) w; Control[] children= comp.getChildren(); - for (int i = 0; i < children.length; i++) { - findControls(children[i], clazz, result); + for (Control element : children) { + findControls(element, clazz, result); } } } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTests.java index 383ab3a9ea8..458e85708fe 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTests.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTests.java @@ -143,6 +143,7 @@ public class RenameTests extends RefactoringTests { protected void waitForIndexer() throws InterruptedException { final IIndexManager im = CCorePlugin.getIndexManager(); + assertTrue(im.joinIndexer(10000, NPM)); int sleep= 1; while (im.isIndexerSetupPostponed(cproject)) { Thread.sleep(sleep);