diff options
author | Vlad Buslov <vladbu@mellanox.com> | 2019-02-22 17:00:44 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-02-24 23:49:59 +0300 |
commit | 424c5bd46ad3da8d69f302375bbda69d4a7107bc (patch) | |
tree | c0e2288d6e74aa54a381fb6369d7177363cd5ff7 /tools | |
parent | 4ba21de23a7656a91de9b002294be6c37ffc5627 (diff) | |
download | linux-424c5bd46ad3da8d69f302375bbda69d4a7107bc.tar.xz |
selftests: concurrency: add test to verify concurrent replace
Implement test that verifies concurrent replacement of rules by executing
10 tc instances that replace flower filters in same handle range.
Extend tdc_multibatch.py script with new optional CLI argument that is used
to generate all batch files with same filter handle range.
Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/testing/selftests/tc-testing/tc-tests/filters/concurrency.json | 25 | ||||
-rwxr-xr-x | tools/testing/selftests/tc-testing/tdc_multibatch.py | 9 |
2 files changed, 33 insertions, 1 deletions
diff --git a/tools/testing/selftests/tc-testing/tc-tests/filters/concurrency.json b/tools/testing/selftests/tc-testing/tc-tests/filters/concurrency.json index 57ed29eb58bf..3c49fca7e76c 100644 --- a/tools/testing/selftests/tc-testing/tc-tests/filters/concurrency.json +++ b/tools/testing/selftests/tc-testing/tc-tests/filters/concurrency.json @@ -71,5 +71,30 @@ "$TC qdisc del dev $DEV2 ingress", "/bin/rm -rf $BATCH_DIR" ] + }, + { + "id": "14be", + "name": "Concurrently replace same range of 100k flower filters from 10 tc instances", + "category": [ + "filter", + "flower", + "concurrency" + ], + "setup": [ + "/bin/mkdir $BATCH_DIR", + "$TC qdisc add dev $DEV2 ingress", + "./tdc_multibatch.py $DEV2 $BATCH_DIR 100000 1 add", + "$TC -b $BATCH_DIR/add_0", + "./tdc_multibatch.py -d $DEV2 $BATCH_DIR 100000 10 replace" + ], + "cmdUnderTest": "find $BATCH_DIR/replace* -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": "100000", + "teardown": [ + "$TC qdisc del dev $DEV2 ingress", + "/bin/rm -rf $BATCH_DIR" + ] } ] diff --git a/tools/testing/selftests/tc-testing/tdc_multibatch.py b/tools/testing/selftests/tc-testing/tdc_multibatch.py index cd980d1785bb..0d8be39b5580 100755 --- a/tools/testing/selftests/tc-testing/tdc_multibatch.py +++ b/tools/testing/selftests/tc-testing/tdc_multibatch.py @@ -21,6 +21,11 @@ parser.add_argument( "operation", choices=['add', 'del', 'replace'], help="operation to perform on filters") +parser.add_argument( + "-d", + "--duplicate_handles", + action="store_true", + help="duplicate filter handle range in all files") args = parser.parse_args() device = args.device @@ -29,10 +34,12 @@ file_prefix = args.operation + "_" num_filters = args.num_filters num_files = args.num_files operation = args.operation +duplicate_handles = args.duplicate_handles 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 + if not duplicate_handles: + handle += num_filters |