On Thu, May 9, 2024 at 5:38 PM Simon Horman <[email protected]> wrote:
>
Hi Simon,
Thanks a lot for the review!
> On Wed, May 08, 2024 at 04:06:43AM +0000, Taehee Yoo wrote:
> > In the forwarding testcase, it opens a server and a client with the nc.
> > The server receives the correct message from NC, it prints OK.
> > The server prints FAIL if it receives the wrong message from the client.
> >
> > But If the server can't receive any message, it will not close so
> > the amt.sh waits forever.
> > There are several reasons.
> > 1. crash of smcrouted.
> > 2. Send a message from the client to the server before the server is up.
> >
> > To avoid this problem, the server waits only for 10 seconds.
> > The client sends messages for 10 seconds.
> > If the server is successfully closed, it kills the client.
> >
> > Fixes: c08e8baea78e ("selftests: add amt interface selftest script")
> > Signed-off-by: Taehee Yoo <[email protected]>
> > ---
> > tools/testing/selftests/net/amt.sh | 63 +++++++++++++++++++-----------
> > 1 file changed, 40 insertions(+), 23 deletions(-)
> >
> > diff --git a/tools/testing/selftests/net/amt.sh
> > b/tools/testing/selftests/net/amt.sh
> > index 75528788cb95..16641d3dccce 100755
> > --- a/tools/testing/selftests/net/amt.sh
> > +++ b/tools/testing/selftests/net/amt.sh
> > @@ -77,6 +77,7 @@ readonly LISTENER=$(mktemp -u listener-XXXXXXXX)
> > readonly GATEWAY=$(mktemp -u gateway-XXXXXXXX)
> > readonly RELAY=$(mktemp -u relay-XXXXXXXX)
> > readonly SOURCE=$(mktemp -u source-XXXXXXXX)
> > +readonly RESULT=$(mktemp -p /tmp amt-XXXXXXXX)
> > ERR=4
> > err=0
> >
> > @@ -85,6 +86,10 @@ exit_cleanup()
> > for ns in "$@"; do
> > ip netns delete "${ns}" 2>/dev/null || true
> > done
> > + rm $RESULT
> > + smcpid=$(< $SMCROUTEDIR/amt.pid)
> > + kill $smcpid
> > + rm -rf $SMCROUTEDIR
>
> Hi Taehee Yoo,
>
> I think this cleanup may be executed before SMCROUTEDIR exists.
>
> For consistency with other temp files, perhaps
> perpahps it is best to move the creation of SMCROUTEDIR up
> to where RESULT is instantiated above.
>
> And perhaps the pid handling can be made conditional on the
> existence of $SMCROUTEDIR/amt.pid
>
> if [ -f "$SMCROUTEDIR/amt.pid" ]; then
> ...
> fi
>
Thanks!
I will check a pid file before kills smcrouted.
> >
> > exit $ERR
> > }
> > @@ -167,7 +172,9 @@ setup_iptables()
> >
> > setup_mcast_routing()
> > {
> > - ip netns exec "${RELAY}" smcrouted
> > + SMCROUTEDIR="$(mktemp -d)"
> > +
> > + ip netns exec "${RELAY}" smcrouted -P $SMCROUTEDIR/amt.pid
> > ip netns exec "${RELAY}" smcroutectl a relay_src \
> > 172.17.0.2 239.0.0.1 amtr
> > ip netns exec "${RELAY}" smcroutectl a relay_src \
> > @@ -210,40 +217,52 @@ check_features()
> >
> > test_ipv4_forward()
> > {
> > - RESULT4=$(ip netns exec "${LISTENER}" nc -w 1 -l -u 239.0.0.1 4000)
> > + echo "" > $RESULT
> > + bash -c "$(ip netns exec "${LISTENER}" \
> > + timeout 10s nc -w 1 -l -u 239.0.0.1 4000 > $RESULT)"
>
> Hi,
>
> It's unclear to me what the purpose of the bash -c "$(...)" construction is
> here. Can the same be achieved using simply:
>
> ip netns exec "${LISTENER}" \
> timeout 10s nc -w 1 -l -u 239.0.0.1 4000 > $RESULT
>
The purpose of using bash -s was to avoid exiting main bash program
by timeout expiration due to 'set -e' option.
But Jakub avoided that problem by adding (|| true) in the recent patch.
> Also, not strictly related to this patch, it seems a little odd here, and
> elsewhere, to call bash in a /bin/sh script.
>
Oh Thanks,
Shebang should be bash, not sh.
I will fix it.
> > + RESULT4=$(< $RESULT)
> > if [ "$RESULT4" == "172.17.0.2" ]; then
> > printf "TEST: %-60s [ OK ]\n" "IPv4 amt multicast forwarding"
> > - exit 0
> > else
> > printf "TEST: %-60s [FAIL]\n" "IPv4 amt multicast forwarding"
> > - exit 1
> > fi
> > +
> > }
>
> ...
>
> > send_mcast4()
> > {
> > sleep 2
> > - ip netns exec "${SOURCE}" bash -c \
> > - 'echo 172.17.0.2 | nc -w 1 -u 239.0.0.1 4000' &
> > + for n in {0..10}; do
> > + ip netns exec "${SOURCE}" bash -c \
> > + 'echo 172.17.0.2 | nc -w 1 -u 239.0.0.1 4000'
> > + sleep 1
> > + done
> > +
> > }
> >
> > send_mcast6()
> > {
> > sleep 2
> > - ip netns exec "${SOURCE}" bash -c \
> > - 'echo 2001:db8:3::2 | nc -w 1 -u ff0e::5:6 6000' &
> > + for n in {0..10}; do
> > + ip netns exec "${SOURCE}" bash -c \
> > + 'echo 2001:db8:3::2 | nc -w 1 -u ff0e::5:6 6000'
> > + sleep 1
> > + done
> > +
> > }
> >
> > check_features
>
> ...
>
> --
> pw-bot: under-review
Thanks a lot!
Taehee Yoo