diff options
| author | Markus Alexander Kuppe | 2010-07-20 15:34:28 +0000 |
|---|---|---|
| committer | Markus Alexander Kuppe | 2010-07-20 15:34:28 +0000 |
| commit | 86a18a9387f40fe96f36515c80f5fc390692cab7 (patch) | |
| tree | db88c76317face6858c51b4e1c81e53cbd8a6b2c | |
| parent | 5c5e7a9af1f04d2ca3fd6138a03a0a9395df499c (diff) | |
| download | org.eclipse.ecf-86a18a9387f40fe96f36515c80f5fc390692cab7.tar.gz org.eclipse.ecf-86a18a9387f40fe96f36515c80f5fc390692cab7.tar.xz org.eclipse.ecf-86a18a9387f40fe96f36515c80f5fc390692cab7.zip | |
NEW - bug 320188: [Discovery][DNS-SD] IDiscoveryAdvertiser must use registration domains
https://bugs.eclipse.org/bugs/show_bug.cgi?id=320188
4 files changed, 216 insertions, 25 deletions
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAbstractDiscoveryTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAbstractDiscoveryTest.java new file mode 100644 index 000000000..784174e36 --- /dev/null +++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAbstractDiscoveryTest.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright (c) 2010 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.dnssd; + +import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; +import org.eclipse.ecf.discovery.IDiscoveryLocator; +import org.eclipse.ecf.tests.discovery.AbstractDiscoveryTest; + +public abstract class DnsSdAbstractDiscoveryTest extends AbstractDiscoveryTest { + + public DnsSdAbstractDiscoveryTest() { + super(DnsSdTestHelper.ECF_DISCOVERY_DNSSD + ".advertiser"); + setNamingAuthority(DnsSdTestHelper.NAMING_AUTH); + setScope(DnsSdTestHelper.REG_DOMAIN); + setServices(new String[]{DnsSdTestHelper.REG_SCHEME}); + setProtocol(DnsSdTestHelper.PROTO); + setComparator(new DnsSdAdvertiserComparator()); + setTTL(DnsSdTestHelper.TTL); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.tests.discovery.AbstractDiscoveryTest#getDiscoveryLocator() + */ + protected IDiscoveryAdvertiser getDiscoveryAdvertiser() { + return Activator.getDefault().getDiscoveryAdvertiser(); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.tests.discovery.AbstractDiscoveryTest#getDiscoveryLocator() + */ + protected IDiscoveryLocator getDiscoveryLocator() { + return Activator.getDefault().getDiscoveryLocator(); + } +} diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserInternalTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserInternalTest.java new file mode 100644 index 000000000..a676d0178 --- /dev/null +++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserInternalTest.java @@ -0,0 +1,121 @@ +/******************************************************************************* + * Copyright (c) 2010 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.dnssd; + +import java.util.Arrays; +import java.util.List; + +import org.eclipse.ecf.core.ContainerConnectException; +import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; +import org.eclipse.ecf.provider.dnssd.DnsSdNamespace; +import org.eclipse.ecf.provider.dnssd.DnsSdServiceTypeID; + + +public class DnsSdAdvertiserInternalTest extends DnsSdAbstractDiscoveryTest { + + private static final String dnssd4 = "dnssd4.ecf-project.org"; + private static final String dnssd5 = "dnssd5.ecf-project.org"; + private static final String dnssd6 = "dnssd6.ecf-project.org"; + + private static final String dnssd7 = "dnssd7.ecf-project.org"; + private static final String dnssd8 = "dnssd8.ecf-project.org"; + + public DnsSdAdvertiserInternalTest() { + super(); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.tests.discovery.AbstractDiscoveryTest#getDiscoveryLocator() + */ + protected IDiscoveryAdvertiser getDiscoveryAdvertiser() { + final TestDnsSdDiscoveryAdvertiser advertiser = new TestDnsSdDiscoveryAdvertiser(); + try { + advertiser.connect(null, null); + } catch (ContainerConnectException e) { + e.printStackTrace(); + } + return advertiser; + } + + /** + * Test that delegate domains work + * + * dnssd4 -> @ + * -> dnssd5 -> dnssd6 + * + * must return {dnssd4, dnssd5, dnssd6} + */ + public void testBrowsingDelegates() { + final DnsSdNamespace namespace = new DnsSdNamespace(); + + // only scope matters + final DnsSdServiceTypeID aServiceTypeId = new DnsSdServiceTypeID(namespace, "_foo._bar._udp." + dnssd4 + "._iana"); + final String[] registrationDomains = ((TestDnsSdDiscoveryAdvertiser) discoveryAdvertiser).getRegistrationDomains(aServiceTypeId); + assertTrue(registrationDomains.length == 3); + final List list = Arrays.asList(registrationDomains); + assertTrue(list.contains(dnssd4 + ".")); + assertTrue(list.contains(dnssd5 + ".")); + assertTrue(list.contains(dnssd6 + ".")); + } + + /** + * Test that delegate domains work + * + * dnssd5 -> dnssd6 + * + * must return {dnssd6} + */ + public void testBrowsingDelegates2() { + final DnsSdNamespace namespace = new DnsSdNamespace(); + // only scope matters + final DnsSdServiceTypeID aServiceTypeId = new DnsSdServiceTypeID(namespace, "_foo._bar._udp." + dnssd5 + "._iana"); + final String[] registrationDomains = ((TestDnsSdDiscoveryAdvertiser) discoveryAdvertiser).getRegistrationDomains(aServiceTypeId); + assertTrue(registrationDomains.length == 2); + final List list = Arrays.asList(registrationDomains); + assertTrue(list.contains(dnssd5 + ".")); + assertTrue(list.contains(dnssd6 + ".")); + } + + /** + * Test that delegate domains work + * + * dnssd6 has no browsing domain set + * + * must return {dnssd6} + */ + public void testBrowsingDelegates3() { + final DnsSdNamespace namespace = new DnsSdNamespace(); + // only scope matters + final DnsSdServiceTypeID aServiceTypeId = new DnsSdServiceTypeID(namespace, "_foo._bar._udp." + dnssd6 + "._iana"); + final String[] registrationDomains = ((TestDnsSdDiscoveryAdvertiser) discoveryAdvertiser).getRegistrationDomains(aServiceTypeId); + assertTrue(registrationDomains.length == 1); + final List list = Arrays.asList(registrationDomains); + assertTrue(list.contains(dnssd6 + ".")); + } + + /** + * Test that delegate domains work + * + * dnssd7 and dnssd8 both point to each other + * + * must return {dnssd7, dnssd8} + */ + public void testBrowsingDelegatesWithCycles() { + final DnsSdNamespace namespace = new DnsSdNamespace(); + // only scope matters + final DnsSdServiceTypeID aServiceTypeId = new DnsSdServiceTypeID(namespace, "_foo._bar._udp." + dnssd7 + "._iana"); + final String[] registrationDomains = ((TestDnsSdDiscoveryAdvertiser) discoveryAdvertiser).getRegistrationDomains(aServiceTypeId); + assertTrue(registrationDomains.length == 2); + final List list = Arrays.asList(registrationDomains); + assertTrue(list.contains(dnssd7 + ".")); + assertTrue(list.contains(dnssd8 + ".")); + } +} diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java index 1f77f7a84..2677414ff 100644 --- a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java +++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java @@ -18,11 +18,8 @@ import java.util.List; import org.eclipse.ecf.core.ContainerConnectException; import org.eclipse.ecf.core.util.ECFRuntimeException; -import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; -import org.eclipse.ecf.discovery.IDiscoveryLocator; import org.eclipse.ecf.discovery.IServiceProperties; import org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryAdvertiser; -import org.eclipse.ecf.tests.discovery.AbstractDiscoveryTest; import org.xbill.DNS.DClass; import org.xbill.DNS.Message; import org.xbill.DNS.Name; @@ -37,16 +34,10 @@ import org.xbill.DNS.Update; import org.xbill.DNS.ZoneTransferException; import org.xbill.DNS.ZoneTransferIn; -public class DnsSdAdvertiserServiceTest extends AbstractDiscoveryTest { +public class DnsSdAdvertiserServiceTest extends DnsSdAbstractDiscoveryTest { public DnsSdAdvertiserServiceTest() { - super(DnsSdTestHelper.ECF_DISCOVERY_DNSSD + ".advertiser"); - setNamingAuthority(DnsSdTestHelper.NAMING_AUTH); - setScope(DnsSdTestHelper.REG_DOMAIN); - setServices(new String[]{DnsSdTestHelper.REG_SCHEME}); - setProtocol(DnsSdTestHelper.PROTO); - setComparator(new DnsSdAdvertiserComparator()); - setTTL(DnsSdTestHelper.TTL); + super(); } /* (non-Javadoc) @@ -80,20 +71,6 @@ public class DnsSdAdvertiserServiceTest extends AbstractDiscoveryTest { protected void tearDown() throws Exception { super.tearDown(); } - - /* (non-Javadoc) - * @see org.eclipse.ecf.tests.discovery.AbstractDiscoveryTest#getDiscoveryLocator() - */ - protected IDiscoveryAdvertiser getDiscoveryAdvertiser() { - return Activator.getDefault().getDiscoveryAdvertiser(); - } - - /* (non-Javadoc) - * @see org.eclipse.ecf.tests.discovery.AbstractDiscoveryTest#getDiscoveryLocator() - */ - protected IDiscoveryLocator getDiscoveryLocator() { - return Activator.getDefault().getDiscoveryLocator(); - } /* (non-Javadoc) * @see org.eclipse.ecf.tests.provider.dnssd.DnsSdDiscoveryServiceTest#testRegisterService() diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/TestDnsSdDiscoveryAdvertiser.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/TestDnsSdDiscoveryAdvertiser.java new file mode 100644 index 000000000..7378c749b --- /dev/null +++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/TestDnsSdDiscoveryAdvertiser.java @@ -0,0 +1,51 @@ +/******************************************************************************* + * Copyright (c) 2010 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.dnssd; + +import java.util.Collection; + +import org.eclipse.ecf.discovery.IServiceInfo; +import org.eclipse.ecf.discovery.identity.IServiceTypeID; +import org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryAdvertiser; +import org.xbill.DNS.Name; +import org.xbill.DNS.TextParseException; + +// make non API public for testing +public class TestDnsSdDiscoveryAdvertiser extends DnsSdDiscoveryAdvertiser { + /* (non-Javadoc) + * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryAdvertiser#sendToServer(org.eclipse.ecf.discovery.IServiceInfo, boolean) + */ + protected void sendToServer(final IServiceInfo serviceInfo, final boolean mode) { + super.sendToServer(serviceInfo, mode); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryAdvertiser#getUpdateDomain(org.xbill.DNS.Name) + */ + public Collection getUpdateDomain(final Name zone) throws TextParseException { + return super.getUpdateDomain(zone); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryAdvertiser#getAuthoritativeNameServer(org.xbill.DNS.Name) + */ + public Collection getAuthoritativeNameServer(final Name zone) throws TextParseException { + return super.getAuthoritativeNameServer(zone); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryAdvertiser#getRegistrationDomains(org.eclipse.ecf.discovery.identity.IServiceTypeID) + */ + public String[] getRegistrationDomains(IServiceTypeID aServiceTypeId) { + return super.getRegistrationDomains(aServiceTypeId); + } + +} |
