Skip to content

Commit 7734b19

Browse files
committed
Initial p4orch pytest code.
Change-Id: I5ca7bea8996d27dbc8f618b9eb921ccade1774de
1 parent d352d5a commit 7734b19

File tree

6 files changed

+4007
-0
lines changed

6 files changed

+4007
-0
lines changed

tests/p4rt/acl.py

+206
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
# Lint as: python3
2+
from swsscommon import swsscommon
3+
4+
import util
5+
6+
INGRESS_STAGE = "SAI_ACL_STAGE_INGRESS"
7+
EGRESS_STAGE = "SAI_ACL_STAGE_EGRESS"
8+
PRE_INGRESS_STAGE = "SAI_ACL_STAGE_PRE_INGRESS"
9+
10+
class P4RtAclTableDefinitionWrapper(util.DBInterface):
11+
"""Interface to interact with APP DB and ASIC DB tables for P4RT ACL table definition object."""
12+
13+
# table name in ASIC_DB and SAI constants
14+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_ACL_TABLE"
15+
SAI_ATTR_MATCH_ETHER_TYPE = "SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE"
16+
SAI_ATTR_MATCH_IP_TYPE = "SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE"
17+
SAI_ATTR_MATCH_DST_MAC = "SAI_ACL_TABLE_ATTR_FIELD_DST_MAC"
18+
SAI_ATTR_MATCH_SRC_IPV6_WORD3 = "SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3"
19+
SAI_ATTR_MATCH_SRC_IPV6_WORD2 = "SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2"
20+
SAI_ATTR_MATCH_UDF_GROUP_MIN = "SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN"
21+
SAI_ATTR_MATCH_UDF_GROUP_1 = "SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_1"
22+
SAI_ATTR_ACTION_TYPE_LIST = "SAI_ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST"
23+
SAI_ACL_TABLE_ATTR_ACL_STAGE = "SAI_ACL_TABLE_ATTR_ACL_STAGE"
24+
SAI_ACL_TABLE_ATTR_SIZE = "SAI_ACL_TABLE_ATTR_SIZE"
25+
26+
# table name in APP_DB and attribute fields
27+
APP_DB_TBL_NAME = swsscommon.APP_P4RT_TABLE_NAME
28+
TBL_NAME = swsscommon.APP_P4RT_ACL_TABLE_DEFINITION_NAME
29+
STAGE_FIELD = "stage"
30+
PRIORITY_FIELD = "priority"
31+
SIZE_FIELD = "size"
32+
MATCH_FIELD_ETHER_TYPE = "match/ether_type"
33+
MATCH_FIELD_ETHER_DST = "match/ether_dst"
34+
MATCH_FIELD_IS_IP = "match/is_ip"
35+
MATCH_FIELD_IS_IPV4 = "match/is_ipv4"
36+
MATCH_FIELD_IS_IPV6 = "match/is_ipv6"
37+
MATCH_FIELD_IS_ARP = "match/is_arp"
38+
MATCH_FIELD_SRC_IPV6_64BIT = "match/src_ipv6_64bit"
39+
MATCH_FIELD_ARP_TPA = "match/arp_tpa"
40+
ACTION_COPY_AND_SET_TC = "action/copy_and_set_tc"
41+
ACTION_PUNT_AND_SET_TC = "action/punt_and_set_tc"
42+
ACTION_SET_QOS_QUEUE = "action/qos_queue"
43+
METER_UNIT = "meter/unit"
44+
COUNTER_UNIT = "counter/unit"
45+
46+
47+
class P4RtAclRuleWrapper(util.DBInterface):
48+
"""Interface to interact with APP DB and ASIC DB tables for P4RT ACL entry object."""
49+
50+
# table name in ASIC_DB and SAI constants
51+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_ACL_ENTRY"
52+
SAI_ATTR_TABLE_ID = "SAI_ACL_ENTRY_ATTR_TABLE_ID"
53+
SAI_ATTR_PRIORITY = "SAI_ACL_ENTRY_ATTR_PRIORITY"
54+
SAI_ATTR_ADMIN_STATE = "SAI_ACL_ENTRY_ATTR_ADMIN_STATE"
55+
SAI_ATTR_SET_POLICER = "SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER"
56+
SAI_ATTR_COUNTER = "SAI_ACL_ENTRY_ATTR_ACTION_COUNTER"
57+
SAI_ATTR_MATCH_ETHER_TYPE = "SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE"
58+
SAI_ATTR_MATCH_IP_TYPE = "SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE"
59+
SAI_ATTR_MATCH_DST_MAC = "SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC"
60+
SAI_ATTR_MATCH_SRC_IPV6_WORD3 = "SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3"
61+
SAI_ATTR_MATCH_SRC_IPV6_WORD2 = "SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2"
62+
SAI_ATTR_MATCH_UDF_GROUP_MIN = "SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN"
63+
SAI_ATTR_MATCH_UDF_GROUP_1 = "SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_1"
64+
SAI_ATTR_ACTION_PACKET_ACTION = "SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION"
65+
SAI_ATTR_ACTION_SET_TC = "SAI_ACL_ENTRY_ATTR_ACTION_SET_TC"
66+
SAI_ATTR_ACTION_SET_USER_TRAP_ID = "SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID"
67+
68+
# table name in APP_DB and attribute fields
69+
APP_DB_TBL_NAME = swsscommon.APP_P4RT_TABLE_NAME
70+
ACTION = "action"
71+
METER_CIR = "meter/cir"
72+
METER_CBURST = "meter/cburst"
73+
METER_PIR = "meter/pir"
74+
METER_PBURST = "meter/pburst"
75+
76+
77+
class P4RtAclCounterWrapper(util.DBInterface):
78+
"""Interface to interact with APP DB and ASIC DB tables for P4RT ACL counter object."""
79+
80+
# table name in ASIC_DB and SAI constants
81+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_ACL_COUNTER"
82+
SAI_ATTR_TABLE_ID = "SAI_ACL_COUNTER_ATTR_TABLE_ID"
83+
SAI_ATTR_ENABLE_BYTE_COUNT = "SAI_ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT"
84+
SAI_ATTR_ENABLE_PACKET_COUNT = "SAI_ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT"
85+
86+
87+
class P4RtAclMeterWrapper(util.DBInterface):
88+
"""Interface in ASIC DB tables for P4RT ACL policer object."""
89+
90+
# table name in ASIC_DB and SAI constants
91+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_POLICER"
92+
SAI_ATTR_METER_TYPE = "SAI_POLICER_ATTR_METER_TYPE"
93+
SAI_ATTR_METER_MODE = "SAI_POLICER_ATTR_MODE"
94+
SAI_ATTR_METER_CBS = "SAI_POLICER_ATTR_CBS"
95+
SAI_ATTR_METER_CIR = "SAI_POLICER_ATTR_CIR"
96+
SAI_ATTR_METER_PBS = "SAI_POLICER_ATTR_PBS"
97+
SAI_ATTR_METER_PIR = "SAI_POLICER_ATTR_PIR"
98+
SAI_ATTR_GREEN_PACKET_ACTION = "SAI_POLICER_ATTR_GREEN_PACKET_ACTION"
99+
SAI_ATTR_RED_PACKET_ACTION = "SAI_POLICER_ATTR_RED_PACKET_ACTION"
100+
SAI_ATTR_YELLOW_PACKET_ACTION = "SAI_POLICER_ATTR_YELLOW_PACKET_ACTION"
101+
102+
103+
class P4RtAclGroupWrapper(util.DBInterface):
104+
"""Interface in ASIC DB tables for P4RT ACL group object."""
105+
106+
# table name in ASIC_DB and SAI constants
107+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_ACL_TABLE_GROUP"
108+
SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE = "SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE"
109+
SAI_ACL_TABLE_GROUP_ATTR_TYPE = "SAI_ACL_TABLE_GROUP_ATTR_TYPE"
110+
SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST = "SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST"
111+
112+
def get_group_oids_by_stage(self, stage):
113+
tbl = swsscommon.Table(self.asic_db, self.ASIC_DB_TBL_NAME)
114+
keys = tbl.getKeys()
115+
group_oids = []
116+
for key in keys:
117+
(status, fvs) = tbl.get(key)
118+
assert status == True
119+
for name, val in fvs:
120+
if name == self.SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE and val == stage:
121+
group_oids.append(key)
122+
break
123+
return group_oids
124+
125+
126+
class P4RtAclGroupMemberWrapper(util.DBInterface):
127+
"""Interface in ASIC DB tables for P4RT ACL group member object."""
128+
129+
# table name in ASIC_DB and SAI constants
130+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER"
131+
SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID = "SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID"
132+
SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID = "SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID"
133+
SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY = "SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY"
134+
135+
136+
class P4RtUserDefinedTrapWrapper(util.DBInterface):
137+
"""Interface in ASIC DB tables for SAI user defined trap object."""
138+
139+
# table name in ASIC_DB and SAI constants
140+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP"
141+
SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP = "SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP"
142+
SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE = "SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE"
143+
144+
145+
class P4RtTrapGroupWrapper(util.DBInterface):
146+
"""Interface in APPL and ASIC DB tables for SAI trap group object."""
147+
148+
# table name in APPL_DB and attribute fields
149+
APP_DB_TBL_NAME = "COPP_TABLE"
150+
TBL_NAME_PREFIX = "trap.group.cpu.queue."
151+
QUEUE = "queue"
152+
HOSTIF_NAME = "genetlink_name"
153+
HOSTIF_GENETLINK_MCGRP_NAME = "genetlink_mcgrp_name"
154+
155+
# table name in ASIC_DB and SAI constants
156+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_HOSTIF_TRAP_GROUP"
157+
SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE = "SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE"
158+
159+
160+
class P4RtHostifWrapper(util.DBInterface):
161+
"""Interface in ASIC DB tables for SAI hostif object."""
162+
163+
# table name in ASIC_DB and SAI constants
164+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_HOSTIF"
165+
SAI_HOSTIF_ATTR_TYPE = "SAI_HOSTIF_ATTR_TYPE"
166+
SAI_HOSTIF_ATTR_NAME = "SAI_HOSTIF_ATTR_NAME"
167+
SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME = "SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME"
168+
169+
170+
class P4RtHostifTableEntryWrapper(util.DBInterface):
171+
"""Interface in ASIC DB tables for SAI hostif table entry object."""
172+
173+
# table name in ASIC_DB and SAI constants
174+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_HOSTIF_TABLE_ENTRY"
175+
SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE = "SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE"
176+
SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID = "SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID"
177+
SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE = "SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE"
178+
SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF = "SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF"
179+
180+
class P4RtUdfGroupWrapper(util.DBInterface):
181+
"""Interface in ASIC DB tables for SAI UDF Group object."""
182+
183+
# table name in ASIC_DB and SAI constants
184+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_UDF_GROUP"
185+
SAI_UDF_GROUP_ATTR_TYPE = "SAI_UDF_GROUP_ATTR_TYPE"
186+
SAI_UDF_GROUP_ATTR_LENGTH = "SAI_UDF_GROUP_ATTR_LENGTH"
187+
188+
SAI_UDF_GROUP_TYPE_GENERIC = "SAI_UDF_GROUP_TYPE_GENERIC"
189+
190+
191+
class P4RtUdfMatchWrapper(util.DBInterface):
192+
"""Interface in ASIC DB tables for SAI UDF Match object."""
193+
194+
# table name in ASIC_DB and SAI constants
195+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_UDF_MATCH"
196+
197+
198+
class P4RtUdfWrapper(util.DBInterface):
199+
"""Interface in ASIC DB tables for SAI UDF object."""
200+
201+
# table name in ASIC_DB and SAI constants
202+
ASIC_DB_TBL_NAME = "ASIC_STATE:SAI_OBJECT_TYPE_UDF"
203+
SAI_UDF_ATTR_MATCH_ID = "SAI_UDF_ATTR_MATCH_ID"
204+
SAI_UDF_ATTR_GROUP_ID = "SAI_UDF_ATTR_GROUP_ID"
205+
SAI_UDF_ATTR_BASE = "SAI_UDF_ATTR_BASE"
206+
SAI_UDF_ATTR_OFFSET = "SAI_UDF_ATTR_OFFSET"

0 commit comments

Comments
 (0)