77#include < opendaq/data_packet_ptr.h>
88#include < opendaq/reader_factory.h>
99#include < testutils/testutils.h>
10+ #include < mqtt_streaming_helper/timer.h>
1011
1112using namespace daq ;
1213using namespace daq ::modules::mqtt_streaming_module;
@@ -321,8 +322,17 @@ TEST_F(MqttRawFbTest, CheckRawFbFullDataTransferWithReconfiguring)
321322 auto singal = rawFB.getSignals ()[0 ];
322323 auto reader = daq::PacketReader (singal);
323324
325+ const auto stHasData = EnumerationWithIntValue (MQTT_RAW_FB_SUB_STATUS_TYPE,
326+ static_cast <Int>(MqttBaseFb::SubscriptionStatus::HasData),
327+ daqInstance.getContext ().getTypeManager ());
328+
329+ const auto stWaitData = EnumerationWithIntValue (MQTT_RAW_FB_SUB_STATUS_TYPE,
330+ static_cast <Int>(MqttBaseFb::SubscriptionStatus::WaitingForData),
331+ daqInstance.getContext ().getTypeManager ());
332+
324333 MqttAsyncClientWrapper publisher (" testPublisherId" );
325334 ASSERT_TRUE (publisher.connect (" 127.0.0.1" ));
335+ EXPECT_EQ (rawFB.getStatusContainer ().getStatus (" SubscriptionStatus" ), stWaitData);
326336
327337 mqtt::MqttMessage msg = {topic0, dataToSend[0 ], 2 , 0 };
328338 ASSERT_TRUE (publisher.publishMsg (msg));
@@ -344,6 +354,13 @@ TEST_F(MqttRawFbTest, CheckRawFbFullDataTransferWithReconfiguring)
344354 }
345355 }
346356 };
357+ helper::utils::Timer tmr (1000 , true );
358+
359+ bool hasData = false ;
360+ while (tmr.expired () == false && hasData == false )
361+ hasData = rawFB.getStatusContainer ().getStatus (" SubscriptionStatus" ) == stHasData;
362+
363+ EXPECT_TRUE (hasData);
347364
348365 readerLambda ();
349366 ASSERT_EQ (dataToReceive.size (), 1u );
@@ -354,16 +371,17 @@ TEST_F(MqttRawFbTest, CheckRawFbFullDataTransferWithReconfiguring)
354371 ASSERT_NO_THROW (rawFB.setPropertyValue (PROPERTY_NAME_TOPIC, topic1));
355372 EXPECT_EQ (rawFB.getStatusContainer ().getStatus (" ComponentStatus" ),
356373 Enumeration (" ComponentStatusType" , " Ok" , daqInstance.getContext ().getTypeManager ()));
357- EXPECT_EQ (rawFB.getStatusContainer ().getStatus (" SubscriptionStatus" ),
358- EnumerationWithIntValue (MQTT_RAW_FB_SUB_STATUS_TYPE,
359- static_cast <Int>(MqttBaseFb::SubscriptionStatus::WaitingForData),
360- daqInstance.getContext ().getTypeManager ()));
374+ EXPECT_EQ (rawFB.getStatusContainer ().getStatus (" SubscriptionStatus" ), stWaitData);
375+
361376 msg = {topic1, dataToSend[1 ], 2 , 0 };
362377 ASSERT_TRUE (publisher.publishMsg (msg));
363- EXPECT_EQ (rawFB.getStatusContainer ().getStatus (" SubscriptionStatus" ),
364- EnumerationWithIntValue (MQTT_RAW_FB_SUB_STATUS_TYPE,
365- static_cast <Int>(MqttBaseFb::SubscriptionStatus::HasData),
366- daqInstance.getContext ().getTypeManager ()));
378+ tmr.restart ();
379+
380+ hasData = false ;
381+ while (tmr.expired () == false && hasData == false )
382+ hasData = rawFB.getStatusContainer ().getStatus (" SubscriptionStatus" ) == stHasData;
383+
384+ EXPECT_TRUE (hasData);
367385
368386 readerLambda ();
369387 ASSERT_EQ (dataToReceive.size (), 1u );
0 commit comments