[LTP] [RFC PATCH v8 07/11] lib/test_net.sh: Add function reset_ltp_netspace()
Alexey Kodanev
alexey.kodanev@oracle.com
Mon Aug 21 17:31:10 CEST 2017
On 08/18/2017 07:44 PM, Petr Vorel wrote:
> This function is useful when we know we broke netns (e.g. by unloading
> network driver).
>
> It was necessary to introduce new variable LTP_NETNS_CUSTOM, as after
> resetting network namespace there is no way to reset LTP_NETNS variable
> for subsequent tests and therefore is (for non-custom variant) always
> needed to set it even if netns itself is setup.
>
> Signed-off-by: Petr Vorel <pvorel@suse.cz>
> ---
> testcases/lib/test_net.sh | 29 ++++++++++++++++++++++++++---
> 1 file changed, 26 insertions(+), 3 deletions(-)
>
> diff --git a/testcases/lib/test_net.sh b/testcases/lib/test_net.sh
> index c4399f637..6c2fb6803 100644
> --- a/testcases/lib/test_net.sh
> +++ b/testcases/lib/test_net.sh
> @@ -21,6 +21,16 @@
>
> [ -z "$TST_LIB_LOADED" ] && . test.sh
>
> +set_ltp_netns_var()
> +{
> + if [ -z "$LTP_NETNS_CUSTOM" ]; then
> + pid="$(echo $(readlink /var/run/netns/ltp_ns) | cut -f3 -d'/')"
> + export LTP_NETNS="ns_exec $pid net,mnt"
> + else
> + export LTP_NETNS="$LTP_NETNS_CUSTOM"
> + fi
> +}
> +
> init_ltp_netspace()
> {
> local pid=
> @@ -41,8 +51,7 @@ init_ltp_netspace()
>
> export TST_INIT_NETNS="no"
>
> - pid="$(echo $(readlink /var/run/netns/ltp_ns) | cut -f3 -d'/')"
> - export LTP_NETNS="${LTP_NETNS:-ns_exec $pid net,mnt}"
> + set_ltp_netns_var
>
> tst_restore_ipaddr
> tst_restore_ipaddr rhost
> @@ -50,6 +59,18 @@ init_ltp_netspace()
> tst_wait_ipv6_dad
> }
>
> +# Force to reset netns.
> +reset_ltp_netspace()
> +{
> + [ -n "$TST_USE_NETNS" ] || return
> +
> + tst_resm TINFO "reset netns"
> + ip link delete ltp_ns_veth2 2> /dev/null
> + rm -f /var/run/netns/ltp_ns
> + pkill ns_create
Hmm, if there was custom netns you would break it anyway with this
function and change to LTP one.
I guess we should leave it unsupported for route rmmod test unless we
figure out the right solution.
Also, what if we reset only ltp veth pair, i.e.:
reset_ltp_netspace()
{
...
[ "$(tst_iface)" != "ltp_ns_veth2" ] || return
ip li del ltp_ns_veth2 2>/dev/null
}
init_ltp_netspace()
{
...
pid="$(echo $(readlink /var/run/netns/ltp_ns) | cut -f3 -d'/')"
export LTP_NETNS="${LTP_NETNS:-ns_exec $pid net,mnt}"
if ! ip li sh $LHOST_IFACES > /dev/null 2>&1; then
ROD ip li add name ltp_ns_veth1 type veth peer name ltp_ns_veth2
ROD ns_ifmove ltp_ns_veth1 $pid
fi
...
}
> + init_ltp_netspace
> +}
> +
> # Run command on remote host.
> # Options:
> # -b run in background
> @@ -636,7 +657,9 @@ export UPLOAD_REGFILESIZE="${UPLOAD_REGFILESIZE:-1024}"
> export MCASTNUM_NORMAL="${MCASTNUM_NORMAL:-20}"
> export MCASTNUM_HEAVY="${MCASTNUM_HEAVY:-4000}"
>
> -[ -n "$TST_USE_NETNS" -a "$TST_INIT_NETNS" != "no" ] && init_ltp_netspace
> +if [ -n "$TST_USE_NETNS" ]; then
> + [ "$TST_INIT_NETNS" != "no" ] && init_ltp_netspace || set_ltp_netns_var
> +fi
Best regards,
Alexey
More information about the ltp
mailing list