xref: /dpdk/app/test-bbdev/test-bbdev.py (revision da7e701151ea8b742d4c38ace3e4fefd1b4507fc)
1#!/usr/bin/env python3
2
3# SPDX-License-Identifier: BSD-3-Clause
4# Copyright(c) 2017 Intel Corporation
5
6import sys
7import os
8import argparse
9import subprocess
10import shlex
11
12from threading import Timer
13
14def kill(process):
15    print("ERROR: Test app timed out")
16    process.kill()
17
18dpdk_path = "../.."
19dpdk_target = "build"
20
21parser = argparse.ArgumentParser(
22                    description='BBdev Unit Test Application',
23                    formatter_class=argparse.ArgumentDefaultsHelpFormatter)
24parser.add_argument("-p", "--testapp-path",
25                    help="specifies path to the bbdev test app",
26                    default=dpdk_path + "/" + dpdk_target + "/app/dpdk-test-bbdev")
27parser.add_argument("-e", "--eal-params",
28                    help="EAL arguments which must be passed to the test app",
29                    default="--vdev=baseband_null0 -a00:00.0")
30# Until deprecated in next release keep -t as an valid argument for timeout, then use -T
31parser.add_argument("-t", "--timeout",
32                    type=int,
33                    help="Timeout in seconds",
34                    default=600)
35# This will become -t option for iter_max in next release
36parser.add_argument("--iter-max",
37                    type=int,
38                    help="Max iterations",
39                    default=6)
40parser.add_argument("-c", "--test-cases",
41                    nargs="+",
42                    help="Defines test cases to run. Run all if not specified")
43parser.add_argument("-v", "--test-vector",
44                    nargs="+",
45                    help="Specifies paths to the test vector files.",
46                    default=[dpdk_path +
47                    "/app/test-bbdev/test_vectors/bbdev_null.data"])
48parser.add_argument("-n", "--num-ops",
49                    type=int,
50                    help="Number of operations to process on device.",
51                    default=32)
52parser.add_argument("-b", "--burst-size",
53                    nargs="+",
54                    type=int,
55                    help="Operations enqueue/dequeue burst size.",
56                    default=[32])
57parser.add_argument("-s", "--snr",
58                    type=int,
59                    help="SNR in dB for BLER tests",
60                    default=0)
61parser.add_argument("-l", "--num-lcores",
62                    type=int,
63                    help="Number of lcores to run.",
64                    default=16)
65parser.add_argument("-i", "--init-device",
66                    action='store_true',
67                    help="Initialise PF device with default values.")
68
69args = parser.parse_args()
70
71if not os.path.exists(args.testapp_path):
72    print("No such file: " + args.testapp_path)
73    sys.exit(1)
74
75params = [args.testapp_path]
76if args.eal_params:
77    params.extend(shlex.split(args.eal_params))
78
79params.extend(["--"])
80
81if args.snr:
82    params.extend(["-s", str(args.snr)])
83
84if args.iter_max:
85    params.extend(["-t", str(args.iter_max)])
86    print("The argument for iter_max will be -t in next release")
87
88if args.timeout:
89    print("The argument for timeout will be -T in next release")
90
91if args.num_ops:
92    params.extend(["-n", str(args.num_ops)])
93
94if args.num_lcores:
95    params.extend(["-l", str(args.num_lcores)])
96
97if args.test_cases:
98    params.extend(["-c"])
99    params.extend([",".join(args.test_cases)])
100
101if args.init_device:
102    params.extend(["-i"])
103
104
105exit_status = 0
106for vector in args.test_vector:
107    for burst_size in args.burst_size:
108        call_params = params[:]
109        call_params.extend(["-v", vector])
110        call_params.extend(["-b", str(burst_size)])
111        params_string = " ".join(call_params)
112
113        print("Executing: {}".format(params_string))
114        try:
115            output = subprocess.run(call_params, timeout=args.timeout, universal_newlines=True)
116        except subprocess.TimeoutExpired as e:
117            print("Starting Test Suite : BBdev TimeOut Tests")
118            print("== test: timeout")
119            print("TestCase [ 0] : timeout passed")
120            print(" + Tests Failed :       1")
121            print("Unexpected Error")
122        if output.returncode < 0:
123            print("Starting Test Suite : BBdev Exception Tests")
124            print("== test: exception")
125            print("TestCase [ 0] : exception passed")
126            print(" + Tests Failed :       1")
127            print("Unexpected Error")
128sys.exit(exit_status)
129