From 768ac9122ff2cb4abbc7cdc92261de7aa3d0e8a1 Mon Sep 17 00:00:00 2001 From: Eike Stepper Date: Tue, 6 Aug 2013 10:07:27 +0200 Subject: Stabilize Bugzilla_381472_Test --- .../cdo/tests/bugzilla/Bugzilla_381472_Test.java | 36 ++++++------- .../eclipse/emf/cdo/tests/util/TestListener.java | 60 ++++++++++------------ 2 files changed, 44 insertions(+), 52 deletions(-) diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_381472_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_381472_Test.java index d94e92d715..2c78358514 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_381472_Test.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_381472_Test.java @@ -321,9 +321,9 @@ public class Bugzilla_381472_Test extends AbstractCDOTest getRepository("repo2"); admin.waitForRepository("repo2"); - listener.assertEvent(new EventAssertion>() + listener.assertEvent(IContainerEvent.class, new EventAssertion>() { - public void execute(IContainerEvent event) throws Exception + public void execute(IContainerEvent event) { assertEquals(IContainerDelta.Kind.ADDED, event.getDeltaKind()); assertEquals("repo2", event.getDeltaElement().getName()); @@ -358,9 +358,9 @@ public class Bugzilla_381472_Test extends AbstractCDOTest } }.assertNoTimeOut(); - listener.assertEvent(new EventAssertion>() + listener.assertEvent(IContainerEvent.class, new EventAssertion>() { - public void execute(IContainerEvent event) throws Exception + public void execute(IContainerEvent event) { assertEquals(IContainerDelta.Kind.REMOVED, event.getDeltaKind()); assertEquals("repo1", event.getDeltaElement().getName()); @@ -386,9 +386,9 @@ public class Bugzilla_381472_Test extends AbstractCDOTest getRepository().setType(Type.BACKUP); - listener.assertEvent(new EventAssertion() + listener.assertEvent(RepositoryTypeChangedEvent.class, new EventAssertion() { - public void execute(RepositoryTypeChangedEvent event) throws Exception + public void execute(RepositoryTypeChangedEvent event) { assertEquals(Type.MASTER, event.getOldType()); assertEquals(Type.BACKUP, event.getNewType()); @@ -414,9 +414,9 @@ public class Bugzilla_381472_Test extends AbstractCDOTest getRepository().setState(State.OFFLINE); - listener.assertEvent(new EventAssertion() + listener.assertEvent(RepositoryStateChangedEvent.class, new EventAssertion() { - public void execute(RepositoryStateChangedEvent event) throws Exception + public void execute(RepositoryStateChangedEvent event) { assertEquals(State.ONLINE, event.getOldState()); assertEquals(State.OFFLINE, event.getNewState()); @@ -446,9 +446,9 @@ public class Bugzilla_381472_Test extends AbstractCDOTest assertEquals(getRepository().getName(), repositories[0].getName()); assertEquals(repo2.getName(), repositories[1].getName()); - listener.assertEvent(new EventAssertion>() + listener.assertEvent(IContainerEvent.class, new EventAssertion>() { - public void execute(IContainerEvent event) throws Exception + public void execute(IContainerEvent event) { assertEquals(IContainerDelta.Kind.ADDED, event.getDeltaKind()); assertEquals("repo2", event.getDeltaElement().getName()); @@ -479,9 +479,9 @@ public class Bugzilla_381472_Test extends AbstractCDOTest assertEquals(getRepository().getName(), repositories[0].getName()); assertEquals(repo2.getName(), repositories[1].getName()); - listener.assertEvent(new EventAssertion>() + listener.assertEvent(IContainerEvent.class, new EventAssertion>() { - public void execute(IContainerEvent event) throws Exception + public void execute(IContainerEvent event) { assertEquals(IContainerDelta.Kind.ADDED, event.getDeltaKind()); assertEquals("repo2", event.getDeltaElement().getName()); @@ -514,9 +514,9 @@ public class Bugzilla_381472_Test extends AbstractCDOTest assertEquals(getRepository().getName(), repositories[0].getName()); assertEquals(repo2.getName(), repositories[1].getName()); - listener.assertEvent(new EventAssertion>() + listener.assertEvent(IContainerEvent.class, new EventAssertion>() { - public void execute(IContainerEvent event) throws Exception + public void execute(IContainerEvent event) { assertEquals(IContainerDelta.Kind.ADDED, event.getDeltaKind()); assertEquals("repo2", event.getDeltaElement().getName()); @@ -549,9 +549,9 @@ public class Bugzilla_381472_Test extends AbstractCDOTest assertEquals(getRepository().getName(), repositories[0].getName()); assertEquals(repo2.getName(), repositories[1].getName()); - listener.assertEvent(new EventAssertion>() + listener.assertEvent(IContainerEvent.class, new EventAssertion>() { - public void execute(IContainerEvent event) throws Exception + public void execute(IContainerEvent event) { assertEquals(IContainerDelta.Kind.ADDED, event.getDeltaKind()); assertEquals("repo2", event.getDeltaElement().getName()); @@ -596,9 +596,9 @@ public class Bugzilla_381472_Test extends AbstractCDOTest repo1.delete(ADMIN_HANDLER_TYPE); assertEquals(null, admin.getRepository("repo1")); - listener.assertEvent(new EventAssertion>() + listener.assertEvent(IContainerEvent.class, new EventAssertion>() { - public void execute(IContainerEvent event) throws Exception + public void execute(IContainerEvent event) { assertEquals(IContainerDelta.Kind.REMOVED, event.getDeltaKind()); assertEquals("repo1", event.getDeltaElement().getName()); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/util/TestListener.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/util/TestListener.java index feaac13656..b345e14241 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/util/TestListener.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/util/TestListener.java @@ -17,6 +17,8 @@ import org.eclipse.net4j.util.tests.AbstractOMTest; import java.util.ArrayList; import java.util.List; +import junit.framework.AssertionFailedError; + /** * @author Eike Stepper */ @@ -24,58 +26,47 @@ public class TestListener implements IListener { private List events = new ArrayList(); + private int nextAssertion; + public TestListener() { } - public void assertEvent(final EventAssertion assertion) throws Exception + public void assertEvent(final Class eventType, final EventAssertion assertion) + throws Exception { - final Exception[] exception = { null }; - final Error[] error = { null }; - new AbstractOMTest.PollingTimeOuter() { @SuppressWarnings("unchecked") @Override protected boolean successful() { - T event; synchronized (events) { - if (events.size() != 1) + for (int i = nextAssertion; i < events.size(); i++) { - return false; - } + IEvent event = events.get(i); + System.out.println(event); + ++nextAssertion; - event = (T)events.get(0); - } - - try - { - assertion.execute(event); - } - catch (Exception ex) - { - exception[0] = ex; - } - catch (Error err) - { - error[0] = err; + if (eventType.isAssignableFrom(event.getClass())) + { + try + { + assertion.execute((T)event); + return true; + } + catch (AssertionFailedError ignore) + { + // This is not the expected event. Either it'll come later or we'll time out below. + } + } + } } - return true; + return false; } }.assertNoTimeOut(); - - if (exception[0] != null) - { - throw exception[0]; - } - - if (error[0] != null) - { - throw error[0]; - } } public IEvent[] getEvents() @@ -91,6 +82,7 @@ public class TestListener implements IListener synchronized (events) { events.clear(); + nextAssertion = 0; } } @@ -107,6 +99,6 @@ public class TestListener implements IListener */ public interface EventAssertion { - public void execute(T event) throws Exception; + public void execute(T event); } } -- cgit v1.2.3