3
3
import time
4
4
import os
5
5
6
+
6
7
class 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
+ }
7
17
def setup_sflow (self , dvs ):
8
- self .pdb = swsscommon .DBConnector (0 , dvs .redis_sock , 0 )
9
18
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
+
11
22
fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" )])
12
- ptbl .set ("global" , fvs )
23
+ ctbl .set ("global" , fvs )
13
24
14
25
time .sleep (1 )
15
26
16
- def test_SflowDisble (self , dvs , testlog ):
27
+ def test_defaultGlobal (self , dvs , testlog ):
17
28
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" )
20
62
fvs = swsscommon .FieldValuePairs ([("admin_state" , "down" )])
21
- gtbl .set ("global" , fvs )
63
+ ctbl .set ("global" , fvs )
22
64
23
65
time .sleep (1 )
24
- fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" ),("sample_rate" ,"1000" )])
25
- ptbl .set ("Ethernet0" , fvs )
26
66
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" ])
28
69
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 )
29
88
30
89
atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_PORT" )
31
90
(status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet0" ])
32
91
33
92
assert status == True
34
93
35
94
sample_session = ""
95
+ speed = ""
36
96
for fv in fvs :
37
97
if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
38
98
sample_session = fv [1 ]
39
99
40
- assert sample_session == ""
100
+ assert sample_session == "oid:0x0 "
41
101
42
102
fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" )])
43
- gtbl .set ("global " , fvs )
103
+ ctbl .set ("all " , fvs )
44
104
45
105
time .sleep (1 )
46
106
47
- atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_PORT" )
48
107
(status , fvs ) = atbl .get (dvs .asicdb .portnamemap ["Ethernet0" ])
49
108
50
109
assert status == True
@@ -54,7 +113,45 @@ def test_SflowDisble(self, dvs, testlog):
54
113
if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
55
114
sample_session = fv [1 ]
56
115
116
+ assert sample_session != ""
57
117
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
+
58
155
assert sample_session != ""
59
156
60
157
atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_SAMPLEPACKET" )
@@ -66,14 +163,25 @@ def test_SflowDisble(self, dvs, testlog):
66
163
if fv [0 ] == "SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE" :
67
164
assert fv [1 ] == "1000"
68
165
69
- ptbl ._del ("Ethernet0" )
166
+ fvs = swsscommon .FieldValuePairs ([("admin_state" , "down" )])
167
+ ctbl .set ("all" , fvs )
70
168
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 )
77
185
78
186
time .sleep (1 )
79
187
@@ -87,7 +195,40 @@ def test_InterfaceSet(self, dvs, testlog):
87
195
if fv [0 ] == "SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE" :
88
196
sample_session = fv [1 ]
89
197
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
+
90
223
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 != ""
91
232
92
233
atbl = swsscommon .Table (self .adb , "ASIC_STATE:SAI_OBJECT_TYPE_SAMPLEPACKET" )
93
234
(status , fvs ) = atbl .get (sample_session )
@@ -96,19 +237,19 @@ def test_InterfaceSet(self, dvs, testlog):
96
237
97
238
for fv in fvs :
98
239
if fv [0 ] == "SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE" :
99
- assert fv [1 ] == "1000"
240
+ assert fv [1 ] == rate
100
241
101
- ptbl ._del ("Ethernet0 " )
242
+ ctbl ._del ("Ethernet4 " )
102
243
103
244
def test_ConfigDel (self , dvs , testlog ):
104
245
self .setup_sflow (dvs )
105
- ptbl = swsscommon .ProducerStateTable (self .pdb , "SFLOW_SESSION_TABLE" )
246
+ ctbl = swsscommon .Table (self .cdb , "SFLOW_SESSION_TABLE" )
106
247
fvs = swsscommon .FieldValuePairs ([("admin_state" , "up" ),("sample_rate" ,"1000" )])
107
- ptbl .set ("Ethernet0" , fvs )
248
+ ctbl .set ("Ethernet0" , fvs )
108
249
109
250
time .sleep (1 )
110
251
111
- ptbl ._del ("Ethernet0" )
252
+ ctbl ._del ("Ethernet0" )
112
253
113
254
time .sleep (1 )
114
255
@@ -127,4 +268,36 @@ def test_ConfigDel(self, dvs, testlog):
127
268
speed = fv [1 ]
128
269
129
270
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