From df9b05d5334f112f09ead8072d80a0a31e129920 Mon Sep 17 00:00:00 2001 From: Guoqing Zhu Date: Fri, 13 Sep 2013 00:00:54 +0800 Subject: openembedded/netperf: initial multinode test Add netperf multinode test for openembedded. Signed-off-by: Guoqing Zhu Acked-by: Fathi Boudra --- openembedded/netperf-client-multinode.yaml | 33 ++++++++++++++++ openembedded/netperf-server-multinode.yaml | 33 ++++++++++++++++ openembedded/scripts/netperf-client.sh | 34 ++++++++++++++++ openembedded/scripts/netperf-server.sh | 5 +++ openembedded/scripts/netperf2LAVA.py | 63 ++++++++++++++++++++++++++++++ 5 files changed, 168 insertions(+) create mode 100644 openembedded/netperf-client-multinode.yaml create mode 100644 openembedded/netperf-server-multinode.yaml create mode 100755 openembedded/scripts/netperf-client.sh create mode 100755 openembedded/scripts/netperf-server.sh create mode 100755 openembedded/scripts/netperf2LAVA.py diff --git a/openembedded/netperf-client-multinode.yaml b/openembedded/netperf-client-multinode.yaml new file mode 100644 index 0000000..bc9afd2 --- /dev/null +++ b/openembedded/netperf-client-multinode.yaml @@ -0,0 +1,33 @@ +metadata: + format: Lava-Test Test Definition 1.0 + name: netperf-client-multinode + description: "Basic MultiNode netperf/ping test on client side" + maintainer: + - guoqing.zhu@linaro.org + os: + - openembedded + scope: + - functional + - performance + - latency + - cpu utilization + devices: + - kvm + - arndale + - panda + - beaglebone-black + - beagle-xm + - mx53loco + +run: + steps: + - ifconfig -a + - route + - lava-network broadcast eth0 + - lava-network collect eth0 + - lava-sync ready + - lava-test-case multinode-lava-network --shell ./openembedded/scripts/netperf-client.sh + - lava-sync done + +parse: + "pattern": "^test_case_id:(?P.+) units:(?P.+) measurement:(?P\\d+\\.\\d+) result:(?P\\w+)" diff --git a/openembedded/netperf-server-multinode.yaml b/openembedded/netperf-server-multinode.yaml new file mode 100644 index 0000000..80e0589 --- /dev/null +++ b/openembedded/netperf-server-multinode.yaml @@ -0,0 +1,33 @@ +metadata: + format: Lava-Test Test Definition 1.0 + name: netperf-server-multinode + description: "Basic MultiNode netperf/ping test on server side" + maintainer: + - guoqing.zhu@linaro.org + os: + - openembedded + scope: + - functional + - performance + - latency + - cpu utilization + devices: + - kvm + - arndale + - panda + - beaglebone-black + - beagle-xm + - mx53loco + +run: + steps: + - ifconfig -a + - route + - lava-network broadcast eth0 + - lava-network collect eth0 + - lava-sync ready + - lava-test-case multinode-lava-network --shell ./openembedded/scripts/netperf-server.sh + - lava-sync done + +parse: + "pattern": "^test_case_id:(?P.+) units:(?P.+) measurement:(?P\\d+\\.\\d+) result:(?P\\w+)" diff --git a/openembedded/scripts/netperf-client.sh b/openembedded/scripts/netperf-client.sh new file mode 100755 index 0000000..2351fe4 --- /dev/null +++ b/openembedded/scripts/netperf-client.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +set -x + +local_ip=$(ifconfig|grep "inet addr"|grep -v "127.0.0.1"|cut -d: -f2|cut -d' ' -f1) + +for line in `lava-group | grep server | awk '{print $1}'` ; do + echo $line + # get the ipv4 for this device + STR=`lava-network query $line ipv4` + echo "STR: "$STR + # strip off the prefix for ipv4 + DUT=`echo $STR | sed -e 's/.*addr://'` + echo "DUT: "$DUT + if [ "${local_ip}" != "${DUT}" ]; then + remote_ip=${DUT} + echo ${remote_ip} + break + fi +done + +if [ -z ${remote_ip} ] +then + echo "Missing remote ip!" + exit 1 +fi + +ifconfig -a +ping -c 1 ${remote_ip} || exit 1 +ping -c 30 ${remote_ip} | ./openembedded/scripts/netperf2LAVA.py +for m in 64 128 256 512 1024 2048 4096 8192 16384; do netperf -H ${remote_ip} -l 20 -c -C -- -m $m -D; done | ./openembedded/scripts/netperf2LAVA.py +for m in 64 128 256 512 1024 2048 4096 8192 16384; do netperf -H ${remote_ip} -l 20 -t UDP_STREAM -c -C -- -m $m -D; done | ./openembedded/scripts/netperf2LAVA.py +for m in 1 32 64 128 512 1024 4096 8192 16384; do netperf -t TCP_RR -H ${remote_ip} -l 20 -c -C -- -r $m,$m -D; done | ./openembedded/scripts/netperf2LAVA.py +for m in 1 32 64 128 512 1024 4096 8192 16384; do netperf -t UDP_RR -H ${remote_ip} -l 20 -c -C -- -r $m,$m -D; done | ./openembedded/scripts/netperf2LAVA.py diff --git a/openembedded/scripts/netperf-server.sh b/openembedded/scripts/netperf-server.sh new file mode 100755 index 0000000..7e2fc3c --- /dev/null +++ b/openembedded/scripts/netperf-server.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -x + +netserver && echo 'test_case_id:netserver units:none measurement:0 result:pass' || echo 'test_case_id:netserver units:none measurement:0 result:fail' diff --git a/openembedded/scripts/netperf2LAVA.py b/openembedded/scripts/netperf2LAVA.py new file mode 100755 index 0000000..ee1199d --- /dev/null +++ b/openembedded/scripts/netperf2LAVA.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +import re +import sys + +#Parse netperf results looking for the data in the form of +#line = "87380 16384 2048 10.00 4289.48 51.12 51.12 3.905 3.905" ./netperf -l 10 -c -C -- -m 2048 -D +#line = "180224 8192 10.00 1654855 0 10845.1 52.60 1.589" ./netperf -t UDP_STREAM -l 10 -c -C -- -m 8192 -D +#line = "180224 10.00 1649348 10809.0 52.60 1.589" rcv side of UDP_STREAM +#line = "16384 87380 1 1 10.00 47469.68 29.84 29.84 25.146 25.146" ./netperf -t TCP_RR -l 10 -c -C -- -r 1,1 + +found_result = "false" +parser_rtt = re.compile("^rtt\s+\S+\s+\=\s+(?P\d+\.\d+)\/(?P\d+\.\d+)\/(?P\d+\.\d+)\/(?P\d+\.\d+)") +parser_tcp = re.compile("^\s*(?P\d+)\s+(?P\d+)\s+(?P\d+)\s+(?P