@@ -522,87 +522,94 @@ TEST_F(AnalyticsTest, SendAndReceiveMultipleEventsQueued)
522522 status = InvokeServiceMethod (" org.rdk.System" , " setTimeZoneDST" , paramsJson, resultJson);
523523 EXPECT_EQ (status, Core::ERROR_NONE);
524524
525- for (int i = 0 ; i < eventsSentNbr; i += eventsRcvMaxDfl) {
526- string eventMsg = siftServer.AwaitData (SIFT_SERVER_TIMEOUT_SEC);
527- EXPECT_NE (eventMsg, " " );
528-
529- // Check if the event message contains the expected fields
530- JsonArray eventArray;
531- eventArray.FromString (eventMsg);
532- EXPECT_EQ (eventArray.Length (), eventsRcvMaxDfl);
533-
534- for (int n = 0 ; n < eventsRcvMaxDfl; ++n) {
535- JsonObject eventObj = eventArray[n].Object ();
536-
537- EXPECT_TRUE (eventObj.HasLabel (" common_schema" ));
538- EXPECT_TRUE (eventObj.HasLabel (" env" ));
539- EXPECT_TRUE (eventObj.HasLabel (" product_name" ));
540- EXPECT_TRUE (eventObj.HasLabel (" product_version" ));
541- EXPECT_TRUE (eventObj.HasLabel (" event_schema" ));
542- EXPECT_TRUE (eventObj.HasLabel (" event_name" ));
543- EXPECT_TRUE (eventObj.HasLabel (" timestamp" ));
544- EXPECT_TRUE (eventObj.HasLabel (" event_id" ));
545- EXPECT_TRUE (eventObj.HasLabel (" event_source" ));
546- EXPECT_TRUE (eventObj.HasLabel (" event_source_version" ));
547- EXPECT_TRUE (eventObj.HasLabel (" logger_name" ));
548- EXPECT_TRUE (eventObj.HasLabel (" logger_version" ));
549- EXPECT_TRUE (eventObj.HasLabel (" partner_id" ));
550- EXPECT_TRUE (eventObj.HasLabel (" device_model" ));
551- EXPECT_TRUE (eventObj.HasLabel (" device_type" ));
552- EXPECT_TRUE (eventObj.HasLabel (" device_timezone" ));
553- EXPECT_TRUE (eventObj.HasLabel (" device_os_name" ));
554- EXPECT_TRUE (eventObj.HasLabel (" device_os_version" ));
555- EXPECT_TRUE (eventObj.HasLabel (" platform" ));
556- EXPECT_TRUE (eventObj.HasLabel (" device_manufacturer" ));
557- EXPECT_TRUE (eventObj.HasLabel (" authenticated" ));
558- EXPECT_TRUE (eventObj.HasLabel (" session_id" ));
559- EXPECT_TRUE (eventObj.HasLabel (" proposition" ));
560- EXPECT_TRUE (eventObj.HasLabel (" retailer" ));
561- EXPECT_TRUE (eventObj.HasLabel (" jv_agent" ));
562- EXPECT_TRUE (eventObj.HasLabel (" coam" ));
563- EXPECT_TRUE (eventObj.HasLabel (" device_serial_number" ));
564- EXPECT_TRUE (eventObj.HasLabel (" device_mac_address" ));
565- EXPECT_TRUE (eventObj.HasLabel (" country" ));
566- EXPECT_TRUE (eventObj.HasLabel (" region" ));
567- EXPECT_TRUE (eventObj.HasLabel (" account_type" ));
568- EXPECT_TRUE (eventObj.HasLabel (" operator" ));
569- EXPECT_TRUE (eventObj.HasLabel (" account_detail_type" ));
570- EXPECT_TRUE (eventObj.HasLabel (" event_payload" ));
571-
572- EXPECT_EQ (eventObj[" common_schema" ].String (), " entos/common/v1" );
573- EXPECT_EQ (eventObj[" env" ].String (), " prod" );
574- EXPECT_EQ (eventObj[" product_name" ].String (), " entos" );
575- EXPECT_EQ (eventObj[" product_version" ].String (), " L2Test_EntertainmentOSVersion" );
576- EXPECT_EQ (eventObj[" event_schema" ].String (), " entos/L2TestEvent/1" );
577- EXPECT_EQ (eventObj[" event_name" ].String (), " L2TestEvent" );
578- EXPECT_EQ (eventObj[" event_source" ].String (), " L2Test" );
579- EXPECT_EQ (eventObj[" event_source_version" ].String (), " 1.0.0" );
580- EXPECT_EQ (eventObj[" logger_name" ].String (), " Analytics" );
581- EXPECT_EQ (eventObj[" partner_id" ].String (), " rdkglobal" );
582- EXPECT_EQ (eventObj[" device_model" ].String (), " RDK" );
583- EXPECT_EQ (eventObj[" device_type" ].String (), " STB" );
584- EXPECT_EQ (eventObj[" device_timezone" ].Number (), -14400000 );
585- EXPECT_EQ (eventObj[" device_os_name" ].String (), " rdk" );
586- EXPECT_EQ (eventObj[" device_os_version" ].String (), " L2Test_STB" );
587- EXPECT_EQ (eventObj[" platform" ].String (), " L2Test_Proposition" );
588- EXPECT_EQ (eventObj[" device_manufacturer" ].String (), " L2Test_Manufacturer" );
589- EXPECT_EQ (eventObj[" proposition" ].String (), " L2Test_Proposition" );
590- EXPECT_EQ (eventObj[" retailer" ].String (), " L2Test_Retailer" );
591- EXPECT_EQ (eventObj[" jv_agent" ].String (), " L2Test_JVAgent" );
592- EXPECT_EQ (eventObj[" coam" ].Boolean (), true );
593- EXPECT_EQ (eventObj[" device_serial_number" ].String (), " L2Test_SerialNumber" );
594- EXPECT_EQ (eventObj[" device_mac_address" ].String (), " 01:02:03:04:05:06" );
595- EXPECT_EQ (eventObj[" country" ].String (), " USA" );
596- EXPECT_EQ (eventObj[" region" ].String (), " US-USA" );
597- EXPECT_EQ (eventObj[" account_type" ].String (), " L2Test_AccountType" );
598- EXPECT_EQ (eventObj[" operator" ].String (), " L2Test_Operator" );
599- EXPECT_EQ (eventObj[" account_detail_type" ].String (), " L2Test_DetailType" );
600-
601- JsonObject eventPayloadObj = eventObj[" event_payload" ].Object ();
602- EXPECT_TRUE (eventPayloadObj.HasLabel (" data" ));
603- EXPECT_EQ (eventPayloadObj[" data" ].String (), " random data" );
525+ // Collect all events
526+ eventMsg = siftServer.AwaitData (SIFT_SERVER_TIMEOUT_SEC);
527+ JsonArray eventArray;
528+ eventArray.FromString (eventMsg);
529+ int retry = eventsSentNbr;
530+ while (eventArray.Length () < eventsSentNbr && retry-- > 0 ) {
531+ // If not all events are received, wait for the rest
532+ string eventsMsg2 = siftServer.AwaitData (SIFT_SERVER_TIMEOUT_SEC);
533+ JsonArray eventArray2;
534+ eventArray2.FromString (eventsMsg2);
535+ for (int i = 0 ; i < eventArray2.Length (); ++i) {
536+ eventArray.Add (eventArray2[i]);
604537 }
605538 }
539+
540+ EXPECT_EQ (eventArray.Length (), eventsSentNbr);
541+
542+ for (int n = 0 ; n < eventsSentNbr; ++n) {
543+ JsonObject eventObj = eventArray[n].Object ();
544+
545+ EXPECT_TRUE (eventObj.HasLabel (" common_schema" ));
546+ EXPECT_TRUE (eventObj.HasLabel (" env" ));
547+ EXPECT_TRUE (eventObj.HasLabel (" product_name" ));
548+ EXPECT_TRUE (eventObj.HasLabel (" product_version" ));
549+ EXPECT_TRUE (eventObj.HasLabel (" event_schema" ));
550+ EXPECT_TRUE (eventObj.HasLabel (" event_name" ));
551+ EXPECT_TRUE (eventObj.HasLabel (" timestamp" ));
552+ EXPECT_TRUE (eventObj.HasLabel (" event_id" ));
553+ EXPECT_TRUE (eventObj.HasLabel (" event_source" ));
554+ EXPECT_TRUE (eventObj.HasLabel (" event_source_version" ));
555+ EXPECT_TRUE (eventObj.HasLabel (" logger_name" ));
556+ EXPECT_TRUE (eventObj.HasLabel (" logger_version" ));
557+ EXPECT_TRUE (eventObj.HasLabel (" partner_id" ));
558+ EXPECT_TRUE (eventObj.HasLabel (" device_model" ));
559+ EXPECT_TRUE (eventObj.HasLabel (" device_type" ));
560+ EXPECT_TRUE (eventObj.HasLabel (" device_timezone" ));
561+ EXPECT_TRUE (eventObj.HasLabel (" device_os_name" ));
562+ EXPECT_TRUE (eventObj.HasLabel (" device_os_version" ));
563+ EXPECT_TRUE (eventObj.HasLabel (" platform" ));
564+ EXPECT_TRUE (eventObj.HasLabel (" device_manufacturer" ));
565+ EXPECT_TRUE (eventObj.HasLabel (" authenticated" ));
566+ EXPECT_TRUE (eventObj.HasLabel (" session_id" ));
567+ EXPECT_TRUE (eventObj.HasLabel (" proposition" ));
568+ EXPECT_TRUE (eventObj.HasLabel (" retailer" ));
569+ EXPECT_TRUE (eventObj.HasLabel (" jv_agent" ));
570+ EXPECT_TRUE (eventObj.HasLabel (" coam" ));
571+ EXPECT_TRUE (eventObj.HasLabel (" device_serial_number" ));
572+ EXPECT_TRUE (eventObj.HasLabel (" device_mac_address" ));
573+ EXPECT_TRUE (eventObj.HasLabel (" country" ));
574+ EXPECT_TRUE (eventObj.HasLabel (" region" ));
575+ EXPECT_TRUE (eventObj.HasLabel (" account_type" ));
576+ EXPECT_TRUE (eventObj.HasLabel (" operator" ));
577+ EXPECT_TRUE (eventObj.HasLabel (" account_detail_type" ));
578+ EXPECT_TRUE (eventObj.HasLabel (" event_payload" ));
579+
580+ EXPECT_EQ (eventObj[" common_schema" ].String (), " entos/common/v1" );
581+ EXPECT_EQ (eventObj[" env" ].String (), " prod" );
582+ EXPECT_EQ (eventObj[" product_name" ].String (), " entos" );
583+ EXPECT_EQ (eventObj[" product_version" ].String (), " L2Test_EntertainmentOSVersion" );
584+ EXPECT_EQ (eventObj[" event_schema" ].String (), " entos/L2TestEvent/1" );
585+ EXPECT_EQ (eventObj[" event_name" ].String (), " L2TestEvent" );
586+ EXPECT_EQ (eventObj[" event_source" ].String (), " L2Test" );
587+ EXPECT_EQ (eventObj[" event_source_version" ].String (), " 1.0.0" );
588+ EXPECT_EQ (eventObj[" logger_name" ].String (), " Analytics" );
589+ EXPECT_EQ (eventObj[" partner_id" ].String (), " rdkglobal" );
590+ EXPECT_EQ (eventObj[" device_model" ].String (), " RDK" );
591+ EXPECT_EQ (eventObj[" device_type" ].String (), " STB" );
592+ EXPECT_EQ (eventObj[" device_timezone" ].Number (), -14400000 );
593+ EXPECT_EQ (eventObj[" device_os_name" ].String (), " rdk" );
594+ EXPECT_EQ (eventObj[" device_os_version" ].String (), " L2Test_STB" );
595+ EXPECT_EQ (eventObj[" platform" ].String (), " L2Test_Proposition" );
596+ EXPECT_EQ (eventObj[" device_manufacturer" ].String (), " L2Test_Manufacturer" );
597+ EXPECT_EQ (eventObj[" proposition" ].String (), " L2Test_Proposition" );
598+ EXPECT_EQ (eventObj[" retailer" ].String (), " L2Test_Retailer" );
599+ EXPECT_EQ (eventObj[" jv_agent" ].String (), " L2Test_JVAgent" );
600+ EXPECT_EQ (eventObj[" coam" ].Boolean (), true );
601+ EXPECT_EQ (eventObj[" device_serial_number" ].String (), " L2Test_SerialNumber" );
602+ EXPECT_EQ (eventObj[" device_mac_address" ].String (), " 01:02:03:04:05:06" );
603+ EXPECT_EQ (eventObj[" country" ].String (), " USA" );
604+ EXPECT_EQ (eventObj[" region" ].String (), " US-USA" );
605+ EXPECT_EQ (eventObj[" account_type" ].String (), " L2Test_AccountType" );
606+ EXPECT_EQ (eventObj[" operator" ].String (), " L2Test_Operator" );
607+ EXPECT_EQ (eventObj[" account_detail_type" ].String (), " L2Test_DetailType" );
608+
609+ JsonObject eventPayloadObj = eventObj[" event_payload" ].Object ();
610+ EXPECT_TRUE (eventPayloadObj.HasLabel (" data" ));
611+ EXPECT_EQ (eventPayloadObj[" data" ].String (), " random data" );
612+ }
606613}
607614
608615TEST_F (AnalyticsTest, SendAndReceiveMultipleEventsTimeOk)
@@ -615,7 +622,7 @@ TEST_F(AnalyticsTest, SendAndReceiveMultipleEventsTimeOk)
615622 uint32_t status = InvokeServiceMethod (" org.rdk.System" , " setTimeZoneDST" , paramsJson, resultJson);
616623 EXPECT_EQ (status, Core::ERROR_NONE);
617624
618- sleep (3 );
625+ sleep (5 );
619626
620627 paramsJson.Clear ();
621628 paramsJson[" eventName" ] = " L2TestEvent" ;
@@ -626,22 +633,34 @@ TEST_F(AnalyticsTest, SendAndReceiveMultipleEventsTimeOk)
626633 eventPayload[" data" ] = " random data" ;
627634 paramsJson[" eventPayload" ] = eventPayload;
628635
629- SiftServerMock siftServer;
630- EXPECT_TRUE (siftServer.Start ());
631-
632636 const int eventsSentNbr = 6 ;
633637
634638 for (int i = 0 ; i < eventsSentNbr; ++i) {
635639 status = InvokeServiceMethod (" org.rdk.Analytics" , " sendEvent" , paramsJson, resultJson);
636640 EXPECT_EQ (status, Core::ERROR_NONE);
637641 }
638642
643+ // wait for all events to be stored in the analytics store
644+ sleep (3 );
645+
646+ SiftServerMock siftServer;
647+ EXPECT_TRUE (siftServer.Start ());
648+
639649 string eventMsg = siftServer.AwaitData (SIFT_SERVER_TIMEOUT_SEC);
640- EXPECT_NE (eventMsg, " " );
641650
642651 // Check if the event message contains the expected fields
643652 JsonArray eventArray;
644653 eventArray.FromString (eventMsg);
654+ int retry = eventsSentNbr;
655+ while (eventArray.Length () < eventsSentNbr && retry-- > 0 ) {
656+ // If not all events are received, wait for the rest
657+ string eventMsg2 = siftServer.AwaitData (SIFT_SERVER_TIMEOUT_SEC);
658+ JsonArray eventArray2;
659+ eventArray2.FromString (eventMsg2);
660+ for (int i = 0 ; i < eventArray2.Length (); ++i) {
661+ eventArray.Add (eventArray2[i]);
662+ }
663+ }
645664 EXPECT_EQ (eventArray.Length (), eventsSentNbr);
646665
647666 for (int n = 0 ; n < eventsSentNbr; ++n) {
@@ -1009,23 +1028,34 @@ TEST_F(AnalyticsTest, EventsMapping)
10091028 status = InvokeServiceMethod (" org.rdk.Analytics" , " sendEvent" , paramsJson, resultJson);
10101029 EXPECT_EQ (status, Core::ERROR_NONE);
10111030
1012-
1013- SiftServerMock siftServer;
1014- EXPECT_TRUE (siftServer.Start ());
1015-
10161031 // Set TimeZone to FINAL what allows event to be decorated and sent to Sift server
10171032 paramsJson.Clear ();
10181033 paramsJson[" timeZone" ] = " America/New_York" ;
10191034 paramsJson[" accuracy" ] = " FINAL" ;
10201035 status = InvokeServiceMethod (" org.rdk.System" , " setTimeZoneDST" , paramsJson, resultJson);
10211036 EXPECT_EQ (status, Core::ERROR_NONE);
10221037
1038+ // wait for all events to be stored in the analytics store
1039+ sleep (5 );
1040+
1041+ SiftServerMock siftServer;
1042+ EXPECT_TRUE (siftServer.Start ());
1043+
10231044 string eventsMsg = siftServer.AwaitData (SIFT_SERVER_TIMEOUT_SEC);
1024- EXPECT_NE (eventsMsg, " " );
10251045
10261046 // Check if the event message contains the expected fields
10271047 JsonArray eventArray;
10281048 eventArray.FromString (eventsMsg);
1049+ int retry = 3 ;
1050+ while (eventArray.Length () < 4 && retry-- > 0 ) {
1051+ // If not all events are received, wait for the rest
1052+ string eventsMsg2 = siftServer.AwaitData (SIFT_SERVER_TIMEOUT_SEC);
1053+ JsonArray eventArray2;
1054+ eventArray2.FromString (eventsMsg2);
1055+ for (int i = 0 ; i < eventArray2.Length (); ++i) {
1056+ eventArray.Add (eventArray2[i]);
1057+ }
1058+ }
10291059 EXPECT_EQ (eventArray.Length (), 4 );
10301060
10311061 if (eventArray.Length () == 4 ) {
@@ -1046,4 +1076,4 @@ TEST_F(AnalyticsTest, EventsMapping)
10461076 EXPECT_EQ (eventObj[" event_name" ].String (), " L2TestEventMappedGenericSourceVersion" );
10471077 }
10481078
1049- }
1079+ }
0 commit comments