Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Alexander Kuppe2010-07-18 10:31:10 +0000
committerMarkus Alexander Kuppe2010-07-18 10:31:10 +0000
commit5c5e7a9af1f04d2ca3fd6138a03a0a9395df499c (patch)
tree5c4c9f77dba4c945dd3ee58c34610655d7ac2d48
parentdb4179e2d98e79d71708424f7769e82c7df6bd5a (diff)
downloadorg.eclipse.ecf-5c5e7a9af1f04d2ca3fd6138a03a0a9395df499c.tar.gz
org.eclipse.ecf-5c5e7a9af1f04d2ca3fd6138a03a0a9395df499c.tar.xz
org.eclipse.ecf-5c5e7a9af1f04d2ca3fd6138a03a0a9395df499c.zip
NEW - bug 314999: [Discovery][DNS-SD] Implement IDiscoveryAdvertiser
https://bugs.eclipse.org/bugs/show_bug.cgi?id=314999 Unregister with service properties set
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java102
1 files changed, 82 insertions, 20 deletions
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 f52d614ab..1f77f7a84 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
@@ -11,6 +11,8 @@
package org.eclipse.ecf.tests.provider.dnssd;
import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
@@ -18,6 +20,7 @@ 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;
@@ -27,6 +30,8 @@ import org.xbill.DNS.Record;
import org.xbill.DNS.SRVRecord;
import org.xbill.DNS.SimpleResolver;
import org.xbill.DNS.TSIG;
+import org.xbill.DNS.TXTRecord;
+import org.xbill.DNS.TextParseException;
import org.xbill.DNS.Type;
import org.xbill.DNS.Update;
import org.xbill.DNS.ZoneTransferException;
@@ -125,23 +130,7 @@ public class DnsSdAdvertiserServiceTest extends AbstractDiscoveryTest {
* @see org.eclipse.ecf.tests.provider.dnssd.DnsSdDiscoveryServiceTest#testUnregisterService()
*/
public void testUnregisterService() throws ContainerConnectException, IOException, ZoneTransferException {
-
- // create a service manually
- Name origin = Name.fromString(DnsSdTestHelper.REG_DOMAIN + ".");
- Name type = Name.fromString("_" + DnsSdTestHelper.REG_SCHEME + "._" + DnsSdTestHelper.PROTO, origin);
- String s = serviceInfo.getPriority() + " " +
- serviceInfo.getWeight() + " " +
- serviceInfo.getLocation().getPort() + " " +
- serviceInfo.getLocation().getHost() + ".";
- Record record = Record.fromString(type, Type.SRV, DClass.IN, 3600, s, origin);
- Update update = new Update(origin);
- update.add(record);
- SimpleResolver resolver = new SimpleResolver(DnsSdTestHelper.DNS_SERVER);
- resolver.setTCP(true);
- resolver.setTSIGKey(new TSIG(DnsSdTestHelper.TSIG_KEY_NAME, DnsSdTestHelper.TSIG_KEY));
- Message response = resolver.send(update);
- int rcode = response.getRcode();
- assertTrue("", rcode == 0);
+ createSRVRecord();
// unregister via ECF discovery
discoveryAdvertiser.unregisterService(serviceInfo);
@@ -150,7 +139,7 @@ public class DnsSdAdvertiserServiceTest extends AbstractDiscoveryTest {
ZoneTransferIn xfr = ZoneTransferIn.newAXFR(new Name(DnsSdTestHelper.REG_DOMAIN), DnsSdTestHelper.DNS_SERVER, null);
List records = xfr.run();
for (Iterator itr = records.iterator(); itr.hasNext();) {
- record = (Record) itr.next();
+ Record record = (Record) itr.next();
if(record instanceof SRVRecord) {
if(comparator.compare(serviceInfo, record) >= 0) {
fail("Service not removed/unregisterd");
@@ -162,10 +151,83 @@ public class DnsSdAdvertiserServiceTest extends AbstractDiscoveryTest {
/**
* Test that all service properties are removed along with the service
*/
- public void testUnregisterServiceWithProperties() {
- fail("Not yet implemented");
+ public void testUnregisterServiceWithProperties() throws ContainerConnectException, IOException, ZoneTransferException {
+ createSRVRecord();
+ createTXTRecords();
+
+ // unregister via ECF discovery
+ discoveryAdvertiser.unregisterService(serviceInfo);
+
+ // check SRV record is gone
+ ZoneTransferIn xfr = ZoneTransferIn.newAXFR(new Name(DnsSdTestHelper.REG_DOMAIN), DnsSdTestHelper.DNS_SERVER, null);
+ List records = xfr.run();
+ for (Iterator itr = records.iterator(); itr.hasNext();) {
+ Record record = (Record) itr.next();
+ if(record instanceof SRVRecord) {
+ if(comparator.compare(serviceInfo, record) >= 0) {
+ fail("Service not removed/unregisterd");
+ }
+ } else if(record instanceof TXTRecord) {
+ if(comparator.compare(serviceInfo, record) >= 0) {
+ fail("TXT record not removed/unregisterd");
+ }
+ }
+ }
+ }
+
+ private void createTXTRecords() throws TextParseException, IOException,
+ UnknownHostException {
+ Name zone = Name.fromString(DnsSdTestHelper.REG_DOMAIN + ".");
+ Name name = Name.fromString("_" + DnsSdTestHelper.REG_SCHEME + "._" + DnsSdTestHelper.PROTO, zone);
+
+ Update update = null;
+
+ IServiceProperties properties = serviceInfo.getServiceProperties();
+ final Enumeration enumeration = properties.getPropertyNames();
+ while (enumeration.hasMoreElements()) {
+ final Object property = enumeration.nextElement();
+ final String key = property.toString();
+ final String value = (String) properties.getProperty(key).toString();
+ Record record = Record.fromString(name, Type.TXT, DClass.IN,
+ serviceInfo.getTTL(), key + "=" + value, zone);
+ update = new Update(zone);
+ update.add(record);
+ }
+ SimpleResolver resolver = new SimpleResolver(DnsSdTestHelper.DNS_SERVER);
+ resolver.setTCP(true);
+ resolver.setTSIGKey(new TSIG(DnsSdTestHelper.TSIG_KEY_NAME, DnsSdTestHelper.TSIG_KEY));
+ Message response = resolver.send(update);
+ int rcode = response.getRcode();
+ assertTrue("", rcode == 0);
}
+ private void createSRVRecord() throws TextParseException, IOException,
+ UnknownHostException {
+ // create a service manually
+ Name zone = Name.fromString(DnsSdTestHelper.REG_DOMAIN + ".");
+ Name type = Name.fromString("_" + DnsSdTestHelper.REG_SCHEME + "._" + DnsSdTestHelper.PROTO, zone);
+ String s = serviceInfo.getPriority() + " " +
+ serviceInfo.getWeight() + " " +
+ serviceInfo.getLocation().getPort() + " " +
+ serviceInfo.getLocation().getHost() + ".";
+ Record record = Record.fromString(type, Type.SRV, DClass.IN, DnsSdTestHelper.TTL, s, zone);
+ Update update = new Update(zone);
+ update.add(record);
+ SimpleResolver resolver = new SimpleResolver(DnsSdTestHelper.DNS_SERVER);
+ resolver.setTCP(true);
+ resolver.setTSIGKey(new TSIG(DnsSdTestHelper.TSIG_KEY_NAME, DnsSdTestHelper.TSIG_KEY));
+ Message response = resolver.send(update);
+ int rcode = response.getRcode();
+ assertTrue("", rcode == 0);
+ }
+
+ /**
+ * Test that all service properties are removed along with the service
+ */
+ public void testUnregisterServiceWithForeignProperties() throws ContainerConnectException, IOException, ZoneTransferException {
+ fail("Not implemented yet");
+ }
+
/* (non-Javadoc)
* @see org.eclipse.ecf.tests.provider.dnssd.DnsSdDiscoveryServiceTest#testUnregisterAllServices()
*/

Back to the top