diff --git a/TestON/tests/USECASE/SegmentRouting/INT/INT.params b/TestON/tests/USECASE/SegmentRouting/INT/INT.params
index 63ff5c7..e73c627 100644
--- a/TestON/tests/USECASE/SegmentRouting/INT/INT.params
+++ b/TestON/tests/USECASE/SegmentRouting/INT/INT.params
@@ -1,7 +1,7 @@
 <!-- SPDX-FileCopyrightText: Copyright 2021-present Open Networking Foundation. -->
 <!-- SPDX-License-Identifier: GPL-2.0-or-later -->
 <PARAMS>
-    <testcases>1,2,3</testcases>
+    <testcases>1,2,3,4</testcases>
     <routerMac>00:00:0A:4C:1C:46</routerMac>
     <TREX>
         <flows>
diff --git a/TestON/tests/USECASE/SegmentRouting/INT/INT.py b/TestON/tests/USECASE/SegmentRouting/INT/INT.py
index 9295a29..4942d44 100644
--- a/TestON/tests/USECASE/SegmentRouting/INT/INT.py
+++ b/TestON/tests/USECASE/SegmentRouting/INT/INT.py
@@ -7,9 +7,7 @@
         self.default = ""
 
     def CASE1 (self, main):
-        """
-        Send ping packets from one host to another host and check flows from DeepInsight.
-        """
+        main.case("Send ping packets from one host to another host and check flows from DeepInsight")
         import time
         import socket
         from core import utilities
@@ -38,7 +36,10 @@
             UDP(sport={}, dport={}) /
             ("A"*30)
         )""".format(srcMac, dstMac, srcIp, dstIp, srcPort, dstPort)
-        main.h1.sendPacket(iface=srcIfaceName, packet=pkt)
+        # Send multiple packets incase the server or DeepInsight drop the report accidently
+        # FIXME: Find the root cause, might be misconfiguration or Linux(e.g., rp_filter?) issue.
+        for _ in range(0, 5):
+            main.h1.sendPacket(iface=srcIfaceName, packet=pkt)
         endTimeMs = (time.time() + 5) * 1000
 
         main.step("Checking total number of flow reports from DeepInsight")
@@ -71,10 +72,7 @@
         intTest.cleanUp(main)
 
     def CASE2 (self, main):
-        """
-        Send a packet with invalid VLAN from one host to another host and check
-        if DeepInsight receives drop reports.
-        """
+        main.case("Send a packet with invalid VLAN from one host to another host and check if DeepInsight receives drop reports")
         import time
         import socket
         from core import utilities
@@ -104,7 +102,10 @@
             UDP(sport={}, dport={}) /
             ("A"*30)
         )""".format(srcMac, dstMac, srcIp, dstIp, srcPort, dstPort)
-        main.h1.sendPacket(iface=srcIfaceName, packet=pkt)
+        # Send multiple packets incase the server or DeepInsight drop the report accidently
+        # FIXME: Find the root cause, might be misconfiguration or Linux(e.g., rp_filter?) issue.
+        for _ in range(0, 5):
+            main.h1.sendPacket(iface=srcIfaceName, packet=pkt)
         endTimeMs = (time.time() + 5) * 1000
 
         main.step("Checking drop report from DeepInsight")
@@ -127,10 +128,10 @@
             attempts=60,
         )
 
-        utilities.assert_equals(
-            expect=1, actual=len(dropAnomalies),
-            onpass="Got 1 drop anomaly from DeepInsight as expected.",
-            onfail="Got %d drop anomaly from DeepInsight, expect 1" % (len(dropAnomalies))
+        utilities.assert_lesser(
+            expect=0, actual=len(dropAnomalies),
+            onpass="Got %d drop anomaly from DeepInsight." % (len(dropAnomalies)),
+            onfail="Got no drop anomaly from DeepInsight."
         )
 
         main.step("Checking drop reason from the report")
@@ -148,10 +149,7 @@
         intTest.cleanUp(main)
 
     def CASE3 (self, main):
-        """
-        Send a packet with IP TTL value 1 from one host to another host and check
-        if DeepInsight receives drop reports.
-        """
+        main.case("Send a packet with IP TTL value 1 from one host to another host and check if DeepInsight receives drop reports")
         import time
         import socket
         from core import utilities
@@ -180,7 +178,10 @@
             UDP(sport={}, dport={}) /
             ("A"*30)
         )""".format(srcMac, dstMac, srcIp, dstIp, srcPort, dstPort)
-        main.h1.sendPacket(iface=srcIfaceName, packet=pkt)
+        # Send multiple packets incase the server or DeepInsight drop the report accidently
+        # FIXME: Find the root cause, might be misconfiguration or Linux(e.g., rp_filter?) issue.
+        for _ in range(0, 5):
+            main.h1.sendPacket(iface=srcIfaceName, packet=pkt)
         endTimeMs = (time.time() + 5) * 1000
 
         main.step("Checking drop report from DeepInsight")
@@ -203,10 +204,10 @@
             attempts=60,
         )
 
-        utilities.assert_equals(
-            expect=1, actual=len(dropAnomalies),
-            onpass="Got 1 drop anomaly from DeepInsight as expected.",
-            onfail="Got %d drop anomaly from DeepInsight, expect '1'." % (len(dropAnomalies))
+        utilities.assert_lesser(
+            expect=0, actual=len(dropAnomalies),
+            onpass="Got %d drop anomaly from DeepInsight." % (len(dropAnomalies)),
+            onfail="Got no drop anomaly from DeepInsight."
         )
 
         main.step("Checking drop reason from report")
@@ -223,9 +224,7 @@
         intTest.cleanUp(main)
 
     def CASE4(self, main):
-        """
-        Generate traffic at high rate and expect queue congestion reports in DeepInsight.
-        """
+        main.case("Generate traffic at high rate and expect queue congestion reports in DeepInsight")
         from core import utilities
         import time
         from tests.USECASE.SegmentRouting.INT.dependencies.IntTest import IntTest
@@ -268,7 +267,7 @@
         queueAnomalies = utilities.retry(
             f=getQueueAnomaly,
             retValue=[[]],
-            attempts=60,
+            attempts=120,
         )
 
         # We should get at least two congestion records
