Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events')
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/AbstractService.java183
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event1.java3
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Event2.java2
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/EventTest.java396
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service1.java47
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service2.java49
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service3.java49
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/Service4.java70
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/ShutdownSequence.java106
-rw-r--r--dsf/org.eclipse.cdt.tests.dsf/src/org/eclipse/cdt/tests/dsf/events/StartupSequence.java55
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);
+ }
+ } };
}

Back to the top