1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-24 01:15:29 +02:00

Bug 431684 - Intermittent test failures in IndexBugsTest

Improved reliability of BaseTestCase.waitForIndexer method.

Change-Id: Ifcfb4e90a1595e6cc2bc90856daad6cd265b6247
Signed-off-by: Lukas Felber <l.felber@gmx.ch>
Reviewed-on: https://git.eclipse.org/r/24080
Tested-by: Hudson CI
Reviewed-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
IP-Clean: Sergey Prigogin <eclipse.sprigogin@gmail.com>
Tested-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
This commit is contained in:
Lukas Felber 2014-03-28 17:12:29 +01:00 committed by Sergey Prigogin
parent f65493131c
commit 8c3ba9ec2d
2 changed files with 2 additions and 12 deletions

View file

@ -38,7 +38,6 @@ import org.eclipse.cdt.core.testplugin.TestScannerProvider;
import org.eclipse.cdt.internal.core.CCoreInternals;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase;
import org.eclipse.cdt.internal.core.pdom.CModelListener;
import org.eclipse.cdt.internal.core.pdom.PDOMManager;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResourceStatus;
import org.eclipse.core.resources.ResourcesPlugin;
@ -305,16 +304,7 @@ public class BaseTestCase extends TestCase {
public static void waitForIndexer(ICProject project) throws InterruptedException {
Job.getJobManager().join(ResourcesPlugin.FAMILY_AUTO_REFRESH, null);
final PDOMManager indexManager = CCoreInternals.getPDOMManager();
assertTrue(indexManager.joinIndexer(INDEXER_TIMEOUT_SEC * 1000, npm()));
long waitms= 1;
while (waitms < 2000 && !indexManager.isProjectRegistered(project)) {
Thread.sleep(waitms);
waitms *= 2;
}
assertTrue(indexManager.isProjectRegistered(project));
assertTrue(indexManager.joinIndexer(INDEXER_TIMEOUT_SEC * 1000, npm()));
assertTrue(CCoreInternals.getPDOMManager().joinIndexer(INDEXER_TIMEOUT_SEC * 1000, npm()));
}
public static void waitUntilFileIsIndexed(IIndex index, IFile file) throws Exception {

View file

@ -730,7 +730,7 @@ public class PDOMManager implements IWritableIndexManager, IListener {
@Override
public boolean isIndexerIdle() {
synchronized (fTaskQueue) {
return Job.getJobManager().find(this).length == 0;
return Job.getJobManager().find(this).length == 0 && fTaskQueue.isEmpty();
}
}