Skip to content

Commit f1e8e47

Browse files
committed
Config default v4&v6 route
Signed-off-by: zitingguo <[email protected]>
1 parent c905295 commit f1e8e47

File tree

3 files changed

+89
-21
lines changed

3 files changed

+89
-21
lines changed

test/sai_test/config/route_configer.py

Lines changed: 77 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,31 @@
1919
#
2020

2121

22+
from sai_test.constant import *
2223
from sai_thrift.sai_adapter import *
2324
from sai_utils import * # pylint: disable=wildcard-import; lgtm[py/polluting-import]
2425

25-
def t0_route_config_helper(test_obj, is_create_route_for_lag=True):
26+
def t0_route_config_helper(test_obj, is_create_route=True, is_create_route_for_lag=True):
2627
route_configer = RouteConfiger(test_obj)
27-
vr_id = route_configer.create_vr_id()
28-
# default_virtual_router_id = route_configer.get_default_virtual_router_id()
28+
29+
if is_create_route:
30+
route_configer.create_default_route()
2931

3032
if is_create_route_for_lag:
3133
ip_addr1 = '10.10.10.0'
3234
mac_addr1 = '02:04:02:01:01:01'
33-
route_configer.create_route_and_neighbor_entry_for_port(ip_addr=ip_addr1, mac_addr=mac_addr1, port_id=test_obj.lag1.lag_id, virtual_router_id=vr_id)
35+
route_configer.create_route_and_neighbor_entry_for_port(ip_addr=ip_addr1,
36+
mac_addr=mac_addr1,
37+
port_id=test_obj.lag1.lag_id,
38+
virtual_router_id=test_obj.default_vrf)
3439

3540
ip_addr2 = '10.1.2.100'
3641
mac_addr2 = '02:04:02:01:02:01'
37-
route_configer.create_route_and_neighbor_entry_for_port(ip_addr=ip_addr1, mac_addr=mac_addr2, port_id=test_obj.lag2.lag_id, virtual_router_id=vr_id)
42+
route_configer.create_route_and_neighbor_entry_for_port(ip_addr=ip_addr1,
43+
mac_addr=mac_addr2,
44+
port_id=test_obj.lag2.lag_id,
45+
virtual_router_id=test_obj.default_vrf)
3846

39-
test_obj.default_virtual_router_id = vr_id
4047

4148
class RouteConfiger(object):
4249
"""
@@ -52,20 +59,75 @@ def __init__(self, test_obj) -> None:
5259
"""
5360
self.test_obj = test_obj
5461
self.client = test_obj.client
62+
63+
def create_default_route(self):
64+
self.create_default_route_intf()
65+
self.create_default_v4_v6_route_entry()
66+
self.create_local_v6_route()
5567

56-
def create_vr_id(self):
57-
return sai_thrift_create_virtual_router(self.client)
68+
def create_default_route_intf(self):
69+
"""
70+
Create default route interface on loop back interface.
71+
"""
72+
print("Create loop back interface...")
73+
attr = sai_thrift_get_switch_attribute(self.client, default_virtual_router_id=True)
74+
self.test_obj.assertNotEqual(attr['default_virtual_router_id'], 0)
75+
self.test_obj.default_vrf = attr['default_virtual_router_id']
5876

