Package ch.ethz.iks.slp.test

Source Code of ch.ethz.iks.slp.test.SelfDiscoveryTest

/*******************************************************************************
* Copyright (c) 2008 Versant Corp.
* 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 Kuppe (mkuppe <at> versant <dot> com) - initial API and implementation
******************************************************************************/
package ch.ethz.iks.slp.test;

import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;

import junit.framework.Assert;
import junit.framework.TestCase;
import ch.ethz.iks.slp.ServiceLocationEnumeration;
import ch.ethz.iks.slp.ServiceLocationException;
import ch.ethz.iks.slp.ServiceType;
import ch.ethz.iks.slp.ServiceURL;

public class SelfDiscoveryTest extends TestCase {

  private final String HOST_AND_PORT = System.getProperty("net.slp.tests.hostAndPort", "gantenbein:123");
  private ServiceURL service;
  private Dictionary properties;

  /* (non-Javadoc)
   * @see junit.framework.TestCase#setUp()
   */
  public void setUp() throws InterruptedException {
    try {
      service = new ServiceURL("service:osgi://" + HOST_AND_PORT, 10800);
      int i = 0;
      properties = new Hashtable();
      properties.put("attr", Boolean.FALSE);
      properties.put("attr" + i++, "value");
      properties.put("attr" + i++, "foo,bar");
      properties.put("attr" + i++, "foo:bar");
      properties.put("attr" + i++, "foo bar");
      TestActivator.advertiser.register(service, properties);
    } catch (ServiceLocationException e) {
      Assert.fail(e.getMessage());
      e.printStackTrace();
    }
  }

  /* (non-Javadoc)
   * @see junit.framework.TestCase#tearDown()
   */
  public void tearDown() throws InterruptedException {
    try {
      TestActivator.advertiser.deregister(service);
    } catch (ServiceLocationException e) {
      Assert.fail(e.getMessage());
      e.printStackTrace();
    }
  }
 
  /**
   * Test method for
   * {@link ch.ethz.iks.slp.Locator}.
   */
  public void testService() throws Exception {
    int count = 0;
    for (ServiceLocationEnumeration services = TestActivator.locator
        .findServices(new ServiceType("service:osgi"), null, null); services
        .hasMoreElements();) {
      assertEquals(services.next().toString(),
          "service:osgi://"  + HOST_AND_PORT);
      count++;
    }
    assertEquals(1, count);
  }

  /**
   * Test method for
   * {@link ch.ethz.iks.slp.Locator}.
   */
  public void testAttributes() throws Exception {
    int count = 0;
   
    // not fast but DRY
    outter:
    for (ServiceLocationEnumeration attributes = TestActivator.locator
        .findAttributes(new ServiceType("service:osgi"), null, null); attributes
        .hasMoreElements();) {
      final String attribute = attributes.next().toString();

      // inner loop over the dict
      Enumeration elements = properties.keys();
      for(;elements.hasMoreElements();) {
        String key= elements.nextElement().toString();
        String value = properties.get(key).toString();
        if(attribute.equals(("(" + key + "=" + value + ")"))) {
          count++;
          continue outter;
        }
      }
      fail(attribute + " not found in reference " + properties.toString());
    }
    assertEquals(properties.size(), count);
  }

  /**
   * Test method for
   * {@link ch.ethz.iks.slp.Locator}.
   */
  public void testFilter() throws Exception {
    int count = 0;
    for (ServiceLocationEnumeration services = TestActivator.locator
        .findServices(new ServiceType("service:osgi"), null,
            "(attr=false)"); services.hasMoreElements();) {
      assertEquals(services.next().toString(),
          "service:osgi://" + HOST_AND_PORT);
      count++;
    }
    assertEquals(1, count);
  }

  /**
   * Test method for
   * {@link ch.ethz.iks.slp.Locator}.
   */
  public void testFilterWithWildcard() throws Exception {
    int count = 0;
    for (ServiceLocationEnumeration services = TestActivator.locator
        .findServices(new ServiceType("service:osgi"), null, "(attr=*)"); services
        .hasMoreElements();) {
      assertEquals(services.next().toString(),
          "service:osgi://" + HOST_AND_PORT);
      count++;
    }
    assertEquals(1, count);
  }
 

  /**
   * Test method for
   * {@link ch.ethz.iks.slp.Locator}.
   *
   * [1] http://www.faqs.org/rfcs/rfc1960.html
   * Cite: If a <value> must contain one of the characters '*' or '(' or ')', these
   * characters should be escaped by preceding them with the backslash '\' character.
   */
  public void testFilterWithBrokenParenthesis() throws Exception {
    try {
      // correct filter is (service-type=\(service:osgi\))
      TestActivator.locator.findServices(new ServiceType("service:osgi"), null,
        "(service-type=(service:osgi))");
    } catch (ServiceLocationException e) {
      if(e.getErrorCode() == 20) {
        return;
      }
    }
    fail();
  }
}
TOP

Related Classes of ch.ethz.iks.slp.test.SelfDiscoveryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.