Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 450ef620 authored by Vlad Buslov's avatar Vlad Buslov Committed by David S. Miller
Browse files

selftests: concurrency: add test to verify parallel rules insertion



Implement test that verifies parallel rules insertion by adding 1 million
flower filters with 10 concurrent tc instances. Put it to standalone
'concurrency' category.

Implement tdc_multibatch.py helper script that is used to generate multiple
batch files for concurrent tc execution. Extend config with new 'BATCH_DIR'
variable to specify temporary output directory that is used to store batch
files generated by tdc_multibatch.py.

Signed-off-by: default avatarVlad Buslov <vladbu@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3b07270d
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
[
    {
        "id": "e41d",
        "name": "Add 1M flower filters with 10 parallel tc instances",
        "category": [
            "filter",
            "flower",
            "concurrency"
        ],
        "setup": [
            "/bin/mkdir $BATCH_DIR",
            "$TC qdisc add dev $DEV2 ingress",
            "./tdc_multibatch.py $DEV2 $BATCH_DIR 100000 10 add"
        ],
        "cmdUnderTest": "find $BATCH_DIR/add* -print | xargs -n 1 -P 10 $TC -b",
        "expExitCode": "0",
        "verifyCmd": "$TC -s filter show dev $DEV2 ingress",
        "matchPattern": "filter protocol ip pref 1 flower chain 0 handle",
        "matchCount": "1000000",
        "teardown": [
            "$TC qdisc del dev $DEV2 ingress",
            "/bin/rm -rf $BATCH_DIR"
        ]
    }
]
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ NAMES = {
          'DEV1': 'v0p1',
          'DEV2': '',
          'BATCH_FILE': './batch.txt',
          'BATCH_DIR': 'tmp',
          # Length of time in seconds to wait before terminating a command
          'TIMEOUT': 12,
          # Name of the namespace to use
+38 −0
Original line number Diff line number Diff line
#!/usr/bin/python3
# SPDX-License-Identifier: GPL-2.0
"""
tdc_multibatch.py - a thin wrapper over tdc_batch.py to generate multiple batch
files

Copyright (C) 2019 Vlad Buslov <vladbu@mellanox.com>
"""

import argparse
import os

parser = argparse.ArgumentParser(
    description='TC multiple batch file generator')
parser.add_argument("device", help="device name")
parser.add_argument("dir", help="where to put batch files")
parser.add_argument(
    "num_filters", type=int, help="how many lines per batch file")
parser.add_argument("num_files", type=int, help="how many batch files")
parser.add_argument(
    "operation",
    choices=['add', 'del', 'replace'],
    help="operation to perform on filters")
args = parser.parse_args()

device = args.device
dir = args.dir
file_prefix = args.operation + "_"
num_filters = args.num_filters
num_files = args.num_files
operation = args.operation
handle = 1

for i in range(num_files):
    file = dir + '/' + file_prefix + str(i)
    os.system("./tdc_batch.py -n {} -a {} -e {} -m {} {} {}".format(
        num_filters, handle, operation, i, device, file))
    handle += num_filters