[LTP] [RFC PATCH 0/2] Rewrite route stress tests into C

Alexey Kodanev alexey.kodanev@oracle.com
Tue Jan 29 17:38:51 CET 2019


Hi Petr,
On 01/24/2019 07:17 PM, Petr Vorel wrote:
> Hi Alexey,
> 
> this is prove of concept of route stress tests rewrite into C.  I'm
> myself not convinced it's a good way. The main motivation for rewriting
> tests from shell to C is speed and thus more efficient stress testing.
> 
> Some issues:
> * The test is only on lhost, no attempt to set iface on rhost and check
> connection. The only check is done via error of libnl used. It's
> questionable whether this way is good enough.

True, it would be better to verify that the route is working and usable.

At least, we could open a socket and send something using the route
(ns-udpsender way)...

> If we want to have established connection, it'd be better to get back to
> shell testing [1], just replace netstress to new tool (I'd prefer not
> use ns-udpsender).> 
> * rtnetlink is used via libnl, which is very lazy approach.
> As subject of testing is route testing and not rtnetlink testing I
> didn't reimplement rtnetlink socket communication from scratch, but I
> guess I should. Also using link caching (used by functions from libnl-cli)
> might not be a good idea (maybe using libmnl or only libnl-route would
> be better if using library).

And libmnl has an example:
https://git.netfilter.org/libmnl/tree/examples/rtnl/rtnl-route-add.c

> 
> * C code needs environment variables, that's the only reason for having
> shell. It'd be possible to load variables in runtest file:> route4-change-dst-test TST_NO_DEFAULT_RUN=1 . tst_net.sh; route-change-dst -d ltp_ns_veth2 -c 5
> route6-change-dst-test TST_NO_DEFAULT_RUN=1 . tst_net.sh; route-change-dst -6 -d $(tst_iface) -c 5
> 
> but I don't want to introduce more commands in runtest files (it looks
> non-standard to me, one day we'll have new shell runner, which might not
> be compatible with it).

Yes, it's better to use a shell wrapper than this.

> 
> If we agreed on it, I'd add functionality for changing gateway and
> interface (i.e. route{4,6}-change-{gw,if} + rename C source to
> route-change.c).
> 
> Comments are more than welcome.
> 
> Kind regards,
> Petr
> 
> [1] http://lists.linux.it/pipermail/ltp/2018-July/008778.html
> 
> Petr Vorel (2):
>   tst_net: Add missing includes, make functions inline
>   net/route: Rewrite route{4,6}-change-dst into C
> 
>  configure.ac                                  |   1 +
>  include/mk/config.mk.default                  |   3 +
>  include/mk/config.mk.in                       |   2 +
>  include/tst_net.h                             |  16 ++-
>  m4/ltp-libnl.m4                               |   7 +
>  runtest/net_stress.route                      |   4 +-
>  testcases/network/stress/route/.gitignore     |   1 +
>  testcases/network/stress/route/Makefile       |   7 +-
>  .../network/stress/route/route-change-dst.c   | 129 ++++++++++++++++++
>  .../network/stress/route/route-change-dst.sh  |  16 +++
>  travis/debian.cross-compile.aarch64.sh        |   6 +-
>  travis/debian.cross-compile.ppc64le.sh        |   9 +-
>  travis/debian.i386.sh                         |   3 +-
>  travis/debian.sh                              |   5 +-
>  travis/fedora.sh                              |   1 +
>  travis/tumbleweed.sh                          |   3 +
>  16 files changed, 198 insertions(+), 15 deletions(-)
>  create mode 100644 m4/ltp-libnl.m4
>  create mode 100644 testcases/network/stress/route/.gitignore
>  create mode 100644 testcases/network/stress/route/route-change-dst.c
>  create mode 100755 testcases/network/stress/route/route-change-dst.sh
> 



More information about the ltp mailing list