From 5f3cd7ac20198e0cc36f53f7a2526023c608d562 Mon Sep 17 00:00:00 2001 From: Christian Walther Date: Thu, 18 Aug 2022 16:39:44 +0200 Subject: [PATCH] Fix flaky test testPersistentProperties Don't sleep for a hardcoded time but wait for the actual condition. 1000 ms was often insufficient on my system. --- .../tests/CProjectDescriptionSerializationTests.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/CProjectDescriptionSerializationTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/CProjectDescriptionSerializationTests.java index dbe9223c266..59278a6d6f2 100644 --- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/CProjectDescriptionSerializationTests.java +++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/CProjectDescriptionSerializationTests.java @@ -202,7 +202,6 @@ public class CProjectDescriptionSerializationTests extends TestCase { coreModel.setProjectDescription(project, des); Assert.assertEquals(project, des.getProject()); - Thread.sleep(1000); // let scanner discovery participate try { QualifiedName pdomName = new QualifiedName(CCorePlugin.PLUGIN_ID, "pdomName"); QualifiedName activeCfg = new QualifiedName(CCorePlugin.PLUGIN_ID, "activeConfiguration"); @@ -210,6 +209,13 @@ public class CProjectDescriptionSerializationTests extends TestCase { QualifiedName discoveredScannerConfigFileName = new QualifiedName(MakeCorePlugin.PLUGIN_ID, "discoveredScannerConfigFileName"); + // pdomName is set by indexer setup, which may still be postponed or not even + // scheduled yet, so we can't join the job. Just wait for the property to appear. + // (The other properties were set synchronously in setProjectDescription().) + for (int i = 0; i < 100 && !project.getPersistentProperties().containsKey(pdomName); i++) { + Thread.sleep(100); + } + assertTrue("pdomName", project.getPersistentProperties().containsKey(pdomName)); assertTrue("activeCfg", project.getPersistentProperties().containsKey(activeCfg)); assertTrue("discoveredScannerConfigFileName",