59-
def get_default_virtual_router_id(self):
60-
print("Get default router id")
61-
def_attr = sai_thrift_get_switch_attribute(self.client, default_virtual_router_id=True)
62-
63-
self.test_obj.assertNotEqual(def_attr["SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID"], 0)
64-
return def_attr["SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID"]
77+
self.test_obj.loopback_intf = sai_thrift_create_router_interface(self.client,
78+
type=SAI_ROUTER_INTERFACE_TYPE_LOOPBACK, virtual_router_id=self.test_obj.default_vrf)
79+
self.test_obj.assertEqual(self.test_obj.status(), SAI_STATUS_SUCCESS)
80+
81+
def create_default_v4_v6_route_entry(self):
82+
"""
83+
Create default v4 and v6 route entry.
84+
"""
85+
86+
print("Create default v4&v6 route entry...")
87+
v6_default = sai_thrift_ip_prefix_t(addr_family=1,
88+
addr=sai_thrift_ip_addr_t(ip6=DEFAULT_IP_V6_PREFIX),
89+
mask=sai_thrift_ip_addr_t(ip6=DEFAULT_IP_V6_PREFIX))
90+
entry = sai_thrift_route_entry_t(vr_id=self.test_obj.default_vrf,
91+
destination=v6_default)
92+
self.test_obj.default_ipv6_route_entry = sai_thrift_create_route_entry(
93+
self.client,
94+
route_entry=entry,
95+
packet_action=SAI_PACKET_ACTION_DROP)
96+
self.test_obj.assertEqual(self.test_obj.status(), SAI_STATUS_SUCCESS)
97+
98+
entry = sai_thrift_route_entry_t(vr_id=self.test_obj.default_vrf,
99+
destination=sai_ipprefix(DEFAULT_IP_V4_PREFIX))
100+
self.test_obj.default_ipv4_route_entry = sai_thrift_create_route_entry(
101+
self.client,
102+
route_entry=entry,
103+
packet_action=SAI_PACKET_ACTION_DROP)
104+
self.test_obj.assertEqual(self.test_obj.status(), SAI_STATUS_SUCCESS)
105+
106+
def create_local_v6_route(self):
107+
"""
108+
Create local v6 route base on the configuration of the actual switch.
109+
"""
110+
111+
print("Create local v6 route...")
112+
entry = sai_thrift_route_entry_t(vr_id=self.test_obj.default_vrf,
113+
destination=sai_ipprefix(LOCAL_IP_10V6_PREFIX))
114+
self.test_obj.local_10v6_route_entry = sai_thrift_create_route_entry(
115+
self.client,
116+
route_entry=entry,
117+
packet_action=SAI_PACKET_ACTION_FORWARD)
118+
self.test_obj.assertEqual(self.test_obj.status(), SAI_STATUS_SUCCESS)
119+
120+
entry = sai_thrift_route_entry_t(vr_id=self.test_obj.default_vrf,
121+
destination=sai_ipprefix(LOCAL_IP_128V6_PREFIX))
122+
self.test_obj.local_128v6_route_entry = sai_thrift_create_route_entry(
123+
self.client,
124+
route_entry=entry,
125+
packet_action=SAI_PACKET_ACTION_FORWARD)
126+
self.test_obj.assertEqual(self.test_obj.status(), SAI_STATUS_SUCCESS)
65127

66128
def create_route_and_neighbor_entry_for_port(self, ip_addr, mac_addr, port_id, virtual_router_id=None):
67129
if virtual_router_id is None:
68-
virtual_router_id = self.get_default_virtual_router_id()
130+
virtual_router_id = self.test_obj.default_vrf
69131

70132
rif_id1 = sai_thrift_create_router_interface(self.client, virtual_router_id=virtual_router_id, type=SAI_ROUTER_INTERFACE_TYPE_PORT, port_id=port_id)
71133

test/sai_test/sai_lag_test.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def setUp(self):
3333
T0TestBase.setUp(self)
3434

