| /******************************************************************************* |
| * 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 <at> lemmster <dot> de) - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.ecf.tests.provider.discovery; |
| |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.HashSet; |
| import java.util.Iterator; |
| import java.util.List; |
| import java.util.Set; |
| |
| import org.eclipse.ecf.core.IContainer; |
| import org.eclipse.ecf.core.events.IContainerEvent; |
| import org.eclipse.ecf.core.identity.ID; |
| import org.eclipse.ecf.discovery.IDiscoveryLocator; |
| 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.DiscoveryServiceTest; |
| import org.eclipse.ecf.tests.discovery.listener.TestServiceListener; |
| |
| public class CompositeDiscoveryServiceContainerTest extends |
| DiscoveryServiceTest { |
| |
| // private IContainer container; |
| // |
| // public CompositeDiscoveryServiceContainerTest() { |
| // super("ecf.discovery.composite"); |
| // 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.DiscoveryServiceTest#setUp() |
| // */ |
| // protected void setUp() throws Exception { |
| // super.setUp(); |
| // container = (IContainer) discoveryLocator; |
| // |
| // final Collection discoveryContainers = ((CompositeDiscoveryContainer) discoveryLocator) |
| // .getDiscoveryContainers(); |
| // final Set s = new HashSet(); |
| // for (final Iterator itr = discoveryContainers.iterator(); itr.hasNext();) { |
| // final IDiscoveryLocator object = (IDiscoveryLocator) itr.next(); |
| // final IContainer adapter = (IContainer) object |
| // .getAdapter(IContainer.class); |
| // s.add(adapter.getID()); |
| // } |
| // // make sure it's never (accidentally) modified by a test |
| // idsToExpect = Collections.unmodifiableSet(s); |
| // |
| // eventsToExpect = discoveryContainers.size(); |
| // |
| // assertTrue("zero events make no sense", eventsToExpect > 0); |
| // } |
| // |
| // 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()); |
| // } |
| // |
| // protected Collection getContainerIds(IContainerEvent[] events) { |
| // final Collection originalIds = new ArrayList(); |
| // for (int i = 0; i < events.length; i++) { |
| // final IContainerEvent iContainerEvent = events[i]; |
| // if (iContainerEvent instanceof CompositeServiceContainerEvent) { |
| // final CompositeServiceContainerEvent csce = (CompositeServiceContainerEvent) iContainerEvent; |
| // originalIds.add(csce.getOriginalLocalContainerID()); |
| // } else { |
| // System.err.println("WARNING: Skipping non CompositeServiceContainerEvent in CompositeDiscoveryServiceContainerTest#getContainerIds(IContainerEvent[])"); |
| // //originalIds.add(iContainerEvent.getLocalContainerID()); |
| // } |
| // } |
| // return originalIds; |
| // } |
| } |