summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJafar Al-Gharaibeh <jafar@atcorp.com>2022-01-07 14:18:08 -0600
committerGitHub <noreply@github.com>2022-01-07 14:18:08 -0600
commit541b51a5a3bc96af54f451d2107a608bd57bdb42 (patch)
tree8de7c3f16a3ce56bc2c852b4578abf0bbce113c6
parent23b43aac0f50a0df96c581ef85c74caf8598bd53 (diff)
parent758999b3e0109d385be0c1dd76c237fd7ac3d872 (diff)
Merge pull request #10301 from donaldsharp/pim_multicast_fix
tools: Give longer for interface traffic in pim to work
-rw-r--r--tests/topotests/lib/pim.py8
-rw-r--r--tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py6
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py10
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py6
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py93
-rwxr-xr-xtests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py26
6 files changed, 88 insertions, 61 deletions
diff --git a/tests/topotests/lib/pim.py b/tests/topotests/lib/pim.py
index dd2f787014..1f723eab93 100644
--- a/tests/topotests/lib/pim.py
+++ b/tests/topotests/lib/pim.py
@@ -1443,16 +1443,16 @@ def verify_pim_state(
return True
-def verify_pim_interface_traffic(tgen, input_dict):
+def get_pim_interface_traffic(tgen, input_dict):
"""
- Verify ip pim interface traffice by running
+ get ip pim interface traffice by running
"show ip pim interface traffic" cli
Parameters
----------
* `tgen`: topogen object
* `input_dict(dict)`: defines DUT, what and from which interfaces
- traffic needs to be verified
+ traffic needs to be retrieved
Usage
-----
input_dict = {
@@ -1466,7 +1466,7 @@ def verify_pim_interface_traffic(tgen, input_dict):
}
}
- result = verify_pim_interface_traffic(tgen, input_dict)
+ result = get_pim_interface_traffic(tgen, input_dict)
Returns
-------
diff --git a/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py b/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
index 38560c06e4..a8418d400d 100644
--- a/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
+++ b/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
@@ -104,7 +104,7 @@ from lib.pim import (
enable_disable_pim_bsm,
clear_ip_mroute,
clear_ip_pim_interface_traffic,
- verify_pim_interface_traffic,
+ get_pim_interface_traffic,
McastTesterHelper,
)
from lib.topolog import logger
@@ -648,7 +648,7 @@ def test_BSR_CRP_with_blackhole_address_p1(request):
step("Verify bsm transit count is not increamented" "show ip pim interface traffic")
state_dict = {"f1": {intf_f1_i1: ["bsmTx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
@@ -673,7 +673,7 @@ def test_BSR_CRP_with_blackhole_address_p1(request):
tc_name, result
)
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
diff --git a/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py b/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py
index dc14bc6468..9929f4b3c7 100755
--- a/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py
+++ b/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py
@@ -84,7 +84,7 @@ from lib.pim import (
create_igmp_config,
verify_igmp_groups,
verify_ip_mroutes,
- verify_pim_interface_traffic,
+ get_pim_interface_traffic,
verify_upstream_iif,
verify_ip_pim_join,
clear_ip_mroute,
@@ -280,7 +280,7 @@ def test_multicast_data_traffic_static_RP_send_join_then_traffic_p0(request):
step("get joinRx value before join")
intf_r2_l1 = topo["routers"]["r2"]["links"]["l1"]["interface"]
state_dict = {"r2": {intf_r2_l1: ["joinRx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase {} : Failed \n state_before is not dictionary \n Error: {}".format(
@@ -352,7 +352,7 @@ def test_multicast_data_traffic_static_RP_send_join_then_traffic_p0(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
step("joinRx value after join sent")
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase {} : Failed \n state_before is not dictionary \n Error: {}".format(
@@ -425,7 +425,7 @@ def test_multicast_data_traffic_static_RP_send_traffic_then_join_p0(request):
step("Enable IGMP on FRR1 interface and send IGMP join (225.1.1.1)")
step("joinRx value before join sent")
state_dict = {"r2": {"r2-l1-eth2": ["joinRx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase {} : Failed \n state_before is not dictionary \n Error: {}".format(
@@ -474,7 +474,7 @@ def test_multicast_data_traffic_static_RP_send_traffic_then_join_p0(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
step("joinRx value after join sent")
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase {} : Failed \n state_before is not dictionary \n Error: {}".format(
diff --git a/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py b/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py
index c7d453ad81..57561c78eb 100755
--- a/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py
+++ b/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py
@@ -82,7 +82,7 @@ from lib.pim import (
create_igmp_config,
verify_igmp_groups,
verify_ip_mroutes,
- verify_pim_interface_traffic,
+ get_pim_interface_traffic,
verify_upstream_iif,
verify_pim_neighbors,
verify_pim_state,
@@ -731,7 +731,7 @@ def test_verify_SPT_switchover_when_RPT_and_SPT_path_is_different_p0(request):
step("registerRx and registerStopTx value before traffic sent")
state_dict = {"c2": {"c2-f1-eth1": ["registerRx", "registerStopTx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase {} : Failed \n state_before is not dictionary \nError: {}".format(
@@ -815,7 +815,7 @@ def test_verify_SPT_switchover_when_RPT_and_SPT_path_is_different_p0(request):
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
step("registerRx and registerStopTx value after traffic sent")
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase {} : Failed \n state_before is not dictionary \nError: {}".format(
diff --git a/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py
index 2a8e29b1d4..1fc6fddefe 100755
--- a/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py
+++ b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py
@@ -78,11 +78,13 @@ from lib.pim import (
verify_upstream_iif,
clear_ip_mroute,
verify_pim_rp_info,
- verify_pim_interface_traffic,
+ get_pim_interface_traffic,
McastTesterHelper,
)
from lib.topolog import logger
from lib.topojson import build_config_from_json
+from time import sleep
+
TOPOLOGY = """
@@ -930,7 +932,7 @@ def test_PIM_hello_tx_rx_p1(request):
}
}
- c1_state_before = verify_pim_interface_traffic(tgen, state_dict)
+ c1_state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
c1_state_before, dict
), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
@@ -946,16 +948,25 @@ def test_PIM_hello_tx_rx_p1(request):
)
shutdown_bringup_interface(tgen, "c1", intf_c1_l1, True)
- step("verify stats after on c1")
- c1_state_after = verify_pim_interface_traffic(tgen, state_dict)
- assert isinstance(
- c1_state_after, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
- tc_name, result
- )
+ step("verify stats after on c1 and that they are incremented")
+
+ count = 0
+ done = False
+ while not done and count <= 7:
+ c1_state_after = get_pim_interface_traffic(tgen, state_dict)
+ assert isinstance(
+ c1_state_after, dict
+ ), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
+ tc_name, result
+ )
+
+ result = verify_state_incremented(c1_state_before, c1_state_after)
+ if result is not True:
+ sleep(5)
+ count += 1
+ else:
+ done = True
- step("verify stats incremented on c1")
- result = verify_state_incremented(c1_state_before, c1_state_after)
assert (
result is True
), "Testcase{} : Failed Error: {}" "stats is not incremented".format(
@@ -969,7 +980,7 @@ def test_PIM_hello_tx_rx_p1(request):
}
}
- l1_state_before = verify_pim_interface_traffic(tgen, l1_state_dict)
+ l1_state_before = get_pim_interface_traffic(tgen, l1_state_dict)
assert isinstance(
l1_state_before, dict
), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
@@ -985,16 +996,24 @@ def test_PIM_hello_tx_rx_p1(request):
)
shutdown_bringup_interface(tgen, "l1", intf_l1_c1, True)
- step("verify stats after on l1")
- l1_state_after = verify_pim_interface_traffic(tgen, l1_state_dict)
- assert isinstance(
- l1_state_after, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
- tc_name, result
- )
+ step("verify stats after on l1 are incremented")
+ count = 0
+ done = False
+ while not done and count <= 7:
+ l1_state_after = get_pim_interface_traffic(tgen, l1_state_dict)
+ assert isinstance(
+ l1_state_after, dict
+ ), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
+ tc_name, result
+ )
+
+ result = verify_state_incremented(l1_state_before, l1_state_after)
+ if result is True:
+ sleep(5)
+ count += 1
+ else:
+ done = True
- step("verify stats not incremented on l1")
- result = verify_state_incremented(l1_state_before, l1_state_after)
assert (
result is not True
), "Testcase{} : Failed Error: {}" "stats incremented".format(tc_name, result)
@@ -1012,7 +1031,7 @@ def test_PIM_hello_tx_rx_p1(request):
}
}
- c1_state_before = verify_pim_interface_traffic(tgen, state_dict)
+ c1_state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
c1_state_before, dict
), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
@@ -1035,20 +1054,28 @@ def test_PIM_hello_tx_rx_p1(request):
result = apply_raw_config(tgen, raw_config)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
- step("verify stats after on c1")
- c1_state_after = verify_pim_interface_traffic(tgen, state_dict)
- assert isinstance(
- c1_state_after, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
+ step("verify stats after on c1 are incremented")
+ count = 0
+ done = False
+ while not done and count <= 7:
+ c1_state_after = get_pim_interface_traffic(tgen, state_dict)
+ assert isinstance(
+ c1_state_after, dict
+ ), "Testcase{} : Failed \n state_before is not dictionary \n Error: {}".format(
+ tc_name, result
+ )
+
+ result = verify_state_incremented(c1_state_before, c1_state_after)
+ if result is not True:
+ sleep(5)
+ count += 1
+ else:
+ done = True
+
+ assert result is True, "Testcase{} : Failed Error: {}" "stats incremented".format(
tc_name, result
)
- step("verify stats incremented on c1")
- result = verify_state_incremented(c1_state_before, c1_state_after)
- assert (
- result is True
- ), "Testcase{} : Failed Error: {}" "stats incremented".format(tc_name, result)
-
write_test_footer(tc_name)
diff --git a/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py b/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py
index 9bbe3ca028..a5cec93813 100755
--- a/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py
+++ b/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py
@@ -137,7 +137,7 @@ from lib.pim import (
verify_join_state_and_timer,
verify_ip_mroutes,
verify_pim_neighbors,
- verify_pim_interface_traffic,
+ get_pim_interface_traffic,
verify_pim_rp_info,
verify_pim_state,
clear_ip_pim_interface_traffic,
@@ -386,7 +386,7 @@ def test_add_delete_static_RP_p0(request):
step("r1: Verify show ip pim interface traffic without any IGMP join")
state_dict = {"r1": {"r1-r2-eth1": ["pruneTx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase {} : Failed \n state_before is not dictionary\n Error: {}".format(
@@ -488,7 +488,7 @@ def test_add_delete_static_RP_p0(request):
)
step("r1: Verify show ip pim interface traffic without any IGMP join")
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase {} : Failed \n state_before is not dictionary \n Error: {}".format(
@@ -699,7 +699,7 @@ def test_not_reachable_static_RP_p0(request):
"show ip pim interface traffic"
)
state_dict = {"r1": {"r1-r2-eth1": ["pruneTx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
@@ -800,7 +800,7 @@ def test_not_reachable_static_RP_p0(request):
"r1: (*,G) prune is sent towards the RP interface, verify using"
"show ip pim interface traffic"
)
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
@@ -888,7 +888,7 @@ def test_add_RP_after_join_received_p1(request):
step("joinTx value before join sent")
state_dict = {"r1": {"r1-r2-eth1": ["joinTx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
@@ -979,7 +979,7 @@ def test_add_RP_after_join_received_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
logger.info("Expected behavior: %s", result)
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
@@ -1024,7 +1024,7 @@ def test_reachable_static_RP_after_join_p0(request):
step("r1 : Verify pim interface traffic")
state_dict = {"r1": {"r1-r2-eth1": ["joinTx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
@@ -1123,7 +1123,7 @@ def test_reachable_static_RP_after_join_p0(request):
logger.info("Expected behavior: %s", result)
step("r1 : Verify pim interface traffic")
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
@@ -1211,7 +1211,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
step("r1 : Verify joinTx count before sending join")
state_dict = {"r1": {"r1-r4-eth3": ["joinTx"], "r1-r2-eth1": ["pruneTx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
@@ -1261,7 +1261,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
step("r1 : Verify join is sent to higher preferred RP")
step("r1 : Verify prune is sent to lower preferred RP")
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
@@ -1293,7 +1293,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
step("r1 : Verify joinTx, pruneTx count before RP gets deleted")
state_dict = {"r1": {"r1-r2-eth1": ["joinTx"], "r1-r4-eth3": ["pruneTx"]}}
- state_before = verify_pim_interface_traffic(tgen, state_dict)
+ state_before = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
@@ -1375,7 +1375,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
"r1 : Verify prune is sent to higher preferred RP when higher"
" preferred RP gets deleted"
)
- state_after = verify_pim_interface_traffic(tgen, state_dict)
+ state_after = get_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(