Bug 243132 - PackagesViewContentProviderTests2.testAddCUFromPackageNotLogicalPackage fails sometimes
Summary: PackagesViewContentProviderTests2.testAddCUFromPackageNotLogicalPackage fails...
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.4   Edit
Hardware: Macintosh Mac OS X - Carbon (unsup.)
: P2 normal (vote)
Target Milestone: 3.4.1   Edit
Assignee: Markus Keller CLA
QA Contact:
URL:
Whiteboard:
Keywords: test
Depends on: 243912
Blocks:
  Show dependency tree
 
Reported: 2008-08-05 03:55 EDT by Dani Megert CLA
Modified: 2008-08-28 05:51 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dani Megert CLA 2008-08-05 03:55:12 EDT
M20080730-0800 and I20080804-1800.

Too many refreshes (12): [pack3.pack8 (not open) [in src1 [in TestProject2]], TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open)]

junit.framework.AssertionFailedError: Too many refreshes (12):
[pack3.pack8 (not open) [in src1 [in TestProject2]], TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open), TestProject1 (not open)]
at org.eclipse.jdt.ui.tests.browsing.PackagesViewContentProviderTests2.assertPack81RefreshedOnce(PackagesViewContentProviderTests2.java:231)
at org.eclipse.jdt.ui.tests.browsing.PackagesViewContentProviderTests2.testAddCUFromPackageNotLogicalPackage(PackagesViewContentProviderTests2.java:250)
at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
at junit.extensions.TestSetup.run(TestSetup.java:25)
at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:354)
at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:206)
at org.eclipse.test.UITestApplication$3.run(UITestApplication.java:195)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3338)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3067)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.test.UITestApplication.runApplication(UITestApplication.java:138)
at org.eclipse.test.UITestApplication.run(UITestApplication.java:60)
at org.eclipse.test.UITestApplication.start(UITestApplication.java:210)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
at org.eclipse.core.launcher.Main.main(Main.java:30)
Comment 1 Dani Megert CLA 2008-08-05 03:56:11 EDT
Markus, please try to reproduce on your Mac. We need to make that test more stable or remove it since it causes noise in the test results.
Comment 2 Markus Keller CLA 2008-08-06 12:26:08 EDT
Could not reproduce, even when doing the wildest dances while the test was running. Released some logging to help us track this down.

Please reopen if this happens again.
Comment 3 Dani Megert CLA 2008-08-07 06:54:52 EDT
Failure is back in I20080806-1800.
Comment 4 Dani Megert CLA 2008-08-08 02:31:37 EDT
Happened again in I20080807-1402.

Once we have a solution we should backport it to 3.4.1 as well.
Comment 5 Markus Keller CLA 2008-08-08 08:03:26 EDT
Released more logging to stdout and stopped test from failing if additional refreshes occur.

Changes in PackagesViewFlatContentProvider, MockPluginView, and PackagesViewContentProviderTests2.
Comment 6 Markus Keller CLA 2008-08-12 07:07:19 EDT
In N20080810-2000, logging showed that the additional refreshes are coming from the CharsetDeltaJob, e.g.:

java.lang.Exception: Delta for: TestProject1/src/junit.extensions
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processDelta(PackagesViewFlatContentProvider.java:128)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processAffectedChildren(PackagesViewFlatContentProvider.java:210)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processDelta(PackagesViewFlatContentProvider.java:181)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processAffectedChildren(PackagesViewFlatContentProvider.java:210)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processDelta(PackagesViewFlatContentProvider.java:181)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processAffectedChildren(PackagesViewFlatContentProvider.java:210)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processDelta(PackagesViewFlatContentProvider.java:181)
	at org.eclipse.jdt.internal.ui.browsing.LogicalPackagesProvider.elementChanged(LogicalPackagesProvider.java:211)
	at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1562)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1552)
	at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1386)
	at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1362)
	at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1956)
	at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:431)
	at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:288)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:282)
	at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
	at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:313)
	at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1022)
	at org.eclipse.core.internal.resources.CharsetDeltaJob.run(CharsetDeltaJob.java:162)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
java.lang.Exception: postRefresh: TestProject1 (not open)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.postRefresh(PackagesViewFlatContentProvider.java:278)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processDelta(PackagesViewFlatContentProvider.java:176)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processAffectedChildren(PackagesViewFlatContentProvider.java:210)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processDelta(PackagesViewFlatContentProvider.java:181)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processAffectedChildren(PackagesViewFlatContentProvider.java:210)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processDelta(PackagesViewFlatContentProvider.java:181)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processAffectedChildren(PackagesViewFlatContentProvider.java:210)
	at org.eclipse.jdt.internal.ui.browsing.PackagesViewFlatContentProvider.processDelta(PackagesViewFlatContentProvider.java:181)
	at org.eclipse.jdt.internal.ui.browsing.LogicalPackagesProvider.elementChanged(LogicalPackagesProvider.java:211)
	at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1562)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1552)
	at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1386)
	at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1362)
	at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1956)
	at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:431)
	at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:288)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:282)
	at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
	at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:313)
	at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1022)
	at org.eclipse.core.internal.resources.CharsetDeltaJob.run(CharsetDeltaJob.java:162)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Comment 7 Markus Keller CLA 2008-08-12 13:16:14 EDT
Opened bug 243912 for the unexpected refreshes from the CharsetDeltaJob.

Steps to reproduce:

- breakpoint at last statement of PackagesViewContentProviderTests2.testRemoveCUFromPackageNotLogicalPackage()
- breakpoint before "fMyPart.pushDisplay();" in
PackagesViewContentProviderTests2.testAddCUFromPackageNotLogicalPackage()

- debug PackagesViewContentProviderTests2
- when breakpoint is hit, add breakpoint at start of CharsetDeltaJob.run(IProgressMonitor)
- resume once
- when breakpoint in CharsetDeltaJob is hit, resume that worker thread
- step in main thread to see how too many refreshes have been logged

A workaround could be to sleep for 1 second at the beginning of testAddCUFromPackageNotLogicalPackage() and then call "fMyPart.pushDisplay();".
Comment 8 Markus Keller CLA 2008-08-19 07:26:53 EDT
Released a workaround to HEAD and 3.4.1: Wait for 1s after deleting projects (in tearDown, since this affects all tests).
Comment 9 Dani Megert CLA 2008-08-28 05:51:44 EDT
Verified in code and in latest builds.