aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/testing/selftests/net/forwarding/devlink_lib.sh163
1 files changed, 163 insertions, 0 deletions
diff --git a/tools/testing/selftests/net/forwarding/devlink_lib.sh b/tools/testing/selftests/net/forwarding/devlink_lib.sh
index 2b9296f6aa07..13d03a6d85ba 100644
--- a/tools/testing/selftests/net/forwarding/devlink_lib.sh
+++ b/tools/testing/selftests/net/forwarding/devlink_lib.sh
@@ -29,6 +29,12 @@ if [ $? -ne 0 ]; then
29 exit 1 29 exit 1
30fi 30fi
31 31
32devlink help 2>&1 | grep trap &> /dev/null
33if [ $? -ne 0 ]; then
34 echo "SKIP: iproute2 too old, missing devlink trap support"
35 exit 1
36fi
37
32############################################################################## 38##############################################################################
33# Devlink helpers 39# Devlink helpers
34 40
@@ -192,3 +198,160 @@ devlink_tc_bind_pool_th_restore()
192 devlink sb tc bind set $port tc $tc type $dir \ 198 devlink sb tc bind set $port tc $tc type $dir \
193 pool ${orig[0]} th ${orig[1]} 199 pool ${orig[0]} th ${orig[1]}
194} 200}
201
202devlink_traps_num_get()
203{
204 devlink -j trap | jq '.[]["'$DEVLINK_DEV'"] | length'
205}
206
207devlink_traps_get()
208{
209 devlink -j trap | jq -r '.[]["'$DEVLINK_DEV'"][].name'
210}
211
212devlink_trap_type_get()
213{
214 local trap_name=$1; shift
215
216 devlink -j trap show $DEVLINK_DEV trap $trap_name \
217 | jq -r '.[][][].type'
218}
219
220devlink_trap_action_set()
221{
222 local trap_name=$1; shift
223 local action=$1; shift
224
225 # Pipe output to /dev/null to avoid expected warnings.
226 devlink trap set $DEVLINK_DEV trap $trap_name \
227 action $action &> /dev/null
228}
229
230devlink_trap_action_get()
231{
232 local trap_name=$1; shift
233
234 devlink -j trap show $DEVLINK_DEV trap $trap_name \
235 | jq -r '.[][][].action'
236}
237
238devlink_trap_group_get()
239{
240 devlink -j trap show $DEVLINK_DEV trap $trap_name \
241 | jq -r '.[][][].group'
242}
243
244devlink_trap_metadata_test()
245{
246 local trap_name=$1; shift
247 local metadata=$1; shift
248
249 devlink -jv trap show $DEVLINK_DEV trap $trap_name \
250 | jq -e '.[][][].metadata | contains(["'$metadata'"])' \
251 &> /dev/null
252}
253
254devlink_trap_rx_packets_get()
255{
256 local trap_name=$1; shift
257
258 devlink -js trap show $DEVLINK_DEV trap $trap_name \
259 | jq '.[][][]["stats"]["rx"]["packets"]'
260}
261
262devlink_trap_rx_bytes_get()
263{
264 local trap_name=$1; shift
265
266 devlink -js trap show $DEVLINK_DEV trap $trap_name \
267 | jq '.[][][]["stats"]["rx"]["bytes"]'
268}
269
270devlink_trap_stats_idle_test()
271{
272 local trap_name=$1; shift
273 local t0_packets t0_bytes
274 local t1_packets t1_bytes
275
276 t0_packets=$(devlink_trap_rx_packets_get $trap_name)
277 t0_bytes=$(devlink_trap_rx_bytes_get $trap_name)
278
279 sleep 1
280
281 t1_packets=$(devlink_trap_rx_packets_get $trap_name)
282 t1_bytes=$(devlink_trap_rx_bytes_get $trap_name)
283
284 if [[ $t0_packets -eq $t1_packets && $t0_bytes -eq $t1_bytes ]]; then
285 return 0
286 else
287 return 1
288 fi
289}
290
291devlink_traps_enable_all()
292{
293 local trap_name
294
295 for trap_name in $(devlink_traps_get); do
296 devlink_trap_action_set $trap_name "trap"
297 done
298}
299
300devlink_traps_disable_all()
301{
302 for trap_name in $(devlink_traps_get); do
303 devlink_trap_action_set $trap_name "drop"
304 done
305}
306
307devlink_trap_groups_get()
308{
309 devlink -j trap group | jq -r '.[]["'$DEVLINK_DEV'"][].name'
310}
311
312devlink_trap_group_action_set()
313{
314 local group_name=$1; shift
315 local action=$1; shift
316
317 # Pipe output to /dev/null to avoid expected warnings.
318 devlink trap group set $DEVLINK_DEV group $group_name action $action \
319 &> /dev/null
320}
321
322devlink_trap_group_rx_packets_get()
323{
324 local group_name=$1; shift
325
326 devlink -js trap group show $DEVLINK_DEV group $group_name \
327 | jq '.[][][]["stats"]["rx"]["packets"]'
328}
329
330devlink_trap_group_rx_bytes_get()
331{
332 local group_name=$1; shift
333
334 devlink -js trap group show $DEVLINK_DEV group $group_name \
335 | jq '.[][][]["stats"]["rx"]["bytes"]'
336}
337
338devlink_trap_group_stats_idle_test()
339{
340 local group_name=$1; shift
341 local t0_packets t0_bytes
342 local t1_packets t1_bytes
343
344 t0_packets=$(devlink_trap_group_rx_packets_get $group_name)
345 t0_bytes=$(devlink_trap_group_rx_bytes_get $group_name)
346
347 sleep 1
348
349 t1_packets=$(devlink_trap_group_rx_packets_get $group_name)
350 t1_bytes=$(devlink_trap_group_rx_bytes_get $group_name)
351
352 if [[ $t0_packets -eq $t1_packets && $t0_bytes -eq $t1_bytes ]]; then
353 return 0
354 else
355 return 1
356 fi
357}