Skip to content

Instantly share code, notes, and snippets.

@franzwong
Created January 8, 2021 11:35
Show Gist options
  • Save franzwong/ee817d97b25a446a323319494087c85e to your computer and use it in GitHub Desktop.
Save franzwong/ee817d97b25a446a323319494087c85e to your computer and use it in GitHub Desktop.
Bloomberg event creation for unit test (BLPAPI)
<?xml version="1.0" encoding="UTF-8" ?>
<ServiceDefinition name="blp.mktdata" version="1.0.1.0">
<service name="//blp/mktdata" version="1.0.0.0" authorizationService="//blp/apiauth">
<event name="MarketDataEvents" eventType="MarketDataUpdate">
<eventId>0</eventId>
</event>
</service>
<schema>
<sequenceType name="MarketDataUpdate">
<element name="BEST_BID" type="Float64" id="1" minOccurs="0" maxOccurs="1"/>
<element name="BEST_ASK" type="Float64" id="2" minOccurs="0" maxOccurs="1"/>
<element name="MKTDATA_EVENT_TYPE" type="MktDataEventType" id="3" minOccurs="0" maxOccurs="1"/>
<element name="MKTDATA_EVENT_SUBTYPE" type="MktDataEventSubType" id="4" minOccurs="0" maxOccurs="1"/>
</sequenceType>
<enumerationType name="MktDataEventType">
<enumerator name="SUMMARY">
<value String="SUMMARY"/>
</enumerator>
</enumerationType>
<enumerationType name="MktDataEventSubType">
<enumerator name="INTRADAY">
<value String="INTRADAY"/>
</enumerator>
</enumerationType>
</schema>
</ServiceDefinition>
public class MyTest {
// Only work for Blpapi Java 3.16.1 and above
@Test
public void myTest() {
Service service;
try (InputStream is = getClass().getResourceAsStream("/marketDataSchema.xml")) {
service = TestUtil.deserializeService(is);
}
SchemaElementDefinition elementDef = service.getEventDefinition(new Name("MarketDataEvents"));
Event event = TestUtil.createEvent(Event.EventType.SUBSCRIPTION_DATA);
MessageProperties messageProps = new MessageProperties();
messageProps.setCorrelationId(new CorrelationID(new MyContext()));
MessageFormatter formatter = TestUtil.appendMessage(event, elementDef, messageProps);
String messageContent =
"<MarketDataEvents>"
+ " <BEST_BID>30822.29</BEST_BID>"
+ " <BEST_ASK>30937.5</BEST_ASK>"
+ " <MKTDATA_EVENT_TYPE>SUMMARY</MKTDATA_EVENT_TYPE>"
+ " <MKTDATA_EVENT_SUBTYPE>INTRADAY</MKTDATA_EVENT_SUBTYPE>"
+ "</MarketDataEvents>";
formatter.formatMessageXml(messageContent);
MyEventHandler eventHandler = new MyEventHandler();
eventHandler.processEvent(event, session);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment