question

Upvotes
Accepted
129 15 25 31

Test creating/encoding a refresh message by EMA Java

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.

elektronrefinitiv-realtimeelektron-sdkema-apirrtelektron-message-api
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

· Write an Answer
Upvote
Accepted
9.6k 10 7 7

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.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.