/******************************************************************************* * Copyright (c) 2009 Markus Alexander Kuppe. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Markus Alexander Kuppe (ecf-dev_eclipse.org lemmster de) - initial API and implementation *******************************************************************************/ package org.eclipse.ecf.tests.provider.discovery; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.eclipse.ecf.core.ContainerConnectException; import org.eclipse.ecf.core.IContainer; import org.eclipse.ecf.core.events.IContainerEvent; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.util.ECFRuntimeException; import org.eclipse.ecf.discovery.IServiceEvent; import org.eclipse.ecf.discovery.IServiceInfo; import org.eclipse.ecf.discovery.identity.IServiceTypeID; import org.eclipse.ecf.provider.discovery.CompositeDiscoveryContainer; import org.eclipse.ecf.provider.discovery.CompositeServiceContainerEvent; import org.eclipse.ecf.tests.discovery.DiscoveryContainerTest; import org.eclipse.ecf.tests.discovery.listener.TestServiceListener; public class CompositeDiscoveryContainerTest extends DiscoveryContainerTest { private TestDiscoveryContainer testDiscoveryContainer; public CompositeDiscoveryContainerTest() { super(CompositeDiscoveryContainer.NAME); setComparator(new CompositeServiceInfoComporator()); //TODO jSLP currently has the longer rediscovery interval setWaitTimeForProvider(Long.parseLong(System.getProperty("net.slp.rediscover", new Long(60L * 1000L).toString()))); //$NON-NLS-1$); //TODO-mkuppe https://bugs.eclipse.org/bugs/show_bug.cgi?id=218308 setScope(IServiceTypeID.DEFAULT_SCOPE[0]); setHostname(System.getProperty("net.mdns.interface", "127.0.0.1")); } // /* (non-Javadoc) // * @see org.eclipse.ecf.tests.discovery.DiscoveryTest#setUp() // */ // protected void setUp() throws Exception { // super.setUp(); // eventsToExpect = ((CompositeDiscoveryContainer) discoveryLocator).getDiscoveryContainers().size(); // } // // /** // * Check if // * @throws ContainerConnectException // */ // public void testAddContainerWithRegisteredServices() throws ContainerConnectException { // try { // try { // discoveryAdvertiser.registerService(serviceInfo); // } catch (ECFRuntimeException e) { // fail("Registering a service failed on a new IDCA"); // } // CompositeDiscoveryContainer cdc = (CompositeDiscoveryContainer) discoveryLocator; // testDiscoveryContainer = new TestDiscoveryContainer(); // assertTrue(cdc.addContainer(testDiscoveryContainer)); // List registeredServices = testDiscoveryContainer.getRegisteredServices(); // assertEquals("registerService(aService) wasn't called on TestDiscoveryContainer", serviceInfo, registeredServices.get(0)); // } finally { // CompositeDiscoveryContainer cdc = (CompositeDiscoveryContainer) discoveryLocator; // cdc.removeContainer(testDiscoveryContainer); // } // } // // public void testAddContainerWithoutRegisteredServices() throws ContainerConnectException { // try { // try { // discoveryAdvertiser.registerService(serviceInfo); // discoveryAdvertiser.unregisterService(serviceInfo); // } catch (ECFRuntimeException e) { // fail("Re-/Unregistering a service failed on a new IDCA"); // } // CompositeDiscoveryContainer cdc = (CompositeDiscoveryContainer) discoveryLocator; // testDiscoveryContainer = new TestDiscoveryContainer(); // assertTrue(cdc.addContainer(testDiscoveryContainer)); // List registeredServices = testDiscoveryContainer.getRegisteredServices(); // assertTrue(registeredServices.isEmpty()); // } finally { // CompositeDiscoveryContainer cdc = (CompositeDiscoveryContainer) discoveryLocator; // cdc.removeContainer(testDiscoveryContainer); // } // } // // protected void addServiceListener(TestServiceListener serviceListener) { // discoveryLocator.addServiceListener(serviceListener); // addListenerRegisterAndWait(serviceListener, serviceInfo); // discoveryLocator.removeServiceListener(serviceListener); // // // make sure we use a live container; // final IContainer ic = (IContainer) serviceListener.getLocator(); // assertTrue(ic.getConnectedID() != null); // // // check if we received correct amount of events // final IContainerEvent[] events = serviceListener.getEvent(); // assertNotNull("Test listener didn't receive any discovery events.", events); // assertEquals("Test listener received unexpected amount of discovery events: \n\t" + Arrays.asList(events), eventsToExpect, events.length); // // final List origContainers = new ArrayList(); // for (int i = 0; i < events.length; i++) { // final CompositeServiceContainerEvent event = (CompositeServiceContainerEvent) events[i]; // // // check if the local container is hidden correctly // final ID localContainerId = event.getLocalContainerID(); // final ID connectedId = container.getConnectedID(); // assertEquals(localContainerId, connectedId); // // // check the IServiceInfo for correct fields/properties // final IServiceInfo serviceInfo2 = ((IServiceEvent) event).getServiceInfo(); // assertTrue("IServiceInfo should match, expected:\n\t" + serviceInfo + " but was \n\t" + serviceInfo2, comparator.compare(serviceInfo2, serviceInfo) == 0); // // // add the underlying discovery container the the result set // origContainers.add(event.getOriginalLocalContainerID()); // } // // check that all underlying containers fired an event // assertEquals("A nested container didn't send an event, but another multiple.", eventsToExpect, origContainers.size()); // } }