I am testing creating a refresh message which payload is Series in a consumer application. After Msg.payload(payload) is called, I check the result in the consumer application but nothing is set. Please help.
I am testing creating a refresh message which payload is Series in a consumer application. After Msg.payload(payload) is called, I check the result in the consumer application but nothing is set. Please help.
Hello @Akechi.Sato
To test creating/encoding a refresh message by EMA, you can use one of the possible 2 ways
A) Use TestUtilities class shipped with Elektron-SDK Java package since version 1.1.1 to help to perform the unit test. EMA also provides example source code to test creating/encoding EMA refresh message in testRefreshMsg_EncodeDecode() method as snipped source code shown below:
public void testRefreshMsg_EncodeDecode() { TestUtilities.printTestHead("testRefreshMsg_EncodeDecode", "ema encoding ema decoding"); com.thomsonreuters.upa.codec.DataDictionary dictionary = com.thomsonreuters.upa.codec.CodecFactory.createDataDictionary(); TestUtilities.upa_encodeDictionaryMsg(dictionary); com.thomsonreuters.ema.access.FieldList fl = EmaFactory.createFieldList(); TestUtilities.EmaEncodeFieldListAll(fl); com.thomsonreuters.ema.access.RefreshMsg refreshMsg = EmaFactory.createRefreshMsg(); System.out.println("Begin EMA RefreshMsg test after constructor"); TestUtilities.checkResult(refreshMsg.domainType() == com.thomsonreuters.ema.rdm.EmaRdm.MMT_MARKET_PRICE, "RefreshMsg.domainType()"); TestUtilities.checkResult(refreshMsg.streamId() == 0, "RefreshMsg.streamId()"); TestUtilities.checkResult(!refreshMsg.hasPartNum(), "RefreshMsg.hasPartNum()"); TestUtilities.checkResult(!refreshMsg.hasSeqNum(), "RefreshMsg.hasSeqNum()"); TestUtilities.checkResult(!refreshMsg.hasQos(), "RefreshMsg.hasQos()"); TestUtilities.checkResult(!refreshMsg.hasMsgKey(), "RefreshMsg.hasMsgKey()"); ...
The method is in RefreshMsgTests.java located in <Elektron_Java_SDK>\Ema\TestTools\UnitTests\Tests\com\thomsonreuters\ema\unittest. You can modify the method to create a refresh message that you want to test and check the result.
or
B) Modify a provider application to create/encode a refresh message that you want to test. Then, run the provider application. Next, run a consumer application to connect to it directly and receive the refresh message. Then, you can check in the consumer application if the refresh message sent from the provider application is correct or not.
For a provider application creating/encoding a refresh message with Series payload (dictionary response), please refer to example332__Dictionary__UserControl in <Elektron_Java_SDK>\Ema\Src\examples\java\com\thomsonreuters\ema\examples\training\iprovider\series300. For the consumer application which can request/receive dictionary response from example332__Dictionary__UserControl, please refer to example332__Dictionary__Streaming in <Elektron_Java_SDK>\Ema\Src\examples\java\com\thomsonreuters\ema\examples\training\consumer\series300.