xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/tc-testing/tdc_multibatch.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/usr/bin/env python3
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
3*4882a593Smuzhiyun"""
4*4882a593Smuzhiyuntdc_multibatch.py - a thin wrapper over tdc_batch.py to generate multiple batch
5*4882a593Smuzhiyunfiles
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunCopyright (C) 2019 Vlad Buslov <vladbu@mellanox.com>
8*4882a593Smuzhiyun"""
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunimport argparse
11*4882a593Smuzhiyunimport os
12*4882a593Smuzhiyun
13*4882a593Smuzhiyunparser = argparse.ArgumentParser(
14*4882a593Smuzhiyun    description='TC multiple batch file generator')
15*4882a593Smuzhiyunparser.add_argument("device", help="device name")
16*4882a593Smuzhiyunparser.add_argument("dir", help="where to put batch files")
17*4882a593Smuzhiyunparser.add_argument(
18*4882a593Smuzhiyun    "num_filters", type=int, help="how many lines per batch file")
19*4882a593Smuzhiyunparser.add_argument("num_files", type=int, help="how many batch files")
20*4882a593Smuzhiyunparser.add_argument(
21*4882a593Smuzhiyun    "operation",
22*4882a593Smuzhiyun    choices=['add', 'del', 'replace'],
23*4882a593Smuzhiyun    help="operation to perform on filters")
24*4882a593Smuzhiyunparser.add_argument(
25*4882a593Smuzhiyun    "-x",
26*4882a593Smuzhiyun    "--file_prefix",
27*4882a593Smuzhiyun    default="",
28*4882a593Smuzhiyun    help="prefix for generated batch file names")
29*4882a593Smuzhiyunparser.add_argument(
30*4882a593Smuzhiyun    "-d",
31*4882a593Smuzhiyun    "--duplicate_handles",
32*4882a593Smuzhiyun    action="store_true",
33*4882a593Smuzhiyun    help="duplicate filter handle range in all files")
34*4882a593Smuzhiyunparser.add_argument(
35*4882a593Smuzhiyun    "-a",
36*4882a593Smuzhiyun    "--handle_start",
37*4882a593Smuzhiyun    type=int,
38*4882a593Smuzhiyun    default=1,
39*4882a593Smuzhiyun    help="start handle range from (default: 1)")
40*4882a593Smuzhiyunparser.add_argument(
41*4882a593Smuzhiyun    "-m",
42*4882a593Smuzhiyun    "--mac_prefix",
43*4882a593Smuzhiyun    type=int,
44*4882a593Smuzhiyun    default=0,
45*4882a593Smuzhiyun    choices=range(0, 256),
46*4882a593Smuzhiyun    help="add this value to third byte of source MAC address of flower filter"
47*4882a593Smuzhiyun    "(default: 0)")
48*4882a593Smuzhiyunargs = parser.parse_args()
49*4882a593Smuzhiyun
50*4882a593Smuzhiyundevice = args.device
51*4882a593Smuzhiyundir = args.dir
52*4882a593Smuzhiyunfile_prefix = args.file_prefix + args.operation + "_"
53*4882a593Smuzhiyunnum_filters = args.num_filters
54*4882a593Smuzhiyunnum_files = args.num_files
55*4882a593Smuzhiyunoperation = args.operation
56*4882a593Smuzhiyunduplicate_handles = args.duplicate_handles
57*4882a593Smuzhiyunhandle = args.handle_start
58*4882a593Smuzhiyunmac_prefix = args.mac_prefix
59*4882a593Smuzhiyun
60*4882a593Smuzhiyunfor i in range(num_files):
61*4882a593Smuzhiyun    file = dir + '/' + file_prefix + str(i)
62*4882a593Smuzhiyun    os.system("./tdc_batch.py -n {} -a {} -e {} -m {} {} {}".format(
63*4882a593Smuzhiyun        num_filters, handle, operation, i + mac_prefix, device, file))
64*4882a593Smuzhiyun    if not duplicate_handles:
65*4882a593Smuzhiyun        handle += num_filters
66