From: Magnus Karlsson <magnus.karlsson@gmail.com>
To: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Cc: magnus.karlsson@intel.com, bjorn@kernel.org, ast@kernel.org,
daniel@iogearbox.net, netdev@vger.kernel.org,
bpf@vger.kernel.org, yhs@fb.com, andrii@kernel.org,
martin.lau@linux.dev, song@kernel.org, john.fastabend@gmail.com,
kpsingh@kernel.org, sdf@google.com, haoluo@google.com,
jolsa@kernel.org
Subject: Re: [PATCH bpf-next 06/10] selftests/xsk: add option that lists all tests
Date: Tue, 22 Aug 2023 15:52:22 +0200 [thread overview]
Message-ID: <CAJ8uoz22vVMt_XP3uV2QEpAQRZcfnhVN8tsYg6E4PZeSCvhsNQ@mail.gmail.com> (raw)
In-Reply-To: <ZOSr/muPbfiGAw+M@boxer>
On Tue, 22 Aug 2023 at 14:37, Maciej Fijalkowski
<maciej.fijalkowski@intel.com> wrote:
>
> On Wed, Aug 09, 2023 at 02:43:39PM +0200, Magnus Karlsson wrote:
> > From: Magnus Karlsson <magnus.karlsson@intel.com>
> >
> > Add a command line option (-l) that lists all the tests. The number
> > before the test will be used in the next commit for specifying a
> > single test to run. Here is an example of the output:
>
> I was thinking whether we should have a way of combining -l with -m, but I
> believe there is only a single test currently that can not be run in ZC
> mode (rx dropped) ?
>
> >
> > Tests:
> > 0: SEND_RECEIVE
> > 1: SEND_RECEIVE_2K_FRAME
> > 2: SEND_RECEIVE_SINGLE_PKT
> > 3: POLL_RX
> > 4: POLL_TX
> > 5: POLL_RXQ_FULL
> > 6: POLL_TXQ_FULL
> > 7: SEND_RECEIVE_UNALIGNED
> > :
> > :
> >
> > Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
> > ---
> > tools/testing/selftests/bpf/test_xsk.sh | 11 +++++++++-
> > tools/testing/selftests/bpf/xsk_prereqs.sh | 10 +++++----
> > tools/testing/selftests/bpf/xskxceiver.c | 24 ++++++++++++++++++++--
> > 3 files changed, 38 insertions(+), 7 deletions(-)
> >
> > diff --git a/tools/testing/selftests/bpf/test_xsk.sh b/tools/testing/selftests/bpf/test_xsk.sh
> > index 4ec621f4d3db..00a504f0929a 100755
> > --- a/tools/testing/selftests/bpf/test_xsk.sh
> > +++ b/tools/testing/selftests/bpf/test_xsk.sh
> > @@ -81,13 +81,14 @@
> >
> > ETH=""
> >
> > -while getopts "vi:dm:" flag
> > +while getopts "vi:dm:l" flag
> > do
> > case "${flag}" in
> > v) verbose=1;;
> > d) debug=1;;
> > i) ETH=${OPTARG};;
> > m) MODE=${OPTARG};;
> > + l) list=1;;
> > esac
> > done
> >
> > @@ -157,6 +158,10 @@ if [[ $verbose -eq 1 ]]; then
> > ARGS+="-v "
> > fi
> >
> > +if [[ $list -eq 1 ]]; then
> > + ARGS+="-l "
> > +fi
> > +
> > if [ ! -z $MODE ]; then
> > ARGS+="-m ${MODE} "
> > fi
> > @@ -183,6 +188,10 @@ else
> > cleanup_iface ${ETH} ${MTU}
> > fi
> >
> > +if [[ $list -eq 1 ]]; then
> > + exit
> > +fi
> > +
> > TEST_NAME="XSK_SELFTESTS_${VETH0}_BUSY_POLL"
> > busy_poll=1
> >
> > diff --git a/tools/testing/selftests/bpf/xsk_prereqs.sh b/tools/testing/selftests/bpf/xsk_prereqs.sh
> > index 29175682c44d..47c7b8064f38 100755
> > --- a/tools/testing/selftests/bpf/xsk_prereqs.sh
> > +++ b/tools/testing/selftests/bpf/xsk_prereqs.sh
> > @@ -83,9 +83,11 @@ exec_xskxceiver()
> > fi
> >
> > ./${XSKOBJ} -i ${VETH0} -i ${VETH1} ${ARGS}
> > -
> > retval=$?
> > - test_status $retval "${TEST_NAME}"
> > - statusList+=($retval)
> > - nameList+=(${TEST_NAME})
> > +
> > + if [[ $list -ne 1 ]]; then
> > + test_status $retval "${TEST_NAME}"
> > + statusList+=($retval)
> > + nameList+=(${TEST_NAME})
> > + fi
> > }
> > diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
> > index b1d0c69f21b8..a063b9af7fff 100644
> > --- a/tools/testing/selftests/bpf/xskxceiver.c
> > +++ b/tools/testing/selftests/bpf/xskxceiver.c
> > @@ -108,6 +108,7 @@ static const char *MAC1 = "\x00\x0A\x56\x9E\xEE\x62";
> > static const char *MAC2 = "\x00\x0A\x56\x9E\xEE\x61";
> >
> > static bool opt_verbose;
> > +static bool opt_print_tests;
> > static enum test_mode opt_mode = TEST_MODE_ALL;
> >
> > static void __exit_with_error(int error, const char *file, const char *func, int line)
> > @@ -314,6 +315,7 @@ static struct option long_options[] = {
> > {"busy-poll", no_argument, 0, 'b'},
> > {"verbose", no_argument, 0, 'v'},
> > {"mode", required_argument, 0, 'm'},
> > + {"list", no_argument, 0, 'l'},
> > {0, 0, 0, 0}
> > };
> >
> > @@ -325,7 +327,8 @@ static void usage(const char *prog)
> > " -i, --interface Use interface\n"
> > " -v, --verbose Verbose output\n"
> > " -b, --busy-poll Enable busy poll\n"
> > - " -m, --mode Run only mode skb, drv, or zc\n";
> > + " -m, --mode Run only mode skb, drv, or zc\n"
> > + " -l, --list List all available tests\n";
> >
> > ksft_print_msg(str, prog);
> > }
> > @@ -347,7 +350,7 @@ static void parse_command_line(struct ifobject *ifobj_tx, struct ifobject *ifobj
> > opterr = 0;
> >
> > for (;;) {
> > - c = getopt_long(argc, argv, "i:vbm:", long_options, &option_index);
> > + c = getopt_long(argc, argv, "i:vbm:l", long_options, &option_index);
> > if (c == -1)
> > break;
> >
> > @@ -391,6 +394,9 @@ static void parse_command_line(struct ifobject *ifobj_tx, struct ifobject *ifobj
> > ksft_exit_xfail();
> > }
> > break;
> > + case 'l':
> > + opt_print_tests = true;
> > + break;
> > default:
> > usage(basename(argv[0]));
> > ksft_exit_xfail();
> > @@ -2310,6 +2316,15 @@ static const struct test_spec tests[] = {
> > {.name = "TOO_MANY_FRAGS", .test_func = testapp_too_many_frags},
> > };
> >
> > +static void print_tests(void)
> > +{
> > + u32 i;
> > +
> > + printf("Tests:\n");
> > + for (i = 0; i < ARRAY_SIZE(tests); i++)
>
> Nit: I believe you can do
> for (u32 i = 0; i < ARRAY_SIZE(tests); i++)
Thank you for reviewing this Maciej. Will fix all your comments in all
the patches except this one. There are none of these embedded
declarations previously in the file, so let us just stick to declaring
variables right after "{", for consistency.
> > + printf("%u: %s\n", i, tests[i].name);
> > +}
> > +
> > int main(int argc, char **argv)
> > {
> > struct pkt_stream *rx_pkt_stream_default;
> > @@ -2334,6 +2349,11 @@ int main(int argc, char **argv)
> >
> > parse_command_line(ifobj_tx, ifobj_rx, argc, argv);
> >
> > + if (opt_print_tests) {
> > + print_tests();
> > + ksft_exit_xpass();
> > + }
> > +
> > shared_netdev = (ifobj_tx->ifindex == ifobj_rx->ifindex);
> > ifobj_tx->shared_umem = shared_netdev;
> > ifobj_rx->shared_umem = shared_netdev;
> > --
> > 2.34.1
> >
next prev parent reply other threads:[~2023-08-22 13:52 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-09 12:43 [PATCH bpf-next 00/10] seltests/xsk: various improvements to xskxceiver Magnus Karlsson
2023-08-09 12:43 ` [PATCH bpf-next 01/10] selftests/xsk: print per packet info in verbose mode Magnus Karlsson
2023-08-09 12:43 ` [PATCH bpf-next 02/10] selftests/xsk: add timeout for Tx thread Magnus Karlsson
2023-08-09 12:43 ` [PATCH bpf-next 03/10] selftests/xsk: add option to only run tests in a single mode Magnus Karlsson
2023-08-10 12:14 ` Przemek Kitszel
2023-08-10 12:36 ` Magnus Karlsson
2023-08-09 12:43 ` [PATCH bpf-next 04/10] selftests/xsk: move all tests to separate functions Magnus Karlsson
2023-08-09 12:43 ` [PATCH bpf-next 05/10] selftests/xsk: declare test names in struct Magnus Karlsson
2023-08-10 12:15 ` Przemek Kitszel
2023-08-10 12:36 ` Magnus Karlsson
2023-08-22 12:28 ` Maciej Fijalkowski
2023-08-09 12:43 ` [PATCH bpf-next 06/10] selftests/xsk: add option that lists all tests Magnus Karlsson
2023-08-22 12:37 ` Maciej Fijalkowski
2023-08-22 13:52 ` Magnus Karlsson [this message]
2023-08-09 12:43 ` [PATCH bpf-next 07/10] selftests/xsk: add option to run single test Magnus Karlsson
2023-08-22 12:50 ` Maciej Fijalkowski
2023-08-09 12:43 ` [PATCH bpf-next 08/10] selftests/xsk: use ksft_print_msg uniformly Magnus Karlsson
2023-08-09 12:43 ` [PATCH bpf-next 09/10] selftests/xsk: fail single test instead of all tests Magnus Karlsson
2023-08-09 12:43 ` [PATCH bpf-next 10/10] selftests/xsk: display command line options with -h Magnus Karlsson
2023-08-10 12:19 ` Przemek Kitszel
2023-08-10 12:41 ` Magnus Karlsson
2023-08-22 13:02 ` Maciej Fijalkowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAJ8uoz22vVMt_XP3uV2QEpAQRZcfnhVN8tsYg6E4PZeSCvhsNQ@mail.gmail.com \
--to=magnus.karlsson@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bjorn@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=maciej.fijalkowski@intel.com \
--cc=magnus.karlsson@intel.com \
--cc=martin.lau@linux.dev \
--cc=netdev@vger.kernel.org \
--cc=sdf@google.com \
--cc=song@kernel.org \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).