Re: [PATCH bpf-next 06/10] selftests/xsk: add option that lists all tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 22 Aug 2023 at 14:37, Maciej Fijalkowski
<maciej.fijalkowski@xxxxxxxxx> wrote:
>
> On Wed, Aug 09, 2023 at 02:43:39PM +0200, Magnus Karlsson wrote:
> > From: Magnus Karlsson <magnus.karlsson@xxxxxxxxx>
> >
> > 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@xxxxxxxxx>
> > ---
> >  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
> >




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux