33import time
44import os
55
6+
67class TestSflow (object ):
8+ speed_rate_table = {
9+ "400000" :"40000" ,
10+ "100000" :"10000" ,
11+ "50000" :"5000" ,
12+ "40000" :"4000" ,
13+ "25000" :"2500" ,
14+ "10000" :"1000" ,
15+ "1000" :"100"
16+ }
717 def setup_sflow (self , dvs ):
8- self .pdb = swsscommon .DBConnector (0 , dvs .redis_sock , 0 )
918 self .adb = swsscommon .DBConnector (1 , dvs .redis_sock , 0 )
10- ptbl = swsscommon .ProducerStateTable (self .pdb , "SFLOW_TABLE" )
19+ self .cdb = swsscommon .DBConnector (4 , dvs .redis_sock , 0 )
20+ ctbl = swsscommon .Table (self .cdb , "SFLOW" )
21+
1122 fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" )])
12- ptbl .set ("global" , fvs )
23+ ctbl .set ("global" , fvs )
1324
1425 time .sleep (1 )
1526
16- def test_SflowDisble (self , dvs , testlog ):
27+ def test_defaultGlobal (self , dvs , testlog ):
1728 self .setup_sflow (dvs )
18- ptbl = swsscommon .ProducerStateTable (self .pdb , "SFLOW_SESSION_TABLE" )
19- gtbl = swsscommon .ProducerStateTable (self .pdb , "SFLOW_TABLE" )
29+ atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_PORT" )
30+ (status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet0" ])
31+
32+ assert status == True
33+
34+ sample_session = ""
35+ speed = ""
36+ for fv in fvs :
37+ if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
38+ sample_session = fv [1 ]
39+ elif fv [0 ] == "SAI_PORT_ATTR_SPEED" :
40+ speed = fv [1 ]
41+
42+ assert sample_session != ""
43+ assert speed != ""
44+
45+ rate = ""
46+
47+ if speed in self .speed_rate_table :
48+ rate = self .speed_rate_table [speed ]
49+
50+ assert rate != ""
51+
52+ atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_SAMPLEPACKET" )
53+ (status , fvs ) = atbl .get (sample_session )
54+
55+ assert status == True
56+
57+ for fv in fvs :
58+ if fv [0 ] == "SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE" :
59+ assert fv [1 ] == rate
60+
61+ ctbl = swsscommon .Table (self .cdb , "SFLOW" )
2062 fvs = swsscommon .FieldValuePairs ([("admin_state" , "down" )])
21- gtbl .set ("global" , fvs )
63+ ctbl .set ("global" , fvs )
2264
2365 time .sleep (1 )
24- fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" ),("sample_rate" ,"1000" )])
25- ptbl .set ("Ethernet0" , fvs )
2666
27- time .sleep (1 )
67+ atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_PORT" )
68+ (status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet0" ])
2869
70+ assert status == True
71+
72+ sample_session = ""
73+ speed = ""
74+ for fv in fvs :
75+ if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
76+ sample_session = fv [1 ]
77+
78+ assert sample_session == "oid:0x0"
79+
80+ def test_globalAll (self , dvs , testlog ):
81+ self .setup_sflow (dvs )
82+
83+ ctbl = swsscommon .Table (self .cdb , "SFLOW_SESSION" )
84+ fvs = swsscommon .FieldValuePairs ([("admin_state" , "down" )])
85+ ctbl .set ("all" , fvs )
86+
87+ time .sleep (1 )
2988
3089 atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_PORT" )
3190 (status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet0" ])
3291
3392 assert status == True
3493
3594 sample_session = ""
95+ speed = ""
3696 for fv in fvs :
3797 if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
3898 sample_session = fv [1 ]
3999
40- assert sample_session == ""
100+ assert sample_session == "oid:0x0 "
41101
42102 fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" )])
43- gtbl .set ("global " , fvs )
103+ ctbl .set ("all " , fvs )
44104
45105 time .sleep (1 )
46106
47- atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_PORT" )
48107 (status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet0" ])
49108
50109 assert status == True
@@ -54,7 +113,45 @@ def test_SflowDisble(self, dvs, testlog):
54113 if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
55114 sample_session = fv [1 ]
56115
116+ assert sample_session != ""
57117 assert sample_session != "oid:0x0"
118+
119+ ctbl ._del ("all" )
120+
121+ time .sleep (1 )
122+
123+ (status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet0" ])
124+
125+ assert status == True
126+
127+ sample_session = ""
128+ for fv in fvs :
129+ if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
130+ sample_session = fv [1 ]
131+
132+ assert sample_session != ""
133+ assert sample_session != "oid:0x0"
134+
135+
136+ def test_InterfaceSet (self , dvs , testlog ):
137+ self .setup_sflow (dvs )
138+ ctbl = swsscommon .Table (self .cdb , "SFLOW_SESSION" )
139+ gtbl = swsscommon .Table (self .cdb , "SFLOW" )
140+ fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" ),("sample_rate" ,"1000" )])
141+ ctbl .set ("Ethernet0" , fvs )
142+
143+ time .sleep (1 )
144+
145+ atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_PORT" )
146+ (status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet0" ])
147+
148+ assert status == True
149+
150+ sample_session = ""
151+ for fv in fvs :
152+ if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
153+ sample_session = fv [1 ]
154+
58155 assert sample_session != ""
59156
60157 atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_SAMPLEPACKET" )
@@ -66,14 +163,25 @@ def test_SflowDisble(self, dvs, testlog):
66163 if fv [0 ] == "SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE" :
67164 assert fv [1 ] == "1000"
68165
69- ptbl ._del ("Ethernet0" )
166+ fvs = swsscommon .FieldValuePairs ([("admin_state" , "down" )])
167+ ctbl .set ("all" , fvs )
70168
71- def test_InterfaceSet (self , dvs , testlog ):
72- self .setup_sflow (dvs )
73- ptbl = swsscommon .ProducerStateTable (self .pdb , "SFLOW_SESSION_TABLE" )
74- gtbl = swsscommon .ProducerStateTable (self .pdb , "SFLOW_TABLE" )
75- fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" ),("sample_rate" ,"1000" )])
76- ptbl .set ("Ethernet0" , fvs )
169+ time .sleep (1 )
170+
171+ atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_PORT" )
172+ (status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet0" ])
173+
174+ assert status == True
175+
176+ sample_session = ""
177+ for fv in fvs :
178+ if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
179+ sample_session = fv [1 ]
180+ assert sample_session != ""
181+ assert sample_session != "oid:0x0"
182+
183+ fvs = swsscommon .FieldValuePairs ([("admin_state" , "down" )])
184+ gtbl .set ("global" , fvs )
77185
78186 time .sleep (1 )
79187
@@ -87,7 +195,40 @@ def test_InterfaceSet(self, dvs, testlog):
87195 if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
88196 sample_session = fv [1 ]
89197
198+ assert sample_session == "oid:0x0"
199+ ctbl ._del ("all" )
200+ ctbl ._del ("Ethernet0" )
201+
202+ def test_defaultRate (self , dvs , testlog ):
203+ self .setup_sflow (dvs )
204+ ctbl = swsscommon .Table (self .cdb , "SFLOW_SESSION" )
205+ fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" )])
206+ ctbl .set ("Ethernet4" , fvs )
207+
208+ time .sleep (1 )
209+
210+ atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_PORT" )
211+ (status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet4" ])
212+
213+ assert status == True
214+
215+ sample_session = ""
216+ speed = ""
217+ for fv in fvs :
218+ if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
219+ sample_session = fv [1 ]
220+ elif fv [0 ] == "SAI_PORT_ATTR_SPEED" :
221+ speed = fv [1 ]
222+
90223 assert sample_session != ""
224+ assert speed != ""
225+
226+ rate = ""
227+
228+ if speed in self .speed_rate_table :
229+ rate = self .speed_rate_table [speed ]
230+
231+ assert rate != ""
91232
92233 atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_SAMPLEPACKET" )
93234 (status , fvs ) = atbl .get (sample_session )
@@ -96,19 +237,19 @@ def test_InterfaceSet(self, dvs, testlog):
96237
97238 for fv in fvs :
98239 if fv [0 ] == "SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE" :
99- assert fv [1 ] == "1000"
240+ assert fv [1 ] == rate
100241
101- ptbl ._del ("Ethernet0 " )
242+ ctbl ._del ("Ethernet4 " )
102243
103244 def test_ConfigDel (self , dvs , testlog ):
104245 self .setup_sflow (dvs )
105- ptbl = swsscommon .ProducerStateTable (self .pdb , "SFLOW_SESSION_TABLE" )
246+ ctbl = swsscommon .Table (self .cdb , "SFLOW_SESSION_TABLE" )
106247 fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" ),("sample_rate" ,"1000" )])
107- ptbl .set ("Ethernet0" , fvs )
248+ ctbl .set ("Ethernet0" , fvs )
108249
109250 time .sleep (1 )
110251
111- ptbl ._del ("Ethernet0" )
252+ ctbl ._del ("Ethernet0" )
112253
113254 time .sleep (1 )
114255
@@ -127,4 +268,36 @@ def test_ConfigDel(self, dvs, testlog):
127268 speed = fv [1 ]
128269
129270 assert speed != ""
130- assert sample_session == "oid:0x0"
271+ assert sample_session != ""
272+ assert sample_session != "oid:0x0"
273+
274+ rate = ""
275+
276+ if speed in self .speed_rate_table :
277+ rate = self .speed_rate_table [speed ]
278+
279+ assert rate != ""
280+
281+ atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_SAMPLEPACKET" )
282+ (status , fvs ) = atbl .get (sample_session )
283+
284+ assert status == True
285+
286+ rf = False
287+ for fv in fvs :
288+ if fv [0 ] == "SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE" :
289+ assert fv [1 ] == rate
290+ rf = True
291+
292+ assert rf == True
293+
294+ def test_Teardown (self , dvs , testlog ):
295+ self .setup_sflow (dvs )
296+ ctbl = swsscommon .Table (self .cdb , "SFLOW" )
297+ ctbl ._del ("global" )
298+
299+ time .sleep (1 )
300+
301+
302+ atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_SAMPLEPACKET" )
303+ assert len (atbl .getKeys ()) == 0
0 commit comments