/******************************************************************************* * 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.discovery; import java.net.URI; import java.util.Comparator; import java.util.Properties; import java.util.Random; import junit.framework.TestCase; import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; import org.eclipse.ecf.discovery.IDiscoveryLocator; import org.eclipse.ecf.discovery.IServiceInfo; import org.eclipse.ecf.discovery.ServiceInfo; import org.eclipse.ecf.discovery.ServiceProperties; import org.eclipse.ecf.discovery.identity.IServiceTypeID; import org.eclipse.ecf.discovery.identity.ServiceIDFactory; public abstract class AbstractDiscoveryTest extends TestCase { public static final String TEST_NAME = "testName"; private final Random random; protected IServiceInfo serviceInfo; protected String protocol = DiscoveryTestHelper.PROTOCOL; protected String scope = DiscoveryTestHelper.SCOPE; protected long ttl = DiscoveryTestHelper.TTL; protected String namingAuthority = DiscoveryTestHelper.NAMINGAUTHORITY; protected String[] services = DiscoveryTestHelper.SERVICES; protected Comparator comparator = new ServiceInfoComparator(); protected String containerUnderTest; protected IDiscoveryLocator discoveryLocator = null; protected IDiscoveryAdvertiser discoveryAdvertiser = null; private String hostname = DiscoveryTestHelper.HOSTNAME; private String testId; public AbstractDiscoveryTest(String name) { super(); this.containerUnderTest = name; this.random = new Random(); } public String getTestId() { return testId; } protected abstract IDiscoveryLocator getDiscoveryLocator(); protected abstract IDiscoveryAdvertiser getDiscoveryAdvertiser(); protected void setComparator(Comparator comparator) { this.comparator = comparator; } protected void setProtocol(String protocol) { this.protocol = protocol; } protected void setScope(String scope) { this.scope = scope; } protected void setTTL(long aTTL) { this.ttl = aTTL; } protected void setHostname(String aHostname) { this.hostname = aHostname; } protected void setNamingAuthority(String namingAuthority) { this.namingAuthority = namingAuthority; } protected void setServices(String[] aServices) { this.services = aServices; } protected void setUp() throws Exception { super.setUp(); assertNotNull(containerUnderTest); assertTrue(containerUnderTest.startsWith("ecf.discovery.")); discoveryLocator = getDiscoveryLocator(); discoveryAdvertiser = getDiscoveryAdvertiser(); assertNotNull("IDiscoveryLocator must not be null", discoveryLocator); assertNotNull("IDiscoveryAdvertiser must not be null", discoveryAdvertiser); final Properties props = new Properties(); final URI uri = DiscoveryTestHelper.createDefaultURI(hostname); IServiceTypeID serviceTypeID = ServiceIDFactory.getDefault().createServiceTypeID(discoveryLocator.getServicesNamespace(), services, new String[]{scope}, new String[]{protocol}, namingAuthority); assertNotNull(serviceTypeID); final ServiceProperties serviceProperties = new ServiceProperties(props); serviceProperties.setPropertyString(TEST_NAME, getName()); testId = Long.toString(random.nextLong()); serviceProperties.setPropertyString(getName() + "testIdentifier", testId); serviceProperties.setPropertyString(getName() + "servicePropertiesString", "serviceProperties"); serviceProperties.setProperty(getName() + "servicePropertiesIntegerMax", new Integer(Integer.MIN_VALUE)); serviceProperties.setProperty(getName() + "servicePropertiesIntegerMin", new Integer(Integer.MAX_VALUE)); serviceProperties.setProperty(getName() + "servicePropertiesBoolean", new Boolean(false)); serviceProperties.setPropertyBytes(getName() + "servicePropertiesByte", new byte[]{-127, -126, -125, 0, 1, 2, 3, 'a', 'b', 'c', 'd', 126, 127}); serviceInfo = new ServiceInfo(uri, DiscoveryTestHelper.SERVICENAME, serviceTypeID, 1, 1, serviceProperties, ttl); assertNotNull(serviceInfo); } }