Package org.eclipse.ecf.tests.remoteservice.generic

Source Code of org.eclipse.ecf.tests.remoteservice.generic.SSLRemoteServiceTest

/****************************************************************************
* Copyright (c) 2004 Composent, Inc. and others.
* 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:
*    Composent, Inc. - initial API and implementation
*****************************************************************************/

package org.eclipse.ecf.tests.remoteservice.generic;

import org.eclipse.ecf.remoteservice.IRemoteService;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
import org.eclipse.ecf.remoteservice.IRemoteServiceListener;
import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
import org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent;
import org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent;
import org.eclipse.ecf.tests.remoteservice.AbstractRemoteServiceTest;
import org.eclipse.ecf.tests.remoteservice.IConcatService;
import org.eclipse.equinox.concurrent.future.IFuture;
import org.eclipse.osgi.util.NLS;

public class SSLRemoteServiceTest extends AbstractRemoteServiceTest {

  protected String getClientContainerName() {
    return SSLGeneric.CONSUMER_CONTAINER_TYPE;
  }

  protected String getServerIdentity() {
    return NLS.bind(SSLGeneric.HOST_CONTAINER_ENDPOINT_ID, new Integer(genericServerPort));
  }

  protected String getServerContainerName() {
    return SSLGeneric.HOST_CONTAINER_TYPE;
  }

  /*
   * (non-Javadoc)
   *
   * @see junit.framework.TestCase#setUp()
   */
  protected void setUp() throws Exception {
    super.setUp();
    setClientCount(2);
    createServerAndClients();
    setupRemoteServiceAdapters();
    connectClients();
    addRemoteServiceListeners();
  }

  /*
   * (non-Javadoc)
   *
   * @see junit.framework.TestCase#tearDown()
   */
  protected void tearDown() throws Exception {
    cleanUpServerAndClients();
    super.tearDown();
  }

  IRemoteService remoteService;
  boolean done;

  public void testServiceListener() throws Exception {
    final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
    done = false;
    final Object lock = new Object();
    adapters[1].addRemoteServiceListener(new IRemoteServiceListener() {
      public void handleServiceEvent(IRemoteServiceEvent event) {
        if (event instanceof IRemoteServiceRegisteredEvent) {
          IRemoteServiceRegisteredEvent e = (IRemoteServiceRegisteredEvent) event;
          IRemoteServiceReference ref = e.getReference();
          remoteService = adapters[1].getRemoteService(ref);
          assertNotNull(remoteService);
          synchronized (lock) {
            done = true;
            lock.notify();
          }
        }
      }
    });

    // Now register service on server (adapters[0]).  This should result in notification on client (adapters[1])
    // in above handleServiceEvent
    adapters[0].registerRemoteService(new String[] { IConcatService.class.getName() }, createService(),
        customizeProperties(null));

    // wait until block above called asynchronously
    int count = 0;
    synchronized (lock) {
      while (!done && count++ < 10) {
        try {
          lock.wait(1000);
        } catch (InterruptedException e) {
          fail();
        }
      }
    }

    assertTrue(done);

    if (remoteService == null) return;
    // We've got the remote service, so we're good to go
    assertTrue(remoteService != null);
    traceCallStart("callAsynchResult");
    final IFuture result = remoteService
        .callAsync(createRemoteConcat("ECF AsynchResults ", "are cool"));
    traceCallEnd("callAsynch");
    assertNotNull(result);
    Thread.sleep(SLEEPTIME);
  }


}
TOP

Related Classes of org.eclipse.ecf.tests.remoteservice.generic.SSLRemoteServiceTest

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.