netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
To: Magnus Karlsson <magnus.karlsson@gmail.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 14:37:18 +0200	[thread overview]
Message-ID: <ZOSr/muPbfiGAw+M@boxer> (raw)
In-Reply-To: <20230809124343.12957-7-magnus.karlsson@gmail.com>

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++)

> +		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
> 

  reply	other threads:[~2023-08-22 12:37 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 [this message]
2023-08-22 13:52     ` Magnus Karlsson
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=ZOSr/muPbfiGAw+M@boxer \
    --to=maciej.fijalkowski@intel.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=magnus.karlsson@gmail.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).