xref: /linux/tools/testing/selftests/tc-testing/tdc_multibatch.py (revision cdd38c5f1ce4398ec58fec95904b75824daab7b5)
1*c25ce589SFinn Behrens#!/usr/bin/env python3
2450ef620SVlad Buslov# SPDX-License-Identifier: GPL-2.0
3450ef620SVlad Buslov"""
4450ef620SVlad Buslovtdc_multibatch.py - a thin wrapper over tdc_batch.py to generate multiple batch
5450ef620SVlad Buslovfiles
6450ef620SVlad Buslov
7450ef620SVlad BuslovCopyright (C) 2019 Vlad Buslov <vladbu@mellanox.com>
8450ef620SVlad Buslov"""
9450ef620SVlad Buslov
10450ef620SVlad Buslovimport argparse
11450ef620SVlad Buslovimport os
12450ef620SVlad Buslov
13450ef620SVlad Buslovparser = argparse.ArgumentParser(
14450ef620SVlad Buslov    description='TC multiple batch file generator')
15450ef620SVlad Buslovparser.add_argument("device", help="device name")
16450ef620SVlad Buslovparser.add_argument("dir", help="where to put batch files")
17450ef620SVlad Buslovparser.add_argument(
18450ef620SVlad Buslov    "num_filters", type=int, help="how many lines per batch file")
19450ef620SVlad Buslovparser.add_argument("num_files", type=int, help="how many batch files")
20450ef620SVlad Buslovparser.add_argument(
21450ef620SVlad Buslov    "operation",
22450ef620SVlad Buslov    choices=['add', 'del', 'replace'],
23450ef620SVlad Buslov    help="operation to perform on filters")
24424c5bd4SVlad Buslovparser.add_argument(
25be6b294dSVlad Buslov    "-x",
26be6b294dSVlad Buslov    "--file_prefix",
27be6b294dSVlad Buslov    default="",
28be6b294dSVlad Buslov    help="prefix for generated batch file names")
29be6b294dSVlad Buslovparser.add_argument(
30424c5bd4SVlad Buslov    "-d",
31424c5bd4SVlad Buslov    "--duplicate_handles",
32424c5bd4SVlad Buslov    action="store_true",
33424c5bd4SVlad Buslov    help="duplicate filter handle range in all files")
34be6b294dSVlad Buslovparser.add_argument(
35be6b294dSVlad Buslov    "-a",
36be6b294dSVlad Buslov    "--handle_start",
37be6b294dSVlad Buslov    type=int,
38be6b294dSVlad Buslov    default=1,
39be6b294dSVlad Buslov    help="start handle range from (default: 1)")
40be6b294dSVlad Buslovparser.add_argument(
41be6b294dSVlad Buslov    "-m",
42be6b294dSVlad Buslov    "--mac_prefix",
43be6b294dSVlad Buslov    type=int,
44be6b294dSVlad Buslov    default=0,
45be6b294dSVlad Buslov    choices=range(0, 256),
46be6b294dSVlad Buslov    help="add this value to third byte of source MAC address of flower filter"
47be6b294dSVlad Buslov    "(default: 0)")
48450ef620SVlad Buslovargs = parser.parse_args()
49450ef620SVlad Buslov
50450ef620SVlad Buslovdevice = args.device
51450ef620SVlad Buslovdir = args.dir
52be6b294dSVlad Buslovfile_prefix = args.file_prefix + args.operation + "_"
53450ef620SVlad Buslovnum_filters = args.num_filters
54450ef620SVlad Buslovnum_files = args.num_files
55450ef620SVlad Buslovoperation = args.operation
56424c5bd4SVlad Buslovduplicate_handles = args.duplicate_handles
57be6b294dSVlad Buslovhandle = args.handle_start
58be6b294dSVlad Buslovmac_prefix = args.mac_prefix
59450ef620SVlad Buslov
60450ef620SVlad Buslovfor i in range(num_files):
61450ef620SVlad Buslov    file = dir + '/' + file_prefix + str(i)
62450ef620SVlad Buslov    os.system("./tdc_batch.py -n {} -a {} -e {} -m {} {} {}".format(
63be6b294dSVlad Buslov        num_filters, handle, operation, i + mac_prefix, device, file))
64424c5bd4SVlad Buslov    if not duplicate_handles:
65450ef620SVlad Buslov        handle += num_filters
66