diff options
author | mkuppe | 2008-05-24 13:42:09 +0000 |
---|---|---|
committer | mkuppe | 2008-05-24 13:42:09 +0000 |
commit | f7acd5e2d2bc4b49b7892da213027323ba7219b4 (patch) | |
tree | f08c3899985d6181487020154e644e3f9705fbbd | |
parent | 32a0eec8db5fe736e1da64bae3a6c0b1a5316233 (diff) | |
download | org.eclipse.ecf-f7acd5e2d2bc4b49b7892da213027323ba7219b4.tar.gz org.eclipse.ecf-f7acd5e2d2bc4b49b7892da213027323ba7219b4.tar.xz org.eclipse.ecf-f7acd5e2d2bc4b49b7892da213027323ba7219b4.zip |
RESOLVED - bug 233809: [Discovery][SLP] org.eclipse.ecf.tests.discovery.DiscoveryTest.addListenerRegisterAndWait(TestListener, IServiceInfo) wait unnecessarily long
https://bugs.eclipse.org/bugs/show_bug.cgi?id=233809
2 files changed, 30 insertions, 27 deletions
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryTest.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryTest.java index 84ce344f7..eff87e889 100755 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryTest.java +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryTest.java @@ -38,11 +38,8 @@ import org.eclipse.ecf.tests.discovery.listener.TestListener; public abstract class DiscoveryTest extends AbstractDiscoveryTest { protected IServiceInfo serviceInfo; - protected IServiceID serviceID; protected IServiceInfo serviceInfo2; - protected IServiceID serviceID2; protected IServiceInfo serviceInfo3; - protected IServiceID serviceID3; protected String containerUnderTest; protected long waitTimeForProvider = 1000; @@ -124,7 +121,7 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { final Properties props = new Properties(); final URI uri = createDefaultURI(); - serviceID = (IServiceID) IDFactory.getDefault().createID(discoveryContainer.getServicesNamespace(), new Object[] {getServiceType(), getHost()}); + IServiceID serviceID = (IServiceID) IDFactory.getDefault().createID(discoveryContainer.getServicesNamespace(), new Object[] {getServiceType(), getHost()}); assertNotNull(serviceID); final ServiceProperties serviceProperties = new ServiceProperties(props); serviceProperties.setPropertyString(DiscoveryTest.class.getName() + "servicePropertiesString", "serviceProperties"); @@ -135,14 +132,14 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { serviceInfo = new ServiceInfo(uri, serviceID, 0, 0, serviceProperties); assertNotNull(serviceInfo); - serviceID2 = (IServiceID) IDFactory.getDefault().createID(discoveryContainer.getServicesNamespace(), new Object[] {"_service._ecf._tests2._fooProtocol.fooScope._fooNA", getHost()}); + IServiceID serviceID2 = (IServiceID) IDFactory.getDefault().createID(discoveryContainer.getServicesNamespace(), new Object[] {"_service._ecf._tests2._fooProtocol.fooScope._fooNA", getHost()}); assertNotNull(serviceID); final ServiceProperties serviceProperties2 = new ServiceProperties(props); serviceProperties2.setPropertyString("serviceProperties2", "serviceProperties2"); serviceInfo2 = new ServiceInfo(uri, serviceID2, 2, 2, serviceProperties2); assertNotNull(serviceInfo2); - serviceID3 = (IServiceID) IDFactory.getDefault().createID(discoveryContainer.getServicesNamespace(), new Object[] {"_service._ecf._tests3._barProtocol.barScope._barNA", getHost()}); + IServiceID serviceID3 = (IServiceID) IDFactory.getDefault().createID(discoveryContainer.getServicesNamespace(), new Object[] {"_service._ecf._tests3._barProtocol.barScope._barNA", getHost()}); assertNotNull(serviceID); final ServiceProperties serviceProperties3 = new ServiceProperties(props); serviceProperties3.setPropertyString("serviceProperties3", "serviceProperties3"); @@ -264,8 +261,8 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { public void testGetServicesIServiceTypeID() { testConnect(); registerService(); - final IServiceInfo serviceInfo[] = discoveryContainer.getServices(serviceID.getServiceTypeID()); - assertTrue(serviceInfo.length > 0); + final IServiceInfo serviceInfos[] = discoveryContainer.getServices(serviceInfo.getServiceID().getServiceTypeID()); + assertTrue(serviceInfos.length > 0); } /** @@ -398,7 +395,7 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { assertTrue("No Services must be registerd at this point", discoveryContainer.getServices().length == 0); final TestListener tsl = new TestListener(); - discoveryContainer.addServiceListener(serviceID.getServiceTypeID(), tsl); + discoveryContainer.addServiceListener(serviceInfo.getServiceID().getServiceTypeID(), tsl); addListenerRegisterAndWait(tsl, serviceInfo); assertTrue("IServiceInfo mismatch", comparator.compare(((IServiceEvent) tsl.getEvent()).getServiceInfo(), serviceInfo) == 0); } @@ -407,14 +404,11 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { synchronized (testServiceListener) { // register a service which we expect the test listener to get notified of registerService(); - int i = 0; - while (!testServiceListener.isDone() && i++ < 10) { - try { - testServiceListener.wait(waitTimeForProvider / 10); - } catch (final InterruptedException e) { - Thread.currentThread().interrupt(); - fail("Some discovery unrelated threading issues?"); - } + try { + testServiceListener.wait(waitTimeForProvider); + } catch (final InterruptedException e) { + Thread.currentThread().interrupt(); + fail("Some discovery unrelated threading issues?"); } } assertNotNull("Test listener didn't receive discovery", testServiceListener.getEvent()); @@ -535,7 +529,7 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { testConnect(); final TestListener serviceListener = new TestListener(); addServiceListener(serviceListener); - discoveryContainer.removeServiceListener(serviceID.getServiceTypeID(), serviceListener); + discoveryContainer.removeServiceListener(serviceInfo.getServiceID().getServiceTypeID(), serviceListener); } /** diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestListener.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestListener.java index cbd56aa96..a6e7a3535 100755 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestListener.java +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestListener.java @@ -10,6 +10,8 @@ ******************************************************************************/ package org.eclipse.ecf.tests.discovery.listener; +import junit.framework.TestCase; + import org.eclipse.ecf.core.events.IContainerEvent; import org.eclipse.ecf.discovery.IServiceEvent; import org.eclipse.ecf.discovery.IServiceListener; @@ -19,25 +21,28 @@ import org.eclipse.ecf.discovery.IServiceTypeListener; public class TestListener implements IServiceListener, IServiceTypeListener { private IContainerEvent event; - - public TestListener() { - } - - public boolean isDone() { - return event != null; - } - + /** - * @return the event + * @return the event that has been received by this TestListener */ public IContainerEvent getEvent() { return event; } + /* (non-Javadoc) + * @see org.eclipse.ecf.discovery.IServiceListener#serviceDiscovered(org.eclipse.ecf.discovery.IServiceEvent) + */ public void serviceDiscovered(IServiceEvent anEvent) { + TestCase.assertNull("Received several IServiceEvent", event); event = anEvent; + synchronized (this) { + notifyAll(); + } } + /* (non-Javadoc) + * @see org.eclipse.ecf.discovery.IServiceListener#serviceUndiscovered(org.eclipse.ecf.discovery.IServiceEvent) + */ public void serviceUndiscovered(IServiceEvent anEvent) { throw new java.lang.UnsupportedOperationException("TestServiceListener#serviceUndiscovered not yet implemented"); } @@ -46,6 +51,10 @@ public class TestListener implements IServiceListener, IServiceTypeListener { * @see org.eclipse.ecf.discovery.IServiceTypeListener#serviceTypeDiscovered(org.eclipse.ecf.discovery.IServiceTypeEvent) */ public void serviceTypeDiscovered(IServiceTypeEvent event) { + TestCase.assertNull("Received several IServiceEvent", event); this.event = event; + synchronized (this) { + notifyAll(); + } } } |