From 1b6c98db3c4741190b5f5279a4b67853a4529705 Mon Sep 17 00:00:00 2001 From: Octavian Purdila Date: Thu, 15 Dec 2016 14:08:05 +0200 Subject: [PATCH 1/3] lkl tools: coding style tests: fetch master head The origin master head may not be present (e.g. build setups) so make sure to fetch it. Signed-off-by: Octavian Purdila --- tools/lkl/scripts/checkpatch.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/lkl/scripts/checkpatch.sh b/tools/lkl/scripts/checkpatch.sh index 63f6ef2bcc0b7a..38eb972cdd12f1 100755 --- a/tools/lkl/scripts/checkpatch.sh +++ b/tools/lkl/scripts/checkpatch.sh @@ -13,15 +13,19 @@ if [ -z "$origin_master" ]; then origin_master="origin/master" fi +origin=$(dirname $origin_master) +master=$(basename $origin_master) + # make sure we fetch to avoid caching effects -git fetch origin +git fetch --tags $origin +refs/heads/$master:refs/remotes/$origin/$master # find the last upstream tag to avoid checking upstream commits during # upstream merges tag=`git tag --sort='-*authordate' | grep ^v | head -n1` tmp=`mktemp -d` -for c in `git log --no-merges --pretty=format:%h HEAD ^$origin_master ^$tag`; do +commits=$(git log --no-merges --pretty=format:%h HEAD ^$origin/$master ^$tag) +for c in $commits; do git format-patch -1 -o $tmp $c done From 817f484288a474e4643f11e7311d61b2916fcd28 Mon Sep 17 00:00:00 2001 From: Octavian Purdila Date: Fri, 16 Dec 2016 12:22:32 +0200 Subject: [PATCH 2/3] lkl tools: net-test: use lkl_strerror instead of strerror Fix a few places that use strerror and which should use lkl_strerror. Show the IP address we are pinging even when we fail. Also, minimum required number of parameters is 4. Signed-off-by: Octavian Purdila --- tools/lkl/tests/net-test.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/lkl/tests/net-test.c b/tools/lkl/tests/net-test.c index 53e88845aeab2c..7e92fa54419b36 100644 --- a/tools/lkl/tests/net-test.c +++ b/tools/lkl/tests/net-test.c @@ -51,9 +51,11 @@ static int test_icmp(char *str, int len) struct lkl_pollfd pfd; char buf[32]; + str += snprintf(str, len, "%s ", dst); + sock = lkl_sys_socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); if (sock < 0) { - snprintf(str, len, "socket error (%s)", strerror(errno)); + snprintf(str, len, "socket error (%s)", lkl_strerror(sock)); return TEST_FAILURE; } @@ -73,7 +75,7 @@ static int test_icmp(char *str, int len) (struct lkl_sockaddr*)&saddr, sizeof(saddr)); if (ret < 0) { - snprintf(str, len, "sendto error (%s)", strerror(errno)); + snprintf(str, len, "sendto error (%s)", lkl_strerror(ret)); return TEST_FAILURE; } @@ -85,13 +87,13 @@ static int test_icmp(char *str, int len) ret = lkl_sys_poll(&pfd, 1, 1000); if (ret < 0) { - snprintf(str, len, "poll error (%s)", strerror(errno)); + snprintf(str, len, "poll error (%s)", lkl_strerror(ret)); return TEST_FAILURE; } ret = lkl_sys_recv(sock, buf, sizeof(buf), MSG_DONTWAIT); if (ret < 0) { - snprintf(str, len, "recv error (%s)", strerror(errno)); + snprintf(str, len, "recv error (%s)", lkl_strerror(ret)); return TEST_FAILURE; } @@ -105,7 +107,6 @@ static int test_icmp(char *str, int len) return TEST_FAILURE; } - snprintf(str, len, "echo reply %s", dst); return TEST_SUCCESS; } @@ -118,7 +119,7 @@ static int test_net_init(int argc, char **argv) struct lkl_netdev *nd = NULL; char boot_cmdline[256] = "\0"; - if (argc < 3) { + if (argc < 4) { printf("usage %s |dhcp [gateway]\n", argv[0]); exit(0); } From ef4547171e4e2392322528921be7ddae3cdc7c2f Mon Sep 17 00:00:00 2001 From: Octavian Purdila Date: Thu, 15 Dec 2016 14:40:40 +0200 Subject: [PATCH 3/3] lkl tools: tests: allow for stricter environments Remove the static IP tests and use only DHCP to avoid potential conflicts. Check for mingw only once as neither tests can run on mingw. Fix an issue where multiple default routes are available (e.g. both wireless and wired networks are connected). Also check if the destination address is reachable before running the tests: start with the local gateway, if that fails try 8.8.8.8. Signed-off-by: Octavian Purdila --- tools/lkl/tests/net.sh | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/tools/lkl/tests/net.sh b/tools/lkl/tests/net.sh index 49c289d2da86e6..9300360582732d 100755 --- a/tools/lkl/tests/net.sh +++ b/tools/lkl/tests/net.sh @@ -1,10 +1,12 @@ #!/bin/bash -e -IFNAME=`ip route |grep default | awk '{print $5}'` -GW=`ip route |grep default | awk '{print $3}'` -HOST_IPADDR=`ip rou |grep ${IFNAME} | grep "scope link" | awk '{print $1}' | sed "s/\(.*\)\/.*/\1/"` -PLEN=`ip rou |grep ${IFNAME} | grep "scope link" | awk '{print $1}' | sed "s/.*\/\(.*\)/\1/"` -IPADDR=`echo ${HOST_IPADDR}|awk -F. '{printf ("%d.%d.%d.%d\n",$1,$2,$3,$4+10)}'` +# currently not supported mingw +if [ "`printenv CONFIG_AUTO_LKL_POSIX_HOST`" != "y" ] ; then + exit 0 +fi + +IFNAME=`ip route |grep default | awk '{print $5}' | head -n1` +GW=`ip route |grep default | awk '{print $3}' | head -n1` script_dir=$(cd $(dirname ${BASH_SOURCE:-$0}); pwd) cd ${script_dir} @@ -32,27 +34,25 @@ if [ -c /dev/net/tun ]; then sudo ip tuntap del dev lkl_ptt1 mode tap fi -echo "== RAW socket (LKL net) tests ==" -# currently not supported mingw -if [ -n "`printenv CONFIG_AUTO_LKL_POSIX_HOST`" ] ; then - sudo ip link set dev ${IFNAME} promisc on - # this won't work if IFNAME is wifi since it rewrites the src macaddr - sudo ./net-test raw ${IFNAME} 8.8.8.8 ${IPADDR} ${PLEN} ${GW} - - # DHCP test - echo " == DHCP with RAW socket test ==" - sudo ./net-test raw ${IFNAME} 8.8.8.8 dhcp - sudo ip link set dev ${IFNAME} promisc off +if ping -c1 -w1 $GW &>/dev/null; then + DST=$GW +elif ping -c1 -w1 8.8.8.8 &>/dev/null; then + DST=8.8.8.8 fi -echo "== macvtap (LKL net) tests ==" -# currently not supported mingw -sudo ip link add link ${IFNAME} name lkl_vtap0 type macvtap mode passthru -if ls /dev/tap* > /dev/null 2>&1 ; then - sudo ip link set dev lkl_vtap0 up - sudo chown ${USER} `ls /dev/tap*` +if ! [ -z $DST ]; then + echo "== RAW socket (LKL net) tests ==" + sudo ip link set dev ${IFNAME} promisc on + sudo ./net-test raw ${IFNAME} ${DST} dhcp + sudo ip link set dev ${IFNAME} promisc off - ./net-test macvtap `ls /dev/tap*` 8.8.8.8 ${IPADDR} ${PLEN} ${GW} + echo "== macvtap (LKL net) tests ==" + sudo ip link add link ${IFNAME} name lkl_vtap0 type macvtap mode passthru + if ls /dev/tap* > /dev/null 2>&1 ; then + sudo ip link set dev lkl_vtap0 up + sudo chown ${USER} `ls /dev/tap*` + ./net-test macvtap `ls /dev/tap*` $DST dhcp + fi fi # we disabled this DPDK test because it's unlikely possible to describe