diff options
Diffstat (limited to 'dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events')
10 files changed, 502 insertions, 458 deletions
diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/AbstractService.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/AbstractService.java index 39e8634c1ee..65f82914a27 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/AbstractService.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/AbstractService.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ @@ -24,98 +24,105 @@ import org.osgi.framework.Filter; /** * Test service class used to test event behavior. It has three types of events - * and three methods to receive the events. + * and three methods to receive the events. * */ -abstract public class AbstractService extends AbstractDsfService -{ - AbstractService(DsfSession session) { - super(session); - } - - @Override protected final BundleContext getBundleContext() { - return DsfTestPlugin.getBundleContext(); - } - - @Override public void initialize(final RequestMonitor requestMonitor) { - super.initialize( - new RequestMonitor(getExecutor(), requestMonitor) { - @Override - public void handleSuccess() { - doInitialize(requestMonitor); - } - }); - } - - private void doInitialize(RequestMonitor requestMonitor) { - getSession().addServiceEventListener(this, getEventServicesFilter()); - requestMonitor.done(); - } - - @Override public void shutdown(RequestMonitor requestMonitor) { - getSession().removeServiceEventListener(this); - super.shutdown(requestMonitor); - } +abstract public class AbstractService extends AbstractDsfService { + AbstractService(DsfSession session) { + super(session); + } + + @Override + protected final BundleContext getBundleContext() { + return DsfTestPlugin.getBundleContext(); + } + + @Override + public void initialize(final RequestMonitor requestMonitor) { + super.initialize(new RequestMonitor(getExecutor(), requestMonitor) { + @Override + public void handleSuccess() { + doInitialize(requestMonitor); + } + }); + } + + private void doInitialize(RequestMonitor requestMonitor) { + getSession().addServiceEventListener(this, getEventServicesFilter()); + requestMonitor.done(); + } + + @Override + public void shutdown(RequestMonitor requestMonitor) { + getSession().removeServiceEventListener(this); + super.shutdown(requestMonitor); + } /** * Subclass should override this if it wants events from only certain * services. */ - protected Filter getEventServicesFilter() { return null; } - - /////////////////////////////////////////////////////////////////////////// - // Test API - /** Records the number in the event 1 object when this service received the event. */ - int fEvent1RecipientNumber; - - /** Records the number in the event 2 object when this service received the event. */ - int fEvent2RecipientNumber; - - /** Records the number in the event 3 object when this service received the event. */ - int fEvent3RecipientNumber; - - /** Simple event class 1 */ - public class Event1 { - /** 1-based counter for the recipient of the event. That is, whenever a handler is called with this event, the handler bumps this value */ - int fRecipientNumberCounter = 1; - } - - /** Simple event class 2. Note it doesn't have any relation to event 1 */ - public class Event2 { - /** 1-based counter for the recipient of the event. That is, whenever a handler is called with this event, the handler bumps this value */ - int fRecipientNumberCounter = 1; - } - - /** Simple event class 3. Note it does sub-class event 1 */ - public class Event3 extends Event1 {} - - @ThreadSafe - public void dispatchEvent1() { - getSession().dispatchEvent(new Event1(), getProperties()); - } - - @ThreadSafe - public void dispatchEvent2() { - getSession().dispatchEvent(new Event2(), getProperties()); - } - - @ThreadSafe - public void dispatchEvent3() { - getSession().dispatchEvent(new Event3(), getProperties()); - } - - /** Handles event 1 (and event 3 which derives from event 1) */ - @DsfServiceEventHandler public void eventDispatched(Event1 e) { - fEvent1RecipientNumber = e.fRecipientNumberCounter++; - } - - /** Handles event 2 only */ - @DsfServiceEventHandler public void eventDispatched(Event2 e) { - fEvent2RecipientNumber = e.fRecipientNumberCounter++; - } - - /** Handles event 3 only */ - @DsfServiceEventHandler public void eventDispatched(Event3 e) { - fEvent3RecipientNumber = e.fRecipientNumberCounter++; - } + protected Filter getEventServicesFilter() { + return null; + } + + /////////////////////////////////////////////////////////////////////////// + // Test API + /** Records the number in the event 1 object when this service received the event. */ + int fEvent1RecipientNumber; + + /** Records the number in the event 2 object when this service received the event. */ + int fEvent2RecipientNumber; + + /** Records the number in the event 3 object when this service received the event. */ + int fEvent3RecipientNumber; + + /** Simple event class 1 */ + public class Event1 { + /** 1-based counter for the recipient of the event. That is, whenever a handler is called with this event, the handler bumps this value */ + int fRecipientNumberCounter = 1; + } + + /** Simple event class 2. Note it doesn't have any relation to event 1 */ + public class Event2 { + /** 1-based counter for the recipient of the event. That is, whenever a handler is called with this event, the handler bumps this value */ + int fRecipientNumberCounter = 1; + } + + /** Simple event class 3. Note it does sub-class event 1 */ + public class Event3 extends Event1 { + } + + @ThreadSafe + public void dispatchEvent1() { + getSession().dispatchEvent(new Event1(), getProperties()); + } + + @ThreadSafe + public void dispatchEvent2() { + getSession().dispatchEvent(new Event2(), getProperties()); + } + + @ThreadSafe + public void dispatchEvent3() { + getSession().dispatchEvent(new Event3(), getProperties()); + } + + /** Handles event 1 (and event 3 which derives from event 1) */ + @DsfServiceEventHandler + public void eventDispatched(Event1 e) { + fEvent1RecipientNumber = e.fRecipientNumberCounter++; + } + + /** Handles event 2 only */ + @DsfServiceEventHandler + public void eventDispatched(Event2 e) { + fEvent2RecipientNumber = e.fRecipientNumberCounter++; + } + + /** Handles event 3 only */ + @DsfServiceEventHandler + public void eventDispatched(Event3 e) { + fEvent3RecipientNumber = e.fRecipientNumberCounter++; + } } diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event1.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event1.java index 911d5c67111..b9b812b5371 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event1.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event1.java @@ -7,13 +7,12 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.tests.dsf.events; - public class Event1 { } diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event2.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event2.java index ac6989ba446..395296b3a4c 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event2.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event2.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/EventTest.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/EventTest.java index 48edd191f3f..19a979aeab7 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/EventTest.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/EventTest.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ @@ -26,214 +26,228 @@ import org.junit.Before; import org.junit.Test; public class EventTest { - - DsfSession fSession; - TestDsfExecutor fExecutor; - DsfServicesTracker fTracker; - Service1 fService1; - Service2 fService2; - Service3 fService3; - Service4 fService4; - - @Before public void startServices() throws ExecutionException, InterruptedException { - fExecutor = new TestDsfExecutor(); - - fExecutor.submit(new DsfRunnable() { @Override - public void run() { - fSession = DsfSession.startSession(fExecutor, "org.eclipse.cdt.tests.dsf"); //$NON-NLS-1$ - }}).get(); - - StartupSequence startupSeq = new StartupSequence(fSession); - fExecutor.execute(startupSeq); - startupSeq.get(); - - fExecutor.submit(new DsfRunnable() { @Override - public void run() { - fTracker = new DsfServicesTracker(DsfTestPlugin.getBundleContext(), fSession.getId()); - fService1 = fTracker.getService(Service1.class); - fService2 = fTracker.getService(Service2.class); - fService3 = fTracker.getService(Service3.class); - fService4 = fTracker.getService(Service4.class); - }}).get(); - Assert.assertNotNull(fService1); - Assert.assertNotNull(fService2); - Assert.assertNotNull(fService3); - Assert.assertNotNull(fService4); - } - - @After public void shutdownServices() throws ExecutionException, InterruptedException { - ShutdownSequence shutdownSeq = new ShutdownSequence(fSession); - fExecutor.execute(shutdownSeq); - shutdownSeq.get(); - - fExecutor.submit(new DsfRunnable() { @Override - public void run() { - fService1 = null; - fService2 = null; - fService3 = null; - fService4 = null; - fTracker.dispose(); - fTracker = null; - DsfSession.endSession(fSession); - fSession = null; - fExecutor.shutdown(); - }}).get(); - - if (fExecutor.exceptionsCaught()) { - Throwable[] exceptions = fExecutor.getExceptions(); - throw new ExecutionException(exceptions[0]); - } - fExecutor = null; - } - - /** - * Test only the startup and shutdown sequences. - */ - @Test public void startStopTest() { - } - - private void assertEventNotReceivedByAnyService(int eventNumber) { - switch (eventNumber) { - case 1: - Assert.assertTrue(0 == fService1.fEvent1RecipientNumber); - Assert.assertTrue(0 == fService2.fEvent1RecipientNumber); - Assert.assertTrue(0 == fService3.fEvent1RecipientNumber); - Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); - break; - case 2: - Assert.assertTrue(0 == fService1.fEvent2RecipientNumber); - Assert.assertTrue(0 == fService2.fEvent2RecipientNumber); - Assert.assertTrue(0 == fService3.fEvent2RecipientNumber); - Assert.assertTrue(0 == fService4.fEvent2RecipientNumber); - break; - case 3: - Assert.assertTrue(0 == fService1.fEvent3RecipientNumber); - Assert.assertTrue(0 == fService2.fEvent3RecipientNumber); - Assert.assertTrue(0 == fService3.fEvent3RecipientNumber); - Assert.assertTrue(0 == fService4.fEvent3RecipientNumber); - break; - default: - Assert.fail("invalid event number specified."); - } - } - - /** - * Tests dispatching event 1. The goal of the test is to make sure that - * recipients are called in the correct order. - */ - @Test public void event1Test() throws ExecutionException, InterruptedException { - + + DsfSession fSession; + TestDsfExecutor fExecutor; + DsfServicesTracker fTracker; + Service1 fService1; + Service2 fService2; + Service3 fService3; + Service4 fService4; + + @Before + public void startServices() throws ExecutionException, InterruptedException { + fExecutor = new TestDsfExecutor(); + + fExecutor.submit(new DsfRunnable() { + @Override + public void run() { + fSession = DsfSession.startSession(fExecutor, "org.eclipse.cdt.tests.dsf"); //$NON-NLS-1$ + } + }).get(); + + StartupSequence startupSeq = new StartupSequence(fSession); + fExecutor.execute(startupSeq); + startupSeq.get(); + + fExecutor.submit(new DsfRunnable() { + @Override + public void run() { + fTracker = new DsfServicesTracker(DsfTestPlugin.getBundleContext(), fSession.getId()); + fService1 = fTracker.getService(Service1.class); + fService2 = fTracker.getService(Service2.class); + fService3 = fTracker.getService(Service3.class); + fService4 = fTracker.getService(Service4.class); + } + }).get(); + Assert.assertNotNull(fService1); + Assert.assertNotNull(fService2); + Assert.assertNotNull(fService3); + Assert.assertNotNull(fService4); + } + + @After + public void shutdownServices() throws ExecutionException, InterruptedException { + ShutdownSequence shutdownSeq = new ShutdownSequence(fSession); + fExecutor.execute(shutdownSeq); + shutdownSeq.get(); + + fExecutor.submit(new DsfRunnable() { + @Override + public void run() { + fService1 = null; + fService2 = null; + fService3 = null; + fService4 = null; + fTracker.dispose(); + fTracker = null; + DsfSession.endSession(fSession); + fSession = null; + fExecutor.shutdown(); + } + }).get(); + + if (fExecutor.exceptionsCaught()) { + Throwable[] exceptions = fExecutor.getExceptions(); + throw new ExecutionException(exceptions[0]); + } + fExecutor = null; + } + + /** + * Test only the startup and shutdown sequences. + */ + @Test + public void startStopTest() { + } + + private void assertEventNotReceivedByAnyService(int eventNumber) { + switch (eventNumber) { + case 1: + Assert.assertTrue(0 == fService1.fEvent1RecipientNumber); + Assert.assertTrue(0 == fService2.fEvent1RecipientNumber); + Assert.assertTrue(0 == fService3.fEvent1RecipientNumber); + Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); + break; + case 2: + Assert.assertTrue(0 == fService1.fEvent2RecipientNumber); + Assert.assertTrue(0 == fService2.fEvent2RecipientNumber); + Assert.assertTrue(0 == fService3.fEvent2RecipientNumber); + Assert.assertTrue(0 == fService4.fEvent2RecipientNumber); + break; + case 3: + Assert.assertTrue(0 == fService1.fEvent3RecipientNumber); + Assert.assertTrue(0 == fService2.fEvent3RecipientNumber); + Assert.assertTrue(0 == fService3.fEvent3RecipientNumber); + Assert.assertTrue(0 == fService4.fEvent3RecipientNumber); + break; + default: + Assert.fail("invalid event number specified."); + } + } + + /** + * Tests dispatching event 1. The goal of the test is to make sure that + * recipients are called in the correct order. + */ + @Test + public void event1Test() throws ExecutionException, InterruptedException { + // All the services should receive the event except service 4, which // specifies a services filter when registering itself as a listener. // The filter limits the listener to events originating from service 2. - fService1.dispatchEvent1(); - fExecutor.submit(new DsfRunnable() { @Override - public void run() { - Assert.assertTrue(1 == fService1.fEvent1RecipientNumber); - Assert.assertTrue(2 == fService2.fEvent1RecipientNumber); - Assert.assertTrue(3 == fService3.fEvent1RecipientNumber); - Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); - assertEventNotReceivedByAnyService(2); - assertEventNotReceivedByAnyService(3); - }}).get(); - + fService1.dispatchEvent1(); + fExecutor.submit(new DsfRunnable() { + @Override + public void run() { + Assert.assertTrue(1 == fService1.fEvent1RecipientNumber); + Assert.assertTrue(2 == fService2.fEvent1RecipientNumber); + Assert.assertTrue(3 == fService3.fEvent1RecipientNumber); + Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); + assertEventNotReceivedByAnyService(2); + assertEventNotReceivedByAnyService(3); + } + }).get(); // Reset the counts for event 1. We're going to fire it again but this // time from service 2. Now service 4 should receive the event since it // is being sent from service 2 (meeting the filter criteria) - fService1.fEvent1RecipientNumber = - fService2.fEvent1RecipientNumber = - fService3.fEvent1RecipientNumber = - fService4.fEvent1RecipientNumber = 0; - - fService2.dispatchEvent1(); - fExecutor.submit(new DsfRunnable() { @Override - public void run() { - Assert.assertTrue(1 == fService1.fEvent1RecipientNumber); - Assert.assertTrue(2 == fService2.fEvent1RecipientNumber); - Assert.assertTrue(3 == fService3.fEvent1RecipientNumber); - Assert.assertTrue(4 == fService4.fEvent1RecipientNumber); - assertEventNotReceivedByAnyService(2); - assertEventNotReceivedByAnyService(3); - }}).get(); + fService1.fEvent1RecipientNumber = fService2.fEvent1RecipientNumber = fService3.fEvent1RecipientNumber = fService4.fEvent1RecipientNumber = 0; + + fService2.dispatchEvent1(); + fExecutor.submit(new DsfRunnable() { + @Override + public void run() { + Assert.assertTrue(1 == fService1.fEvent1RecipientNumber); + Assert.assertTrue(2 == fService2.fEvent1RecipientNumber); + Assert.assertTrue(3 == fService3.fEvent1RecipientNumber); + Assert.assertTrue(4 == fService4.fEvent1RecipientNumber); + assertEventNotReceivedByAnyService(2); + assertEventNotReceivedByAnyService(3); + } + }).get(); // Reset the counts for event 1. We're going to fire it again but this // time from service 3. As in the first case, service 4 should not // receive it. - fService1.fEvent1RecipientNumber = - fService2.fEvent1RecipientNumber = - fService3.fEvent1RecipientNumber = - fService4.fEvent1RecipientNumber = 0; - - fService3.dispatchEvent1(); - fExecutor.submit(new DsfRunnable() { @Override - public void run() { - Assert.assertTrue(1 == fService1.fEvent1RecipientNumber); - Assert.assertTrue(2 == fService2.fEvent1RecipientNumber); - Assert.assertTrue(3 == fService3.fEvent1RecipientNumber); - Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); - assertEventNotReceivedByAnyService(2); - assertEventNotReceivedByAnyService(3); - }}).get(); - - // Ditto when firing the event from service 4 - fService1.fEvent1RecipientNumber = - fService2.fEvent1RecipientNumber = - fService3.fEvent1RecipientNumber = - fService4.fEvent1RecipientNumber = 0; - - fService4.dispatchEvent1(); - fExecutor.submit(new DsfRunnable() { @Override - public void run() { - Assert.assertTrue(1 == fService1.fEvent1RecipientNumber); - Assert.assertTrue(2 == fService2.fEvent1RecipientNumber); - Assert.assertTrue(3 == fService3.fEvent1RecipientNumber); - Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); - assertEventNotReceivedByAnyService(2); - assertEventNotReceivedByAnyService(3); - }}).get(); - } - - /** - * Tests dispatching event 2. The goal of the test is to make sure that - * recipients are called in the correct order, and that the other events - * are not registered. - */ - @Test public void event2Test() throws ExecutionException, InterruptedException { - fService1.dispatchEvent2(); - fExecutor.submit(new DsfRunnable() { @Override - public void run() { - assertEventNotReceivedByAnyService(1); - Assert.assertTrue(1 == fService1.fEvent2RecipientNumber); - Assert.assertTrue(2 == fService2.fEvent2RecipientNumber); - Assert.assertTrue(3 == fService3.fEvent2RecipientNumber); - Assert.assertTrue(0 == fService4.fEvent2RecipientNumber); // service 4 specified filter to receive events only from service 2 - assertEventNotReceivedByAnyService(3); - }}).get(); - } + fService1.fEvent1RecipientNumber = fService2.fEvent1RecipientNumber = fService3.fEvent1RecipientNumber = fService4.fEvent1RecipientNumber = 0; + + fService3.dispatchEvent1(); + fExecutor.submit(new DsfRunnable() { + @Override + public void run() { + Assert.assertTrue(1 == fService1.fEvent1RecipientNumber); + Assert.assertTrue(2 == fService2.fEvent1RecipientNumber); + Assert.assertTrue(3 == fService3.fEvent1RecipientNumber); + Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); + assertEventNotReceivedByAnyService(2); + assertEventNotReceivedByAnyService(3); + } + }).get(); + + // Ditto when firing the event from service 4 + fService1.fEvent1RecipientNumber = fService2.fEvent1RecipientNumber = fService3.fEvent1RecipientNumber = fService4.fEvent1RecipientNumber = 0; + + fService4.dispatchEvent1(); + fExecutor.submit(new DsfRunnable() { + @Override + public void run() { + Assert.assertTrue(1 == fService1.fEvent1RecipientNumber); + Assert.assertTrue(2 == fService2.fEvent1RecipientNumber); + Assert.assertTrue(3 == fService3.fEvent1RecipientNumber); + Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); + assertEventNotReceivedByAnyService(2); + assertEventNotReceivedByAnyService(3); + } + }).get(); + } + + /** + * Tests dispatching event 2. The goal of the test is to make sure that + * recipients are called in the correct order, and that the other events + * are not registered. + */ + @Test + public void event2Test() throws ExecutionException, InterruptedException { + fService1.dispatchEvent2(); + fExecutor.submit(new DsfRunnable() { + @Override + public void run() { + assertEventNotReceivedByAnyService(1); + Assert.assertTrue(1 == fService1.fEvent2RecipientNumber); + Assert.assertTrue(2 == fService2.fEvent2RecipientNumber); + Assert.assertTrue(3 == fService3.fEvent2RecipientNumber); + Assert.assertTrue(0 == fService4.fEvent2RecipientNumber); // service 4 specified filter to receive events only from service 2 + assertEventNotReceivedByAnyService(3); + } + }).get(); + } /** * Tests dispatching event 2. The goal of the test is to make sure that both * event 2 and even 3 recipients are called for this event, since Event3 * derives from Event1. <br> - * + * * Note: When a single listener object has more than one method that that * matches the event, both methods will be called. But there is currently no * guaranteed order in which they should be called. */ - @Test public void event3Test() throws ExecutionException, InterruptedException { - fService1.dispatchEvent3(); - fExecutor.submit(new DsfRunnable() { @Override - public void run() { - Assert.assertTrue(1 == fService1.fEvent1RecipientNumber || 2 == fService1.fEvent1RecipientNumber); - Assert.assertTrue(3 == fService2.fEvent1RecipientNumber || 4 == fService2.fEvent1RecipientNumber); - Assert.assertTrue(5 == fService3.fEvent1RecipientNumber || 6 == fService3.fEvent1RecipientNumber); - Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); // service 4 specified filter to receive events only from service 2 - assertEventNotReceivedByAnyService(2); - Assert.assertTrue(1 == fService1.fEvent3RecipientNumber || 2 == fService1.fEvent3RecipientNumber); - Assert.assertTrue(3 == fService2.fEvent3RecipientNumber || 4 == fService2.fEvent3RecipientNumber); - Assert.assertTrue(5 == fService3.fEvent3RecipientNumber || 6 == fService3.fEvent3RecipientNumber); - Assert.assertTrue(0 == fService4.fEvent3RecipientNumber); // service 4 specified filter to receive events only from service 2 - }}).get(); - } + @Test + public void event3Test() throws ExecutionException, InterruptedException { + fService1.dispatchEvent3(); + fExecutor.submit(new DsfRunnable() { + @Override + public void run() { + Assert.assertTrue(1 == fService1.fEvent1RecipientNumber || 2 == fService1.fEvent1RecipientNumber); + Assert.assertTrue(3 == fService2.fEvent1RecipientNumber || 4 == fService2.fEvent1RecipientNumber); + Assert.assertTrue(5 == fService3.fEvent1RecipientNumber || 6 == fService3.fEvent1RecipientNumber); + Assert.assertTrue(0 == fService4.fEvent1RecipientNumber); // service 4 specified filter to receive events only from service 2 + assertEventNotReceivedByAnyService(2); + Assert.assertTrue(1 == fService1.fEvent3RecipientNumber || 2 == fService1.fEvent3RecipientNumber); + Assert.assertTrue(3 == fService2.fEvent3RecipientNumber || 4 == fService2.fEvent3RecipientNumber); + Assert.assertTrue(5 == fService3.fEvent3RecipientNumber || 6 == fService3.fEvent3RecipientNumber); + Assert.assertTrue(0 == fService4.fEvent3RecipientNumber); // service 4 specified filter to receive events only from service 2 + } + }).get(); + } } diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service1.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service1.java index dc6f20c9e10..3c1d4fcc045 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service1.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service1.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ @@ -19,27 +19,28 @@ import org.eclipse.cdt.dsf.concurrent.RequestMonitor; import org.eclipse.cdt.dsf.service.DsfSession; public class Service1 extends AbstractService { - Service1(DsfSession session) { - super(session); - } - - @Override public void initialize(final RequestMonitor requestMonitor) { - super.initialize( - new RequestMonitor(getExecutor(), requestMonitor) { - @Override - public void handleSuccess() { - doInitialize(requestMonitor); - } - }); - } - - private void doInitialize(RequestMonitor requestMonitor) { - register(new String[]{Service1.class.getName()}, new Hashtable<String,String>()); - requestMonitor.done(); - } + Service1(DsfSession session) { + super(session); + } + + @Override + public void initialize(final RequestMonitor requestMonitor) { + super.initialize(new RequestMonitor(getExecutor(), requestMonitor) { + @Override + public void handleSuccess() { + doInitialize(requestMonitor); + } + }); + } + + private void doInitialize(RequestMonitor requestMonitor) { + register(new String[] { Service1.class.getName() }, new Hashtable<String, String>()); + requestMonitor.done(); + } - @Override public void shutdown(RequestMonitor requestMonitor) { - unregister(); - super.shutdown(requestMonitor); - } + @Override + public void shutdown(RequestMonitor requestMonitor) { + unregister(); + super.shutdown(requestMonitor); + } } diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service2.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service2.java index 388c97cf656..867e2607ced 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service2.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service2.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ @@ -19,28 +19,29 @@ import org.eclipse.cdt.dsf.concurrent.RequestMonitor; import org.eclipse.cdt.dsf.service.DsfSession; public class Service2 extends AbstractService { - Service2(DsfSession session) { - super(session); - } - - @Override public void initialize(final RequestMonitor requestMonitor) { - super.initialize( - new RequestMonitor(getExecutor(), requestMonitor) { - @Override - public void handleSuccess() { - doInitialize(requestMonitor); - } - }); - } - - private void doInitialize(RequestMonitor requestMonitor) { - getServicesTracker().getService(Service1.class); - register(new String[]{Service2.class.getName()}, new Hashtable<String,String>()); - requestMonitor.done(); - } + Service2(DsfSession session) { + super(session); + } + + @Override + public void initialize(final RequestMonitor requestMonitor) { + super.initialize(new RequestMonitor(getExecutor(), requestMonitor) { + @Override + public void handleSuccess() { + doInitialize(requestMonitor); + } + }); + } + + private void doInitialize(RequestMonitor requestMonitor) { + getServicesTracker().getService(Service1.class); + register(new String[] { Service2.class.getName() }, new Hashtable<String, String>()); + requestMonitor.done(); + } - @Override public void shutdown(RequestMonitor requestMonitor) { - unregister(); - super.shutdown(requestMonitor); - } + @Override + public void shutdown(RequestMonitor requestMonitor) { + unregister(); + super.shutdown(requestMonitor); + } } diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service3.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service3.java index aae038da400..dd1dfcc0ec9 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service3.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service3.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ @@ -19,29 +19,30 @@ import org.eclipse.cdt.dsf.concurrent.RequestMonitor; import org.eclipse.cdt.dsf.service.DsfSession; public class Service3 extends AbstractService { - Service3(DsfSession session) { - super(session); - } + Service3(DsfSession session) { + super(session); + } + + @Override + public void initialize(final RequestMonitor requestMonitor) { + super.initialize(new RequestMonitor(getExecutor(), requestMonitor) { + @Override + public void handleSuccess() { + doInitialize(requestMonitor); + } + }); + } - @Override public void initialize(final RequestMonitor requestMonitor) { - super.initialize( - new RequestMonitor(getExecutor(), requestMonitor) { - @Override - public void handleSuccess() { - doInitialize(requestMonitor); - } - }); - } - - private void doInitialize(RequestMonitor requestMonitor) { - getServicesTracker().getService(Service1.class); - getServicesTracker().getService(Service2.class); - register(new String[]{Service3.class.getName()}, new Hashtable<String,String>()); - requestMonitor.done(); - } + private void doInitialize(RequestMonitor requestMonitor) { + getServicesTracker().getService(Service1.class); + getServicesTracker().getService(Service2.class); + register(new String[] { Service3.class.getName() }, new Hashtable<String, String>()); + requestMonitor.done(); + } - @Override public void shutdown(RequestMonitor requestMonitor) { - unregister(); - super.shutdown(requestMonitor); - } + @Override + public void shutdown(RequestMonitor requestMonitor) { + unregister(); + super.shutdown(requestMonitor); + } } diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service4.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service4.java index e9e35a327e9..a14ae42a2b4 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service4.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service4.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Freescale Semiconductor - initial API and implementation *******************************************************************************/ @@ -24,46 +24,48 @@ import org.osgi.framework.InvalidSyntaxException; /** * This service differs from the other three in that when it registers itself as * an event listener with the dsf session, it specifies a services filter. - * + * */ public class Service4 extends AbstractService { - Service4(DsfSession session) { - super(session); - } + Service4(DsfSession session) { + super(session); + } + + @Override + public void initialize(final RequestMonitor requestMonitor) { + super.initialize(new RequestMonitor(getExecutor(), requestMonitor) { + @Override + public void handleSuccess() { + doInitialize(requestMonitor); + } + }); + } + + private void doInitialize(RequestMonitor requestMonitor) { + getServicesTracker().getService(Service1.class); + getServicesTracker().getService(Service2.class); + getServicesTracker().getService(Service3.class); + register(new String[] { Service4.class.getName() }, new Hashtable<String, String>()); + requestMonitor.done(); + } - @Override public void initialize(final RequestMonitor requestMonitor) { - super.initialize( - new RequestMonitor(getExecutor(), requestMonitor) { - @Override - public void handleSuccess() { - doInitialize(requestMonitor); - } - }); - } - - private void doInitialize(RequestMonitor requestMonitor) { - getServicesTracker().getService(Service1.class); - getServicesTracker().getService(Service2.class); - getServicesTracker().getService(Service3.class); - register(new String[]{Service4.class.getName()}, new Hashtable<String,String>()); - requestMonitor.done(); - } + @Override + public void shutdown(RequestMonitor requestMonitor) { + unregister(); + super.shutdown(requestMonitor); + } - @Override public void shutdown(RequestMonitor requestMonitor) { - unregister(); - super.shutdown(requestMonitor); - } - - /** - * We want to get events only from Service2. - * @see org.eclipse.cdt.tests.dsf.events.AbstractService#getEventServicesFilter() - */ - @Override protected Filter getEventServicesFilter() { - try { + /** + * We want to get events only from Service2. + * @see org.eclipse.cdt.tests.dsf.events.AbstractService#getEventServicesFilter() + */ + @Override + protected Filter getEventServicesFilter() { + try { return getBundleContext().createFilter("(objectClass=org.eclipse.cdt.tests.dsf.events.Service2)"); } catch (InvalidSyntaxException e) { Assert.fail(); return null; } - } + } } diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/ShutdownSequence.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/ShutdownSequence.java index ce567b4e932..ac0da1eccc9 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/ShutdownSequence.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/ShutdownSequence.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ @@ -24,55 +24,65 @@ import org.eclipse.core.runtime.Status; class ShutdownSequence extends Sequence { - DsfSession fSession; - DsfServicesTracker fTracker; + DsfSession fSession; + DsfServicesTracker fTracker; + + ShutdownSequence(DsfSession session) { + super(session.getExecutor()); + fSession = session; + } + + @Override + public Step[] getSteps() { + return fSteps; + } - ShutdownSequence(DsfSession session) { - super(session.getExecutor()); - fSession = session; - } + final Step[] fSteps = new Step[] { new Step() { + @Override + public void execute(RequestMonitor requestMonitor) { + fTracker = new DsfServicesTracker(DsfTestPlugin.getBundleContext(), fSession.getId()); + requestMonitor.done(); + } - @Override - public Step[] getSteps() { return fSteps; } + @Override + public void rollBack(RequestMonitor requestMonitor) { + fTracker.dispose(); + fTracker = null; + requestMonitor.done(); + } + }, new Step() { + @Override + public void execute(RequestMonitor requestMonitor) { + shutdownService(Service3.class, requestMonitor); + } + }, new Step() { + @Override + public void execute(RequestMonitor requestMonitor) { + shutdownService(Service2.class, requestMonitor); + } + }, new Step() { + @Override + public void execute(RequestMonitor requestMonitor) { + shutdownService(Service1.class, requestMonitor); + } + }, new Step() { + @Override + public void execute(RequestMonitor requestMonitor) { + fTracker.dispose(); + fTracker = null; + requestMonitor.done(); + } + } }; - final Step[] fSteps = new Step[] { - new Step() { - @Override public void execute(RequestMonitor requestMonitor) { - fTracker = new DsfServicesTracker(DsfTestPlugin.getBundleContext(), fSession.getId()); - requestMonitor.done(); - } - - @Override public void rollBack(RequestMonitor requestMonitor) { - fTracker.dispose(); - fTracker = null; - requestMonitor.done(); - } - }, - new Step() { @Override public void execute(RequestMonitor requestMonitor) { - shutdownService(Service3.class, requestMonitor); - }}, - new Step() { @Override public void execute(RequestMonitor requestMonitor) { - shutdownService(Service2.class, requestMonitor); - }}, - new Step() { @Override public void execute(RequestMonitor requestMonitor) { - shutdownService(Service1.class, requestMonitor); - }}, - new Step() { @Override public void execute(RequestMonitor requestMonitor) { - fTracker.dispose(); - fTracker = null; - requestMonitor.done(); - }} - }; - - private void shutdownService(Class<? extends IDsfService> clazz, RequestMonitor requestMonitor) { - IDsfService service = fTracker.getService(clazz); - if (service != null) { - service.shutdown(requestMonitor); - } - else { - requestMonitor.setStatus(new Status(IStatus.ERROR, DsfTestPlugin.PLUGIN_ID, -1, "Service '" + clazz.getName() + "' not found.", null)); //$NON-NLS-1$//$NON-NLS-2$ - requestMonitor.done(); - } - } + private void shutdownService(Class<? extends IDsfService> clazz, RequestMonitor requestMonitor) { + IDsfService service = fTracker.getService(clazz); + if (service != null) { + service.shutdown(requestMonitor); + } else { + requestMonitor.setStatus(new Status(IStatus.ERROR, DsfTestPlugin.PLUGIN_ID, -1, + "Service '" + clazz.getName() + "' not found.", null)); //$NON-NLS-1$//$NON-NLS-2$ + requestMonitor.done(); + } + } } diff --git a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/StartupSequence.java b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/StartupSequence.java index 83b1561fcb9..920b50d9d78 100644 --- a/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/StartupSequence.java +++ b/dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/StartupSequence.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ @@ -18,28 +18,37 @@ import org.eclipse.cdt.dsf.concurrent.Sequence; import org.eclipse.cdt.dsf.service.DsfSession; class StartupSequence extends Sequence { - DsfSession fSession; + DsfSession fSession; + + StartupSequence(DsfSession session) { + super(session.getExecutor()); + fSession = session; + } - StartupSequence(DsfSession session) { - super(session.getExecutor()); - fSession = session; - } + @Override + public Step[] getSteps() { + return fSteps; + } - @Override - public Step[] getSteps() { return fSteps; } - - final Step[] fSteps = new Step[] { - new Step() { @Override public void execute(RequestMonitor requestMonitor) { - new Service1(fSession).initialize(requestMonitor); - }}, - new Step() { @Override public void execute(RequestMonitor requestMonitor) { - new Service2(fSession).initialize(requestMonitor); - }}, - new Step() { @Override public void execute(RequestMonitor requestMonitor) { - new Service3(fSession).initialize(requestMonitor); - }}, - new Step() { @Override public void execute(RequestMonitor requestMonitor) { - new Service4(fSession).initialize(requestMonitor); - }} - }; + final Step[] fSteps = new Step[] { new Step() { + @Override + public void execute(RequestMonitor requestMonitor) { + new Service1(fSession).initialize(requestMonitor); + } + }, new Step() { + @Override + public void execute(RequestMonitor requestMonitor) { + new Service2(fSession).initialize(requestMonitor); + } + }, new Step() { + @Override + public void execute(RequestMonitor requestMonitor) { + new Service3(fSession).initialize(requestMonitor); + } + }, new Step() { + @Override + public void execute(RequestMonitor requestMonitor) { + new Service4(fSession).initialize(requestMonitor); + } + } }; } |