/*
* Copyright (C) 2012 - present by Yann Le Tallec.
* Please see distribution for license.
*/
package com.assylias.jbloomberg;
import com.bloomberglp.blpapi.CorrelationID;
import com.bloomberglp.blpapi.Event;
import com.bloomberglp.blpapi.Message;
import com.bloomberglp.blpapi.Session;
import java.util.Arrays;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import mockit.Mocked;
import mockit.Verifications;
import static org.testng.Assert.assertTrue;
import org.testng.annotations.Test;
public class BloombergEventHandlerTest {
private CountDownLatch latch;
@Test(groups = "unit")
public void testProcessEvent_SessionStarted() throws Exception {
latch = new CountDownLatch(1);
final BloombergEventHandler handler = new BloombergEventHandler(new ArrayBlockingQueue<>(1), x -> {});
handler.onSessionStarted(new Runnable() {
@Override
public void run() {
latch.countDown();
}
});
new MockSession().simulateStartAsyncOk();
Session s = new Session(null, handler);
s.startAsync();
assertTrue(latch.await(1, TimeUnit.SECONDS));
}
@Test(groups = "unit")
public void testProcessEvent_Response(@Mocked final ResultParser parser) throws Exception {
final BloombergEventHandler handler = new BloombergEventHandler(new ArrayBlockingQueue<>(1), x -> {});
CorrelationID cId = new CorrelationID(1);
handler.setParser(cId, parser);
final Message msg1 = new MockMessage().setMessageType("Message 1").setToString("Message 1").setCorrelationID(1);
final MockEvent evt1 = new MockEvent(Event.EventType.PARTIAL_RESPONSE, Arrays.asList(msg1));
handler.processEvent(evt1, null);
//This message is ignored
final Message msg2 = new MockMessage().setMessageType("Message 2").setToString("Message 2").setCorrelationID(2);
final MockEvent evt2 = new MockEvent(Event.EventType.PARTIAL_RESPONSE, Arrays.asList(msg2));
handler.processEvent(evt2, null);
final Message msg3 = new MockMessage().setMessageType("Message 3").setToString("Message 3").setCorrelationID(1);
final MockEvent evt3 = new MockEvent(Event.EventType.RESPONSE, Arrays.asList(msg3));
handler.processEvent(evt3, null);
new Verifications() {
{
parser.addMessage(msg1);
parser.addMessage(msg3);
parser.noMoreMessages();
}
};
}
}