/**************************************************************************** * 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.datashare; import java.util.Hashtable; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.identity.IDCreateException; import org.eclipse.ecf.core.identity.IDFactory; import org.eclipse.ecf.datashare.IChannel; import org.eclipse.ecf.datashare.IChannelContainerAdapter; import org.eclipse.ecf.datashare.IChannelListener; import org.eclipse.ecf.datashare.events.IChannelEvent; import org.eclipse.ecf.datashare.events.IChannelMessageEvent; import org.eclipse.ecf.tests.ContainerAbstractTestCase; public class ChannelTest extends ContainerAbstractTestCase { /** * */ private static final String CHANNEL_NAME = "channel"; private static final String CHANNEL_NAME_1 = "channel1"; protected Hashtable messageEvents = new Hashtable(); /* * (non-Javadoc) * * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); setClientCount(5); createServerAndClients(); addChannelToClients(); connectClients(); } /** * */ protected void addChannelToClients() throws Exception { for (int i = 0; i < clientCount; i++) { final IChannelContainerAdapter channelContainer = getChannelContainer(i); channelContainer.createChannel(getNewID(CHANNEL_NAME), getIChannelListener(getContainerID(i)), null); } } protected void clearClientEvents() { messageEvents.clear(); } /* * (non-Javadoc) * * @see junit.framework.TestCase#tearDown() */ protected void tearDown() throws Exception { cleanUpServerAndClients(); super.tearDown(); clearClientEvents(); } protected ID getContainerID(int clientIndex) { return getClients()[clientIndex].getID(); } protected IChannelContainerAdapter getChannelContainer(int clientIndex) { return (IChannelContainerAdapter) getClients()[clientIndex].getAdapter(IChannelContainerAdapter.class); } public void testGetChannelContainerAdapter() throws Exception { final IChannelContainerAdapter channelContainer = getChannelContainer(0); assertNotNull(channelContainer); } public void testCreateChannel() throws Exception { final IChannelContainerAdapter channelContainer = getChannelContainer(0); final IChannel channel = channelContainer.createChannel(getNewID(CHANNEL_NAME_1), getIChannelListener(getContainerID(0)), null); assertNotNull(channel); assertNotNull(channel.getID()); assertNotNull(channel.getListener()); } public void testGetChannelFromContainer() throws Exception { final IChannelContainerAdapter channelContainer = getChannelContainer(0); channelContainer.createChannel(getNewID(CHANNEL_NAME_1), getIChannelListener(getContainerID(0)), null); assertNotNull(channelContainer.getChannel(getNewID(CHANNEL_NAME_1))); } public void testGetChannelNamespace() throws Exception { final IChannelContainerAdapter channelContainer = getChannelContainer(0); assertNotNull(channelContainer.getChannelNamespace()); } public void testSender() throws Exception { final IChannelContainerAdapter senderContainer = getChannelContainer(0); final IChannel sender = senderContainer.getChannel(getNewID(CHANNEL_NAME)); assertNotNull(sender); sender.sendMessage(new String("hello").getBytes()); sleep(3000); for (int i = 1; i < getClientCount(); i++) { assertNotNull(messageEvents.get(getContainerID(i))); } } /** * @return */ protected IChannelListener getIChannelListener(final ID id) throws Exception { return new IChannelListener() { public void handleChannelEvent(IChannelEvent event) { if (event instanceof IChannelMessageEvent) { //IChannelMessageEvent cme = (IChannelMessageEvent) event; messageEvents.put(id, event); } } }; } /** * @return */ private ID getNewID(String id) throws IDCreateException { return IDFactory.getDefault().createStringID(id); } }