Skip to content

Commit 0225f4c

Browse files
committed
Added p4orch py test.
1 parent cf025cf commit 0225f4c

File tree

6 files changed

+4015
-0
lines changed

6 files changed

+4015
-0
lines changed

tests/p4rt/acl.py

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

0 commit comments

Comments
 (0)