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.

Best Answer

  • 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.