Skip to content

Commit e9fee86

Browse files
authored
Support LOSSLESS_TRAFFIC_PATTERN and DEFAULT_LOSSLESS_BUFFER_PARAMETER (sonic-net#11058)
#### Why I did it Support the following tables which were introduced during dynamic buffer calculation - LOSSLESS_TRAFFIC_PATTERN - DEFAULT_LOSSLESS_BUFFER_PARAMETER #### How I did it - LOSSLESS_TRAFFIC_PATTERN |name|type|range|mandatory|description| |---|---|---|---|---| |mtu|uint16|64~10240|true|The maximum packet size of a lossless packet| |small_packet_percentage|uint8|0~100|true|The percentage of small packet| - DEFAULT_LOSSLESS_BUFFER_PARAMETER |name|type|range|mandatory|description| |---|---|---|---|---| |default_dynamic_th|int8|-8~7|true|The default dynamic_th for all buffer profiles that are dynamically generated for lossless PG| |over_subscribe_ratio|uint16|-|false|The oversubscribe ratio for shared headroom pool.| |||||Semantically, the upper bound is the number of physical ports but it can not be represented in the yang module. So we keep the upper bound open. As the type is (signed) integer whose lower bound is 0 by nature, we do not need to specify the range.| #### How to verify it Run unit test
1 parent 9814547 commit e9fee86

8 files changed

+436
-0
lines changed

src/sonic-yang-models/setup.py

+2
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ def run(self):
9898
'./yang-models/sonic-cable-length.yang',
9999
'./yang-models/sonic-copp.yang',
100100
'./yang-models/sonic-crm.yang',
101+
'./yang-models/sonic-default-lossless-buffer-parameter.yang',
101102
'./yang-models/sonic-device_metadata.yang',
102103
'./yang-models/sonic-device_neighbor.yang',
103104
'./yang-models/sonic-dhcpv6-relay.yang',
@@ -107,6 +108,7 @@ def run(self):
107108
'./yang-models/sonic-interface.yang',
108109
'./yang-models/sonic-kdump.yang',
109110
'./yang-models/sonic-loopback-interface.yang',
111+
'./yang-models/sonic-lossless-traffic-pattern.yang',
110112
'./yang-models/sonic-mgmt_interface.yang',
111113
'./yang-models/sonic-mgmt_port.yang',
112114
'./yang-models/sonic-mgmt_vrf.yang',

src/sonic-yang-models/tests/files/sample_config_db.json

+14
Original file line numberDiff line numberDiff line change
@@ -1878,6 +1878,20 @@
18781878
"LAG"
18791879
]
18801880
}
1881+
},
1882+
1883+
"LOSSLESS_TRAFFIC_PATTERN": {
1884+
"AZURE": {
1885+
"mtu": "1024",
1886+
"small_packet_percentage": "100"
1887+
}
1888+
},
1889+
1890+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER": {
1891+
"AZURE": {
1892+
"default_dynamic_th": "0",
1893+
"over_subscribe_ratio": "0"
1894+
}
18811895
}
18821896
},
18831897
"SAMPLE_CONFIG_DB_UNKNOWN": {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_TEST": {
3+
"desc": "Configure DEFAULT_LOSSLESS_BUFFER_PARAMETER table."
4+
},
5+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_INVALID_NAME_TEST": {
6+
"desc": "Configure DEFAULT_LOSSLESS_BUFFER_PARAMETER table with invalid character.",
7+
"eStr": "Invalid default lossless buffer parameter list name."
8+
},
9+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_TOO_LONG_NAME_TEST": {
10+
"desc": "Configure DEFAULT_LOSSLESS_BUFFER_PARAMETER table with too long name.",
11+
"eStr": "Invalid length for the default lossless buffer parameter list name."
12+
},
13+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_TOO_SMALL_DYNAMIC_TH_TEST": {
14+
"desc": "Configure DEFAULT_LOSSLESS_BUFFER_PARAMETER table with a dynamic_th exceeding the lowerbound.",
15+
"eStr": "Invalid default dynamic_th which should be a number in the range [-8, 7]."
16+
},
17+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_TOO_LARGE_DYNAMIC_TH_TEST": {
18+
"desc": "Configure DEFAULT_LOSSLESS_BUFFER_PARAMETER table with a dynamic_th exceeding the upperbound.",
19+
"eStr": "Invalid default dynamic_th which should be a number in the range [-8, 7]."
20+
},
21+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_INVALID_FORMAT_DYNAMIC_TH_TEST": {
22+
"desc": "Configure DEFAULT_LOSSLESS_BUFFER_PARAMETER table with an invalid dynamic_th",
23+
"eStr": "Invalid"
24+
},
25+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LACK_DYNAMIC_TH_TEST": {
26+
"desc": "Configure DEFAULT_LOSSLESS_BUFFER_PARAMETER table without dynamic_th",
27+
"eStrKey" : "Mandatory"
28+
},
29+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_INVALID_FORMAT_OVER_SUBSCRIBE_RATIO_TEST": {
30+
"desc": "Configure DEFAULT_LOSSLESS_BUFFER_PARAMETER table with an invalid over subscribe ratio.",
31+
"eStr": "Invalid"
32+
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"LOSSLESS_TRAFFIC_PATTERN_TEST": {
3+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table."
4+
},
5+
"LOSSLESS_TRAFFIC_PATTERN_INVALID_NAME_TEST": {
6+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table with invalid character.",
7+
"eStr": "Invalid lossless traffic pattern list name."
8+
},
9+
"LOSSLESS_TRAFFIC_PATTERN_TOO_LONG_NAME_TEST": {
10+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table with too long name.",
11+
"eStr": "Invalid length for the lossless traffic pattern list name."
12+
},
13+
"LOSSLESS_TRAFFIC_PATTERN_TOO_SMALL_MTU_TEST": {
14+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table with an MTU exceeding the lowerbound.",
15+
"eStr": "Invaild MTU which should be in [1, 9216]."
16+
},
17+
"LOSSLESS_TRAFFIC_PATTERN_TOO_LARGE_MTU_TEST": {
18+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table with an MTU exceeding the upperbound.",
19+
"eStr": "Invaild MTU which should be in [1, 9216]."
20+
},
21+
"LOSSLESS_TRAFFIC_PATTERN_INVALID_FORMAT_MTU_TEST": {
22+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table with an invalid MTU",
23+
"eStr": "Invalid"
24+
},
25+
"LOSSLESS_TRAFFIC_PATTERN_LACK_MTU_TEST": {
26+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table without MTU",
27+
"eStrKey": "Mandatory"
28+
},
29+
"LOSSLESS_TRAFFIC_PATTERN_TOO_LARGE_SMALL_PACKET_PERCENTAGE_TEST": {
30+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table with a small packet percentage exceeding the upperbound.",
31+
"eStr": "Invalid small packets percentage which should be in [0, 100]."
32+
},
33+
"LOSSLESS_TRAFFIC_PATTERN_INVALID_FORMAT_SMALL_PACKET_PERCENTAGE_TEST": {
34+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table with an invalid small packet percentage",
35+
"eStr": "Invalid"
36+
},
37+
"LOSSLESS_TRAFFIC_PATTERN_LACK_SMALL_PACKET_PERCENTAGE_TEST": {
38+
"desc": "Configure LOSSLESS_TRAFFIC_PATTERN table without small packet percentage",
39+
"eStrKey": "Mandatory"
40+
}
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
{
2+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_TEST": {
3+
"sonic-default-lossless-buffer-parameter:sonic-default-lossless-buffer-parameter": {
4+
"sonic-default-lossless-buffer-parameter:DEFAULT_LOSSLESS_BUFFER_PARAMETER": {
5+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LIST": [
6+
{
7+
"name": "AZURE",
8+
"default_dynamic_th": "0",
9+
"over_subscribe_ratio": "0"
10+
}
11+
]
12+
}
13+
}
14+
},
15+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_INVALID_NAME_TEST": {
16+
"sonic-default-lossless-buffer-parameter:sonic-default-lossless-buffer-parameter": {
17+
"sonic-default-lossless-buffer-parameter:DEFAULT_LOSSLESS_BUFFER_PARAMETER": {
18+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LIST": [
19+
{
20+
"name": "Invalid$",
21+
"default_dynamic_th": "0",
22+
"over_subscribe_ratio": "0"
23+
}
24+
]
25+
}
26+
}
27+
},
28+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_TOO_LONG_NAME_TEST": {
29+
"sonic-default-lossless-buffer-parameter:sonic-default-lossless-buffer-parameter": {
30+
"sonic-default-lossless-buffer-parameter:DEFAULT_LOSSLESS_BUFFER_PARAMETER": {
31+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LIST": [
32+
{
33+
"name": "Long_name_which_exceeds_the_limit",
34+
"default_dynamic_th": "0",
35+
"over_subscribe_ratio": "0"
36+
}
37+
]
38+
}
39+
}
40+
},
41+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_TOO_SMALL_DYNAMIC_TH_TEST": {
42+
"sonic-default-lossless-buffer-parameter:sonic-default-lossless-buffer-parameter": {
43+
"sonic-default-lossless-buffer-parameter:DEFAULT_LOSSLESS_BUFFER_PARAMETER": {
44+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LIST": [
45+
{
46+
"name": "AZURE",
47+
"default_dynamic_th": "-9",
48+
"over_subscribe_ratio": "0"
49+
}
50+
]
51+
}
52+
}
53+
},
54+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_TOO_LARGE_DYNAMIC_TH_TEST": {
55+
"sonic-default-lossless-buffer-parameter:sonic-default-lossless-buffer-parameter": {
56+
"sonic-default-lossless-buffer-parameter:DEFAULT_LOSSLESS_BUFFER_PARAMETER": {
57+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LIST": [
58+
{
59+
"name": "AZURE",
60+
"default_dynamic_th": "8",
61+
"over_subscribe_ratio": "0"
62+
}
63+
]
64+
}
65+
}
66+
},
67+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_INVALID_FORMAT_DYNAMIC_TH_TEST": {
68+
"sonic-default-lossless-buffer-parameter:sonic-default-lossless-buffer-parameter": {
69+
"sonic-default-lossless-buffer-parameter:DEFAULT_LOSSLESS_BUFFER_PARAMETER": {
70+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LIST": [
71+
{
72+
"name": "AZURE",
73+
"default_dynamic_th": "NaN",
74+
"over_subscribe_ratio": "0"
75+
}
76+
]
77+
}
78+
}
79+
},
80+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LACK_DYNAMIC_TH_TEST": {
81+
"sonic-default-lossless-buffer-parameter:sonic-default-lossless-buffer-parameter": {
82+
"sonic-default-lossless-buffer-parameter:DEFAULT_LOSSLESS_BUFFER_PARAMETER": {
83+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LIST": [
84+
{
85+
"name": "AZURE",
86+
"over_subscribe_ratio": "0"
87+
}
88+
]
89+
}
90+
}
91+
},
92+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_INVALID_FORMAT_OVER_SUBSCRIBE_RATIO_TEST": {
93+
"sonic-default-lossless-buffer-parameter:sonic-default-lossless-buffer-parameter": {
94+
"sonic-default-lossless-buffer-parameter:DEFAULT_LOSSLESS_BUFFER_PARAMETER": {
95+
"DEFAULT_LOSSLESS_BUFFER_PARAMETER_LIST": [
96+
{
97+
"name": "AZURE",
98+
"default_dynamic_th": "0",
99+
"over_subscribe_ratio": "NaN"
100+
}
101+
]
102+
}
103+
}
104+
}
105+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
{
2+
"LOSSLESS_TRAFFIC_PATTERN_TEST": {
3+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
4+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
5+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
6+
{
7+
"name": "AZURE",
8+
"mtu": "1024",
9+
"small_packet_percentage": "100"
10+
}
11+
]
12+
}
13+
}
14+
},
15+
"LOSSLESS_TRAFFIC_PATTERN_INVALID_NAME_TEST": {
16+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
17+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
18+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
19+
{
20+
"name": "Invalid$",
21+
"mtu": "1024",
22+
"small_packet_percentage": "100"
23+
}
24+
]
25+
}
26+
}
27+
},
28+
"LOSSLESS_TRAFFIC_PATTERN_TOO_LONG_NAME_TEST": {
29+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
30+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
31+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
32+
{
33+
"name": "Long_name_which_exceeds_the_limit",
34+
"mtu": "1024",
35+
"small_packet_percentage": "100"
36+
}
37+
]
38+
}
39+
}
40+
},
41+
"LOSSLESS_TRAFFIC_PATTERN_TOO_SMALL_MTU_TEST": {
42+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
43+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
44+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
45+
{
46+
"name": "AZURE",
47+
"mtu": "0",
48+
"small_packet_percentage": "100"
49+
}
50+
]
51+
}
52+
}
53+
},
54+
"LOSSLESS_TRAFFIC_PATTERN_TOO_LARGE_MTU_TEST": {
55+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
56+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
57+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
58+
{
59+
"name": "AZURE",
60+
"mtu": "9217",
61+
"small_packet_percentage": "100"
62+
}
63+
]
64+
}
65+
}
66+
},
67+
"LOSSLESS_TRAFFIC_PATTERN_INVALID_FORMAT_MTU_TEST": {
68+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
69+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
70+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
71+
{
72+
"name": "AZURE",
73+
"mtu": "NaN",
74+
"small_packet_percentage": "100"
75+
}
76+
]
77+
}
78+
}
79+
},
80+
"LOSSLESS_TRAFFIC_PATTERN_LACK_MTU_TEST": {
81+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
82+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
83+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
84+
{
85+
"name": "AZURE",
86+
"small_packet_percentage": "100"
87+
}
88+
]
89+
}
90+
}
91+
},
92+
"LOSSLESS_TRAFFIC_PATTERN_TOO_LARGE_SMALL_PACKET_PERCENTAGE_TEST": {
93+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
94+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
95+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
96+
{
97+
"name": "AZURE",
98+
"mtu": "1024",
99+
"small_packet_percentage": "101"
100+
}
101+
]
102+
}
103+
}
104+
},
105+
"LOSSLESS_TRAFFIC_PATTERN_INVALID_FORMAT_SMALL_PACKET_PERCENTAGE_TEST": {
106+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
107+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
108+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
109+
{
110+
"name": "AZURE",
111+
"mtu": "1024",
112+
"small_packet_percentage": "NaN"
113+
}
114+
]
115+
}
116+
}
117+
},
118+
"LOSSLESS_TRAFFIC_PATTERN_LACK_SMALL_PACKET_PERCENTAGE_TEST": {
119+
"sonic-lossless-traffic-pattern:sonic-lossless-traffic-pattern": {
120+
"sonic-lossless-traffic-pattern:LOSSLESS_TRAFFIC_PATTERN": {
121+
"LOSSLESS_TRAFFIC_PATTERN_LIST": [
122+
{
123+
"name": "AZURE",
124+
"mtu": "1024"
125+
}
126+
]
127+
}
128+
}
129+
}
130+
}

0 commit comments

Comments
 (0)