3535
def load_balance_on_src_ip(self):
36-
sai_thrift_create_router_interface(self.client, virtual_router_id=self.default_virtual_router_id, type=SAI_ROUTER_INTERFACE_TYPE_PORT, port_id=self.port_list[21])
36+
sai_thrift_create_router_interface(self.client, virtual_router_id=self.default_vrf, type=SAI_ROUTER_INTERFACE_TYPE_PORT, port_id=self.port_list[21])
3737
router_mac = '00:77:66:55:44:00'
3838
ip_src1 = '192.168.0.1'
3939
ip_src2 = '192.168.0.2'
@@ -84,7 +84,7 @@ def setUp(self):
8484
def runTest(self):
8585
try:
8686
print("Lag l3 load balancing test based on src port")
87-
sai_thrift_create_router_interface(self.client, virtual_router_id=self.default_virtual_router_id, type=SAI_ROUTER_INTERFACE_TYPE_PORT, port_id=self.port_list[21])
87+
sai_thrift_create_router_interface(self.client, virtual_router_id=self.default_vrf, type=SAI_ROUTER_INTERFACE_TYPE_PORT, port_id=self.port_list[21])
8888
eth_src = '00:22:22:22:22:22'
8989
eth_dst = '00:77:66:55:44:00'
9090
ip_src = '192.168.0.1'
@@ -131,7 +131,7 @@ def setUp(self):
131131
def runTest(self):
132132
try:
133133
print("Lag disable egress lag member test")
134-
sai_thrift_create_router_interface(self.client, virtual_router_id=self.default_virtual_router_id, type=SAI_ROUTER_INTERFACE_TYPE_PORT, port_id=self.port_list[21])
134+
sai_thrift_create_router_interface(self.client, virtual_router_id=self.default_vrf, type=SAI_ROUTER_INTERFACE_TYPE_PORT, port_id=self.port_list[21])
135135
eth_src = '00:22:22:22:22:22'
136136
eth_dst = '00:77:66:55:44:00'
137137
ip_src = '192.168.0.1'
@@ -202,7 +202,7 @@ def setUp(self):
202202

203203
def runTest(self):
204204
try:
205-
sai_thrift_create_router_interface(self.client, virtual_router_id=self.default_virtual_router_id, type=SAI_ROUTER_INTERFACE_TYPE_VLAN, vlan_id=10)
205+
sai_thrift_create_router_interface(self.client, virtual_router_id=self.default_vrf, type=SAI_ROUTER_INTERFACE_TYPE_VLAN, vlan_id=10)
206206
eth_src = '00:22:22:22:22:22'
207207
eth_dst = '00:77:66:55:44:00'
208208
ip_src = '192.168.0.1'

test/sai_test/sai_test_base.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,17 @@ class T0TestBase(ThriftInterfaceDataPlane):
180180
Set the following class attributes:
181181
self.default_vlan_id
182182
self.default_vrf
183+
self.lookback_intf
184+
self.default_ipv4_route_entry
185+
self.default_ipv6_route_entry
186+
self.local_10v6_route_entry
187+
self.local_128v6_route_entry
183188
self.default_1q_bridge
184189
self.cpu_port_hdl
185190
self.active_ports_no - number of active ports
186191
self.port_list - list of all active port objects
187192
self.portX objects for all active ports (where X is a port number)
188193
self.lagX objects for all lag
189-
self.default_virtual_router_id
190194
"""
191195

192196
def setUp(self,
@@ -196,6 +200,7 @@ def setUp(self,
196200
is_reset_default_vlan=True,
197201
is_create_vlan=True,
198202
is_create_fdb=True,
203+
is_create_route=True,
199204
is_create_lag=True,
200205
is_create_route_for_lag=True,
201206
wait_sec=5):
@@ -204,8 +209,8 @@ def setUp(self,
204209
self.switch_configer = SwitchConfiger(self)
205210
self.fdb_configer = FdbConfiger(self)
206211
self.vlan_configer = VlanConfiger(self)
207-
self.lag_configer = LagConfiger(self)
208212
self.route_configer = RouteConfiger(self)
213+
self.lag_configer = LagConfiger(self)
209214

210215
if force_config or not is_configured:
211216
t0_switch_config_helper(self)
@@ -225,6 +230,7 @@ def setUp(self,
225230
is_create_lag=is_create_lag)
226231
t0_route_config_helper(
227232
test_obj=self,
233+
is_create_route=is_create_route,
228234
is_create_route_for_lag=is_create_route_for_lag)
229235

230236
print("Waiting for switch to get ready before test, {} seconds ...".format(

0 commit comments

Comments
 (0)