Package org.eclipse.ecf.tests.connect

Source Code of org.eclipse.ecf.tests.connect.ClientContainerConnectTest

/****************************************************************************
* 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.connect;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.ecf.core.IContainer;
import org.eclipse.ecf.core.IContainerListener;
import org.eclipse.ecf.core.events.IContainerConnectedEvent;
import org.eclipse.ecf.core.events.IContainerConnectingEvent;
import org.eclipse.ecf.core.events.IContainerDisconnectedEvent;
import org.eclipse.ecf.core.events.IContainerDisconnectingEvent;
import org.eclipse.ecf.core.events.IContainerEvent;
import org.eclipse.ecf.core.security.IConnectContext;
import org.eclipse.ecf.tests.ContainerAbstractTestCase;

public class ClientContainerConnectTest extends ContainerAbstractTestCase {

  List serverConnectEvents = new ArrayList();

  List serverDisconnectEvents = new ArrayList();

  List clientConnectingEvents = new ArrayList();

  List clientConnectedEvents = new ArrayList();

  List clientDisconnectingEvents = new ArrayList();

  List clientDisconnectedEvents = new ArrayList();

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.tests.connect.ContainerConnectTestCase#createServerAndClients()
   */
  protected void createServerAndClients() throws Exception {
    clientCount = 5;
    super.createServerAndClients();
    getServer().addListener(new IContainerListener() {
      public void handleEvent(IContainerEvent event) {
        if (event instanceof IContainerConnectedEvent)
          serverConnectEvents.add(event);
        if (event instanceof IContainerDisconnectedEvent)
          serverDisconnectEvents.add(event);
      }
    });
  }

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

  protected void clearClientEvents() {
    clientConnectingEvents.clear();
    clientConnectedEvents.clear();
    clientDisconnectingEvents.clear();
    clientDisconnectedEvents.clear();
  }

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

  public void testConnectClients() throws Exception {
    connectClients();
    assertTrue(serverConnectEvents.size() == getClientCount());
  }

  /* (non-Javadoc)
   * @see org.eclipse.ecf.tests.ContainerAbstractTestCase#getConnectContext(int)
   */
  protected IConnectContext getConnectContext(int client) {
    return null;
  }

  public void testClientsDisconnect() throws Exception {
    connectClients();
    assertTrue(serverConnectEvents.size() == getClientCount());
    disconnectClients();
    assertTrue(serverDisconnectEvents.size() == getClientCount());
  }

  public void testGetConnectedID() throws Exception {
    final IContainer client = getClients()[0];
    assertNull(client.getConnectedID());
    client.connect(createServerID(), null);
    assertNotNull(client.getConnectedID());
    client.disconnect();
    assertNull(client.getConnectedID());
  }

  protected IContainerListener createListener() {
    return new IContainerListener() {

      public void handleEvent(IContainerEvent event) {
        if (event instanceof IContainerConnectingEvent)
          clientConnectingEvents.add(event);
        if (event instanceof IContainerConnectedEvent)
          clientConnectedEvents.add(event);
        if (event instanceof IContainerDisconnectingEvent)
          clientDisconnectingEvents.add(event);
        if (event instanceof IContainerDisconnectedEvent)
          clientDisconnectedEvents.add(event);
      }

    };
  }

  public void testClientListener() throws Exception {
    final IContainer client = getClients()[0];
    client.addListener(createListener());
    assertTrue(clientConnectingEvents.size() == 0);
    assertTrue(clientConnectedEvents.size() == 0);
    client.connect(createServerID(), null);
    assertTrue(clientConnectingEvents.size() == 1);
    assertTrue(clientConnectedEvents.size() == 1);
    assertTrue(clientDisconnectingEvents.size() == 0);
    assertTrue(clientDisconnectedEvents.size() == 0);
    sleep(2000);
    client.disconnect();
    assertTrue(clientDisconnectingEvents.size() == 1);
    assertTrue(clientDisconnectedEvents.size() == 1);
  }

  public void testListenerConnecting() throws Exception {
    final IContainer client = getClients()[0];
    client.addListener(createListener());
    client.connect(createServerID(), null);
    final Object o = clientConnectingEvents.get(0);
    assertTrue(o instanceof IContainerConnectingEvent);
    final IContainerConnectingEvent cco = (IContainerConnectingEvent) o;
    assertTrue(cco.getLocalContainerID().equals(client.getID()));
    assertTrue(cco.getTargetID().equals(createServerID()));
    assertTrue(cco.getData() == null);
  }

  public void testListenerConnected() throws Exception {
    final IContainer client = getClients()[0];
    client.addListener(createListener());
    client.connect(createServerID(), null);
    final Object o = clientConnectedEvents.get(0);
    assertTrue(o instanceof IContainerConnectedEvent);
    final IContainerConnectedEvent cco = (IContainerConnectedEvent) o;
    assertTrue(cco.getLocalContainerID().equals(client.getID()));
    assertTrue(cco.getTargetID().equals(createServerID()));
  }

  public void testListenerDisconnected() throws Exception {
    final IContainer client = getClients()[0];
    client.addListener(createListener());
    client.connect(createServerID(), null);
    client.disconnect();
    final Object o = clientDisconnectedEvents.get(0);
    assertTrue(o instanceof IContainerDisconnectedEvent);
    final IContainerDisconnectedEvent cco = (IContainerDisconnectedEvent) o;
    assertTrue(cco.getLocalContainerID().equals(client.getID()));
    assertTrue(cco.getTargetID().equals(createServerID()));
  }

  public void testRemoveListener() throws Exception {
    final IContainer client = getClients()[0];
    final IContainerListener l = createListener();
    client.addListener(l);
    client.removeListener(l);
    client.connect(createServerID(), null);
    assertTrue(clientConnectingEvents.size() == 0);
  }

}
TOP

Related Classes of org.eclipse.ecf.tests.connect.ClientContainerConnectTest

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.