Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Alexander Kuppe2010-07-20 15:34:28 +0000
committerMarkus Alexander Kuppe2010-07-20 15:34:28 +0000
commit86a18a9387f40fe96f36515c80f5fc390692cab7 (patch)
treedb88c76317face6858c51b4e1c81e53cbd8a6b2c
parent5c5e7a9af1f04d2ca3fd6138a03a0a9395df499c (diff)
downloadorg.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
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAbstractDiscoveryTest.java42
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserInternalTest.java121
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java27
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/TestDnsSdDiscoveryAdvertiser.java51
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);
+ }
+
+}

Back to the top