Skip to content

Commit 38eb991

Browse files
committed
Fixes to test for second ixia card
Signed-off-by: Stepan Vovk <stepan.vovk@plvision.eu>
1 parent b03a63f commit 38eb991

8 files changed

Lines changed: 38 additions & 16 deletions

DentOS_Framework/DentOsTestbed/src/dent_os_testbed/test/test_suite/functional/L1/test_l1_config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ async def test_l1_settings_(testbed, l1_settings):
9292

9393
out = await Ethtool.show(input_data=[{device_host_name: [{'devname': port}]}], parse_output=True)
9494

95+
await asyncio.sleep(15)
9596
# 4. Verify port mode: speed 1000 duplex full
9697
actual_speed = int(out[0][device_host_name]['parsed_output']['speed'][:-4])
9798
assert speed == actual_speed, f'Expected speed: {speed}, actual speed: {actual_speed}'

DentOS_Framework/DentOsTestbed/src/dent_os_testbed/test/test_suite/functional/lacp/test_lacp_distribution_over_ecmp.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ async def test_lacp_ecmp_distribution_over_lag(testbed):
5656
tgen_lag_2 = ('LAG_1', [tg_ports[1]])
5757
tgen_lag_3 = ('LAG_2', tg_ports[2:])
5858
rate = 10000
59+
tolerance = 0.10
5960

6061
# 1. Enable IPv4 forwarding
6162
# 2. Create 3 bonds
@@ -142,7 +143,7 @@ async def test_lacp_ecmp_distribution_over_lag(testbed):
142143
if row['Port Name'] not in tgen_lag_3[1]:
143144
continue
144145
err_msg = f'Expected packets {row["Valid Frames Rx."]}, actual packets: {tx_packets / 4}'
145-
assert isclose(int(row['Valid Frames Rx.']), tx_packets / 4, rel_tol=0.05), err_msg
146+
assert isclose(int(row['Valid Frames Rx.']), tx_packets / 4, rel_tol=tolerance), err_msg
146147
total_received = sum([int(row['Valid Frames Rx.']) for row in stats.Rows])
147-
assert isclose(total_received, tx_packets, rel_tol=0.05),\
148+
assert isclose(total_received, tx_packets, rel_tol=tolerance),\
148149
f'Expected packets {total_received}, actual packets: {tx_packets}'

DentOS_Framework/DentOsTestbed/src/dent_os_testbed/test/test_suite/functional/lacp/test_lacp_loopback_detection.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from dent_os_testbed.lib.ip.ip_link import IpLink
66
from dent_os_testbed.lib.mstpctl.mstpctl import Mstpctl
7+
from dent_os_testbed.lib.ethtool.ethtool import Ethtool
78

