From 31331544b64727d486d19b62fba458f32f9896a9 Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Mon, 16 Apr 2012 17:33:55 -0400 Subject: [PATCH 1/2] Ignore InterruptedException in unit tests --- .../cdescriptor/tests/CDescriptorTests.java | 51 ++++++++++++------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/cdescriptor/tests/CDescriptorTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/cdescriptor/tests/CDescriptorTests.java index e304a21cdbf..68a4db6e9d0 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/cdescriptor/tests/CDescriptorTests.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/cdescriptor/tests/CDescriptorTests.java @@ -49,7 +49,7 @@ import org.eclipse.core.runtime.NullProgressMonitor; /** * @author David - * + * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ @@ -62,7 +62,7 @@ public class CDescriptorTests extends BaseTestCase { /** * Constructor for CDescriptorTest. - * + * * @param name */ public CDescriptorTests(String name) { @@ -92,7 +92,7 @@ public class CDescriptorTests extends BaseTestCase { }; return wrapper; } - + @Override protected void setUp() throws Exception { fProject.open(new NullProgressMonitor()); @@ -101,7 +101,7 @@ public class CDescriptorTests extends BaseTestCase { @Override protected void tearDown() throws Exception { } - + private static void addNatureToProject(IProject proj, String natureId, IProgressMonitor monitor) throws CoreException { IProjectDescription description = proj.getDescription(); String[] prevNatures = description.getNatureIds(); @@ -193,8 +193,11 @@ public class CDescriptorTests extends BaseTestCase { }; t.start(); ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true); - t.join(); - + try { + t.join(); + } catch (InterruptedException e) { + } + ICStorageElement data = desc.getProjectStorageElement("testElement0"); data.createChild("test"); desc.saveProjectData(); @@ -204,7 +207,7 @@ public class CDescriptorTests extends BaseTestCase { /* * This tests concurrent descriptor modification inside of a ICDescriptor operation run - * with + * with * CConfigBasedDescriptorManager.runDescriptorOperation(IProject project, ICDescriptorOperation op, IProgressMonitor monitor) */ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=185930 @@ -253,7 +256,10 @@ public class CDescriptorTests extends BaseTestCase { } for (int j = 0; j < threads.length; j++) { if (threads[j] != null) { - threads[j].join(); + try { + threads[j].join(); + } catch (InterruptedException e) { + } } assertNull("Exception occurred: "+exception[j], exception[j]); } @@ -267,7 +273,7 @@ public class CDescriptorTests extends BaseTestCase { } /* - * This test should pass as two threads, operating on the + * This test should pass as two threads, operating on the * different storage elements (outside of an operation) should be safe */ public void testConcurrentDifferentStorageElementModification() throws Exception { @@ -291,7 +297,10 @@ public class CDescriptorTests extends BaseTestCase { ICStorageElement data = desc.getProjectStorageElement("testElement5"); data.createChild("test"); desc.saveProjectData(); - t.join(); + try { + t.join(); + } catch (InterruptedException e) { + } fLastEvent = null; } @@ -324,8 +333,11 @@ public class CDescriptorTests extends BaseTestCase { ICStorageElement data = desc.getProjectStorageElement("testElement6"); data.createChild("test"); desc.saveProjectData(); - t.join(); - + try { + t.join(); + } catch (InterruptedException e) { + } + fLastEvent = null; } Assert.assertEquals(200, CCorePlugin.getDefault().getCProjectDescription(fProject, false).getProjectStorageElement("testElement6").getChildren().length); @@ -356,8 +368,11 @@ public class CDescriptorTests extends BaseTestCase { ICStorageElement data = desc.getProjectStorageElement("testElement0"); data.createChild("test"); desc.saveProjectData(); - t.join(); - + try { + t.join(); + } catch (InterruptedException e) { + } + fLastEvent = null; } } @@ -488,7 +503,7 @@ public class CDescriptorTests extends BaseTestCase { String dotCProject1 = readDotCProjectFile(fProject); long mtime1 = fProject.getFile(".cproject").getLocalTimeStamp(); - + desc = CCorePlugin.getDefault().getCProjectDescription(fProject, true); data = desc.getProjectStorageElement("testElement"); for (ICStorageElement child : data.getChildren()) { @@ -522,11 +537,11 @@ public class CDescriptorTests extends BaseTestCase { /** * Read .cproject file. - * + * * @param project * @return content of .cproject file - * @throws CoreException - * @throws IOException + * @throws CoreException + * @throws IOException */ private static String readDotCProjectFile(IProject project) throws CoreException, IOException { IFile cProjectFile = project.getFile(".cproject"); From 751d4a45f034e8174df9cd27adbc0c1d9192f871 Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Mon, 16 Apr 2012 18:46:54 -0400 Subject: [PATCH 2/2] bug 371797: Use workspace scheduling rule for serializing workspace providers --- .../settings/providers/AbstractBuiltinSpecsDetector.java | 5 +++-- .../providers/LanguageSettingsProvidersSerializer.java | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java index 3341b86b986..b31af8cae35 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java @@ -44,6 +44,7 @@ import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; @@ -350,9 +351,9 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti } isExecuted = true; - Job job = new Job(ManagedMakeMessages.getResourceString("AbstractBuiltinSpecsDetector.DiscoverBuiltInSettingsJobName")) { //$NON-NLS-1$ + WorkspaceJob job = new WorkspaceJob(ManagedMakeMessages.getResourceString("AbstractBuiltinSpecsDetector.DiscoverBuiltInSettingsJobName")) { //$NON-NLS-1$ @Override - protected IStatus run(IProgressMonitor monitor) { + public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { IStatus status; try { startup(currentCfgDescription, null); diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java index 5f7a2a65544..593e4c3ba8c 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java @@ -585,6 +585,7 @@ public class LanguageSettingsProvidersSerializer { } }; + job.setRule(ResourcesPlugin.getWorkspace().getRoot()); job.schedule(); }