blob: 170807179e45f521169f25fbd62a2d9e145d01da [file] [log] [blame]
/****************************************************************************
* Copyright (c) 2004 Composent, Inc. and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* Composent, Inc. - initial API and implementation
*
* SPDX-License-Identifier: EPL-2.0
*****************************************************************************/
package org.eclipse.ecf.tests.provider.xmpp.datashare;
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;
import org.eclipse.ecf.tests.provider.xmpp.XMPP;
public class ChannelTest extends ContainerAbstractTestCase {
private static final String CHANNEL_NAME = "channel";
private static final int SLEEPTIME = Integer.parseInt(System.getProperty("org.eclipse.ecf.tests.provider.xmpp.datashare.ChannelTest.SLEEPTIME","5000"));
private static final int SEND_MESSAGE_COUNT = 5;
private ID channelID;
/* (non-Javadoc)
* @see org.eclipse.ecf.tests.presence.AbstractPresenceTestCase#getClientContainerName()
*/
protected String getClientContainerName() {
return XMPP.CONTAINER_NAME;
}
protected void setUp() throws Exception {
super.setUp();
setClientCount(2);
clients = createClients();
channelID = IDFactory.getDefault().createStringID(CHANNEL_NAME);
connectClients();
for (int i = 0; i < clientCount; i++) {
final IChannelContainerAdapter channelContainer = getChannelContainer(i);
channelContainer.createChannel(channelID, getIChannelListener(getContainerID(i)), null);
}
}
protected ID getServerConnectID(int client) {
try {
return IDFactory.getDefault().createID(getClient(client).getConnectNamespace(), getUsername(client));
} catch (final IDCreateException e) {
fail("Could not create server connect ID");
return null;
}
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
// This is a possible workaround for what appears to be Smack bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=321032
Thread.sleep(SLEEPTIME);
cleanUpClients();
super.tearDown();
}
public void testSendMessage() throws Exception {
final IChannel ch0 = getChannelContainer(0).getChannel(channelID);
ID target1 = getClient(1).getConnectedID();
ch0.sendMessage(target1, new String("hello").getBytes());
sleep(SLEEPTIME);
}
public void testBiSendMessage() throws Exception {
final IChannel ch0 = getChannelContainer(0).getChannel(channelID);
final IChannel ch1 = getChannelContainer(1).getChannel(channelID);
ID target1 = getClient(1).getConnectedID();
ID target0 = getClient(0).getConnectedID();
ch0.sendMessage(target1, new String("hello").getBytes());
ch1.sendMessage(target0, new String("hello").getBytes());
sleep(SLEEPTIME);
}
public void testSendMessages() throws Exception {
final IChannel ch0 = getChannelContainer(0).getChannel(channelID);
ID target1 = getClient(1).getConnectedID();
for(int i=0; i < SEND_MESSAGE_COUNT; i++) {
ch0.sendMessage(target1, new String("hello. msg#="+i).getBytes());
}
sleep(SLEEPTIME);
}
public void testBiSendMessages() throws Exception {
final IChannel ch0 = getChannelContainer(0).getChannel(channelID);
final IChannel ch1 = getChannelContainer(1).getChannel(channelID);
ID target1 = getClient(1).getConnectedID();
ID target0 = getClient(0).getConnectedID();
for(int i=0; i < SEND_MESSAGE_COUNT; i++) {
ch0.sendMessage(target1, new String("hello. msg#="+i).getBytes());
ch1.sendMessage(target0, new String("hello. msg#="+i).getBytes());
}
sleep(SLEEPTIME);
}
protected IChannelListener getIChannelListener(final ID containerid) throws Exception {
return new IChannelListener() {
public void handleChannelEvent(IChannelEvent event) {
if (event instanceof IChannelMessageEvent) {
IChannelMessageEvent cme = (IChannelMessageEvent) event;
System.out.println("receivercontainerid="+containerid+"; fromcontainerid="+cme.getFromContainerID()+"; channelid="+cme.getChannelID());
System.out.println(" event="+event);
System.out.println(" message="+new String(cme.getData()));
}
}
};
}
private ID getContainerID(int clientIndex) {
return getClients()[clientIndex].getID();
}
private IChannelContainerAdapter getChannelContainer(int clientIndex) {
return (IChannelContainerAdapter) getClients()[clientIndex].getAdapter(IChannelContainerAdapter.class);
}
}