package pl.radical.open.gg;
import static org.junit.Assert.assertEquals;
import static pl.radical.open.gg.AlljGGapiTest.TEST_UIN_1;
import static pl.radical.open.gg.AlljGGapiTest.TEST_UIN_2;
import static pl.radical.open.gg.AlljGGapiTest.session1;
import static pl.radical.open.gg.AlljGGapiTest.session2;
import pl.radical.open.gg.event.MessageListener;
import pl.radical.open.gg.packet.dicts.MessageStatus;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CommunicationTest {
private static final Logger LOG = LoggerFactory.getLogger(CommunicationTest.class);
static boolean asyncOp = false;
@Test(timeout = 1000 * 60)
public void sendRecvMsgTest() throws GGException, InterruptedException {
ConnectionTest.COMMUNICATION_LATCH.await();
final String hello = "hello hello hello";
asyncOp = false;
final IMessageService messageService1 = session1.getMessageService();
final IMessageService messageService2 = session2.getMessageService();
final OutgoingMessage outMessage = OutgoingMessage.createNewMessage(TEST_UIN_2, hello);
LOG.debug("Sending message [{}] to ", "hello", TEST_UIN_2);
if (session1.getLoginService().isLoggedIn()) {
messageService1.sendMessage(outMessage);
messageService2.addMessageListener(new MessageListener(){
@Override
public void messageArrived(final IIncommingMessage incommingMessage) {
LOG.info("Message [" + incommingMessage.getMessageBody() + "] received from " + incommingMessage.getRecipientUin());
assertEquals(TEST_UIN_1, incommingMessage.getRecipientUin());
assertEquals(hello,incommingMessage.getMessageBody());
CommunicationTest.asyncOp = true;
}
@Override
public void messageDelivered(final int uin, final int messageID, final MessageStatus deliveryStatus) {
}
@Override
public void messageSent(final IOutgoingMessage outgoingMessage) {
}});
}
while (!asyncOp) {
Thread.sleep(100);
}
asyncOp = false;
}
}