Bug 489546 - trying to stabilize the test case

Change-Id: Ia70bc6d1eb87b7ba453354ee80c03fe12ab3251a
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleManagerTests.java b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleManagerTests.java
index 1761c70..02fdf43 100644
--- a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleManagerTests.java
+++ b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleManagerTests.java
@@ -10,12 +10,11 @@
  *******************************************************************************/
 package org.eclipse.debug.tests.console;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -81,6 +80,7 @@
 		manager.showConsoleView(firstConsole);
 		waitForJobs();
 		processUIEvents(100);
+		ConsoleMock.allShownConsoles.set(0);
 	}
 
 	@Override
@@ -129,13 +129,8 @@
 
 		executorService.shutdown();
 		executorService.awaitTermination(1, TimeUnit.MINUTES);
-		List<ConsoleMock> shown = new ArrayList<>();
-		for (ConsoleMock console : consoles) {
-			if (console.showCalled > 0) {
-				shown.add(console);
-			}
-		}
-		assertEquals("Only " + shown.size() + " consoles were shown from " + count, count, shown.size()); //$NON-NLS-1$ //$NON-NLS-2$
+		int shown = ConsoleMock.allShownConsoles.intValue();
+		assertEquals("Only " + shown + " consoles were shown from " + count, count, shown); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
 	private void processUIEvents(final long millis) {
@@ -185,11 +180,13 @@
 	 */
 	static final class ConsoleMock implements IConsole {
 		MessagePage page;
-		volatile int showCalled;
+		final AtomicInteger showCalled;
 		final int number;
+		final static AtomicInteger allShownConsoles = new AtomicInteger();
 
 		public ConsoleMock(int number) {
 			this.number = number;
+			showCalled = new AtomicInteger();
 		}
 
 		@Override
@@ -229,8 +226,11 @@
 					getControl().addListener(SWT.Show, new Listener() {
 						@Override
 						public void handleEvent(Event event) {
-							showCalled++;
-							System.out.println("Shown: " + ConsoleMock.this); //$NON-NLS-1$
+							int count = showCalled.incrementAndGet();
+							if (count == 1) {
+								count = allShownConsoles.incrementAndGet();
+								System.out.println("Shown: " + ConsoleMock.this + ", overall: " + count); //$NON-NLS-1$ //$NON-NLS-2$
+							}
 						}
 					});
 				}