89
from dent_os_testbed.utils.test_utils.tgen_utils import (tgen_utils_get_dent_devices_with_tgen,
910
tgen_utils_setup_streams, tgen_utils_start_traffic,
@@ -45,6 +46,7 @@ async def test_lacp_loopback_detection(testbed, version):
4546
bonds[f'bond_{idx+1}'] = port
4647
bridge = 'bridge_1'
4748
wait_time = 40 if version == 'stp' else 20
49+
expected_rate = 0.14 # multiplied by port speed
4850

4951
# 1. Create bridge entities and 6 bonds and set link up on them
5052
out = await IpLink.add(input_data=[{dent: [{'device': bond,
@@ -123,6 +125,9 @@ async def test_lacp_loopback_detection(testbed, version):
123125
await tgen_utils_stop_traffic(tgen_dev)
124126

125127
# 7. Verify device remain stable afterwards (during storming).
128+
out = await Ethtool.show(input_data=[{dent: [{'devname': dut_ixia_ports[2]}]}], parse_output=True)
129+
speed = int(out[0][dent]['parsed_output']['speed'][:-4])
130+
expected_rate = int(expected_rate * speed)
126131
rc, out = await device.run_cmd("echo 'Hello World'")
127132
assert rc == 0, 'FAIL: DUT crashed due to storming'
128133
assert out.strip() == 'Hello World', f'Expected <Hello World> got {out}'
@@ -131,8 +136,8 @@ async def test_lacp_loopback_detection(testbed, version):
131136
# Verify there is storming
132137
for row in stats.Rows:
133138
if row['Port Name'] == tg_ports[0]:
134-
err_msg = f'Expected 1400 got : {float(row["Rx. Rate (Mbps)"])}'
135-
assert float(row['Rx. Rate (Mbps)']) > 1400, err_msg
139+
err_msg = f'Expected {expected_rate} got : {float(row["Rx. Rate (Mbps)"])}'
140+
assert float(row['Rx. Rate (Mbps)']) > expected_rate, err_msg
136141

137142
# 8. Set bridge stp_state to 1.
138143
out = await IpLink.set(input_data=[{dent: [{

DentOS_Framework/DentOsTestbed/src/dent_os_testbed/test/test_suite/functional/lacp/test_lacp_routing_over_bridge.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,4 +147,4 @@ async def test_lacp_routing_over_bridge(testbed):
147147
stats = await tgen_utils_get_traffic_stats(tgen_dev, 'Traffic Item Statistics')
148148
for row in stats.Rows:
149149
err_msg = f"Expected 0.00 loss, actual {float(row['Loss %'])}"
150-
assert tgen_utils_get_loss(row) == 0.000, err_msg
150+
assert tgen_utils_get_loss(row) < 0.1, err_msg

DentOS_Framework/DentOsTestbed/src/dent_os_testbed/test/test_suite/functional/lacp/test_lacp_routing_over_lacp.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import asyncio
2+
from math import isclose
3+
24
import pytest
35

46
from dent_os_testbed.lib.ip.ip_link import IpLink
@@ -12,7 +14,6 @@
1214
tgen_utils_dev_groups_from_config,
1315
tgen_utils_get_traffic_stats,
1416
tgen_utils_setup_streams,
15-
tgen_utils_get_loss,
1617
tgen_utils_start_traffic,
1718
tgen_utils_stop_traffic,
1819
tgen_utils_get_swp_info,
@@ -139,5 +140,5 @@ async def test_lacp_routing_over_lacp(testbed):
139140
stats = await tgen_utils_get_traffic_stats(tgen_dev, 'Traffic Item Statistics')
140141
for row in stats.Rows:
141142
err_msg = f"Expected 0.00 loss, actual {float(row['Loss %'])}"
142-
assert tgen_utils_get_loss(row) == 0.000, err_msg
143+
assert isclose(float(row['Rx Rate (Mbps)']), 0.00, abs_tol=0.1), err_msg
143144
await tgen_utils_stop_traffic(tgen_dev)

DentOS_Framework/DentOsTestbed/src/dent_os_testbed/test/test_suite/functional/lacp/test_lacp_routing_over_vlan_device.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import asyncio
2+
from math import isclose
3+
24
import pytest
35

46
from dent_os_testbed.lib.ip.ip_link import IpLink
@@ -12,7 +14,6 @@
1214
tgen_utils_dev_groups_from_config,
1315
tgen_utils_get_traffic_stats,
1416
tgen_utils_setup_streams,
15-
tgen_utils_get_loss,
1617
tgen_utils_start_traffic,
1718
tgen_utils_get_swp_info,
1819
)
@@ -167,4 +168,4 @@ async def test_lacp_routing_over_vlan_device(testbed):
167168
stats = await tgen_utils_get_traffic_stats(tgen_dev, 'Traffic Item Statistics')
168169
for row in stats.Rows:
169170
err_msg = f"Expected 0.00 loss, actual {float(row['Loss %'])}"
170-
assert tgen_utils_get_loss(row) == 0.000, err_msg
171+
assert isclose(float(row['Rx Rate (Mbps)']), 0.00, abs_tol=0.1), err_msg

DentOS_Framework/DentOsTestbed/src/dent_os_testbed/test/test_suite/functional/lacp/test_lacp_traffic_during_topology_convergence.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from dent_os_testbed.lib.ip.ip_link import IpLink
66
from dent_os_testbed.lib.mstpctl.mstpctl import Mstpctl
7+
from dent_os_testbed.lib.ethtool.ethtool import Ethtool
78

89
from dent_os_testbed.utils.test_utils.tgen_utils import (tgen_utils_get_dent_devices_with_tgen,
910
tgen_utils_setup_streams, tgen_utils_start_traffic,
@@ -12,7 +13,7 @@
1213
tgen_utils_traffic_generator_connect, )
1314
pytestmark = [pytest.mark.suite_functional_lacp,
1415
pytest.mark.asyncio,
15-
pytest.mark.usefixtures('cleanup_tgen', 'cleanup_bonds', 'cleanup_bridges')]
16+
pytest.mark.usefixtures('cleanup_tgen', 'cleanup_bonds', 'cleanup_bridges', 'enable_mstpd')]
1617

1718

1819
@pytest.mark.parametrize('version', ['stp', 'rstp'])
@@ -60,6 +61,7 @@ async def test_lacp_traffic_during_topology_convergence(testbed, version):
6061
bridge_names = list(bridges.keys())
6162
tolerance = 0.15
6263
wait_time = 40 if 'version' == 'stp' else 20
64+
expected_rate = 0.14 # multiplied by port speed
6365
# 1. Create 3 bridge entities and 6 bonds and set link up on them
6466
out = await IpLink.add(input_data=[{dent: [{'device': bond,
6567
'type': 'bond',
@@ -147,13 +149,17 @@ async def test_lacp_traffic_during_topology_convergence(testbed, version):
147149
rc, out = await device.run_cmd("echo 'Hello World'")
148150
assert rc == 0, 'FAIL: DUT crashed due to storming'
149151
assert out.strip() == 'Hello World', f'Expected <Hello World> got {out}'
152+
await asyncio.sleep(wait_time)
150153

151154
# 7. Verify there is a storming
155+
out = await Ethtool.show(input_data=[{dent: [{'devname': dut_tgen_ports[2]}]}], parse_output=True)
156+
speed = int(out[0][dent]['parsed_output']['speed'][:-4])
157+
expected_rate = round(int(expected_rate * speed), 2)
152158
stats = await tgen_utils_get_traffic_stats(tgen_dev, 'Port Statistics')
153159
for row in stats.Rows:
154160
if row['Port Name'] in tg_ports[:2]:
155-
err_msg = 'Expected 1400 got : {float(row["Rx. Rate (Mbps)"])}'
156-
assert float(row['Rx. Rate (Mbps)']) > 1400, err_msg
161+
err_msg = f'Expected {int(expected_rate * speed)} got : {float(row["Rx. Rate (Mbps)"])}'
162+
assert float(row['Rx. Rate (Mbps)']) > expected_rate, err_msg
157163

158164
# 8. Set bridge stp_state to 1.
159165
out = await IpLink.set(input_data=[{dent: [{
@@ -228,8 +234,9 @@ async def test_lacp_traffic_during_topology_convergence(testbed, version):
228234
stats = await tgen_utils_get_traffic_stats(tgen_dev, 'Port Statistics')
229235
for row in stats.Rows:
230236
if row['Port Name'] == tg_ports[1]:
231-
err_msg = 'Expected 1400 got : {float(row["Rx. Rate (Mbps)"])}'
232-
assert isclose(float(row['Rx. Rate (Mbps)']), 1400, rel_tol=tolerance), err_msg
237+
err_msg = f'Expected 1400 got : {float(row["Rx. Rate (Mbps)"])}'
238+
assert isclose(float(row['Rx. Rate (Mbps)']),
239+
expected_rate, rel_tol=tolerance), err_msg
233240

234241
# 16. Stop the traffic. Verify there is no storming
235242
await tgen_utils_stop_traffic(tgen_dev)

DentOS_Framework/DentOsTestbed/src/dent_os_testbed/test/test_suite/functional/stp/test_stp_loopback.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from dent_os_testbed.lib.ip.ip_link import IpLink
66
from dent_os_testbed.lib.mstpctl.mstpctl import Mstpctl
7+
from dent_os_testbed.lib.ethtool.ethtool import Ethtool
78

89
from dent_os_testbed.utils.test_utils.tgen_utils import (tgen_utils_get_dent_devices_with_tgen,
910
tgen_utils_setup_streams, tgen_utils_start_traffic,
@@ -45,6 +46,7 @@ async def test_stp_loopback_detection(testbed, version):
4546
loopback_ports = {}
4647
for idx, port in enumerate(device.links_dict[dent][0] + device.links_dict[dent][1]):
4748
loopback_ports[f'loopback_{idx+1}'] = port
49+
expected_rate = 0.14 # multiplied by port speed
4850

4951
# 1. Create bridge entity
5052
out = await IpLink.add(input_data=[{dent: [{
@@ -114,12 +116,16 @@ async def test_stp_loopback_detection(testbed, version):
114116
assert rc == 0, 'FAIL: DUT crashed due to storming'
115117
assert out.strip() == 'Hello World', f'Expected <Hello World> got {out}'
116118

119+
out = await Ethtool.show(input_data=[{dent: [{'devname': dut_ixia_ports[2]}]}], parse_output=True)
120+
speed = int(out[0][dent]['parsed_output']['speed'][:-4])
121+
expected_rate = round(int(expected_rate * speed), 2)
117122
stats = await tgen_utils_get_traffic_stats(tgen_dev, 'Port Statistics')
123+
118124
# Verify there is storming
119125
for row in stats.Rows:
120126
if row['Port Name'] == tg_ports[0]:
121-
err_msg = f'Expected 1400 got : {float(row["Rx. Rate (Mbps)"])}'
122-
assert float(row['Rx. Rate (Mbps)']) > 1400, err_msg
127+
err_msg = f'Expected {int(expected_rate * speed)} got : {float(row["Rx. Rate (Mbps)"])}'
128+
assert float(row['Rx. Rate (Mbps)']) > expected_rate, err_msg
123129

124130
# 8. Set bridge stp_state to 1.
125131
out = await IpLink.set(input_data=[{dent: [{

0 commit comments

Comments
 (0)