From 7e27303996420d7c5c2706308c754814371e96c3 Mon Sep 17 00:00:00 2001 From: Botao Sun Date: Thu, 9 Jan 2014 23:37:54 +1100 Subject: Add Ethernet Test for Linaro Android Test code has been validated locally on TI Panda board. Signed-off by: Botao Sun Change-Id: Ic10323b62932789d5078b2296c9ae8e4fc42c9dd --- android/ethernet-android.yaml | 26 ++++++ android/scripts/ethernet-android.sh | 156 ++++++++++++++++++++++++++++++++++++ 2 files changed, 182 insertions(+) create mode 100644 android/ethernet-android.yaml create mode 100755 android/scripts/ethernet-android.sh diff --git a/android/ethernet-android.yaml b/android/ethernet-android.yaml new file mode 100644 index 0000000..d5b3c9f --- /dev/null +++ b/android/ethernet-android.yaml @@ -0,0 +1,26 @@ +metadata: + name: ethernet-android + format: "Lava-Test-Shell Test Definition 1.0" + description: "Test Ethernet on Linaro Android" + maintainer: + - botao.sun@linaro.org + os: + - android + devices: + - panda + - panda-es + - vexpress-a9 + - vexpress-tc2 + - arndale + scope: + - functional + +run: + steps: + - "./android/scripts/ethernet-android.sh" + +parse: + pattern: "(?P[a-zA-Z0-9_-]+):\\s(?P\\w+)" + fixupdict: + FAIL: fail + PASS: pass \ No newline at end of file diff --git a/android/scripts/ethernet-android.sh b/android/scripts/ethernet-android.sh new file mode 100755 index 0000000..7c94fcb --- /dev/null +++ b/android/scripts/ethernet-android.sh @@ -0,0 +1,156 @@ +#!/system/bin/sh +# +# Ethernet test cases for Linaro Android +# +# Copyright (C) 2013, Linaro Limited. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Author: Botao Sun + +function check_return_fail() { + if [ $? -ne 0 ]; then + fail_test "$1" + return 0 + else + return 1 + fi +} + +function fail_test() { + local reason=$1 + echo "${TEST}: FAIL - ${reason}" +} + +function pass_test() { + echo "${TEST}: PASS" +} + +## Test case definitions +# Check Ethernet can be disabled or not +test_disable_ethernet() { + TEST="disable_ethernet" + + echo `which busybox` + busybox ifconfig eth0 down + + if [ $? -ne 0 ]; then + fail_test "Ethernet disable failed" + return 1 + fi + + sleep 20 + + echo "###########################################" + busybox ifconfig -a + echo "###########################################" + + busybox ifconfig eth0 | grep "inet addr" + + if [ $? -ne 1 ]; then + fail_test "Ethernet IP address still exists" + return 1 + fi + + pass_test +} + +# Check Ethernet can be enabled or not +test_enable_ethernet() { + TEST="enable_ethernet" + + echo `which busybox` + busybox ifconfig eth0 up + + if [ $? -ne 0 ]; then + fail_test "Ethernet enable failed" + return 1 + fi + + sleep 20 + + echo "###########################################" + busybox ifconfig -a + echo "###########################################" + + busybox ifconfig eth0 | grep "inet addr" + + if [ $? -ne 0 ]; then + fail_test "Ethernet IP not found" + return 1 + fi + + pass_test +} + +# Ethernet ping test +test_ethernet_ping() { + TEST="ethernet_ping" + + echo `which busybox` + busybox ifconfig eth0 up + + sleep 20 + + echo "###########################################" + busybox ifconfig -a + echo "###########################################" + + busybox ifconfig eth0 | grep "inet addr" + if [ $? -ne 0 ]; then + fail_test "Ethernet IP not found" + return 1 + fi + + # Get ip address from Ethernet interface + ip_address_line=`busybox ifconfig eth0 | grep "inet addr"` + echo $ip_address_line + + ip_address_array=($ip_address_line) + ip_address_element=${ip_address_array[1]} + echo $ip_address_element + + ip_address=${ip_address_element:5} + echo $ip_address + + # Ping test here + ping -c 5 -I ${ip_address} www.google.com + if [ $? -ne 0 ]; then + fail_test "Ping test failed from $ip_address" + return 1 + fi + + # Packet loss report + packet_loss_line=`ping -c 5 -I ${ip_address} www.google.com | grep "packet loss"` + echo $packet_loss_line + + packet_loss_array=($packet_loss_line) + packet_loss=${packet_loss_array[5]} + echo "The packet loss rate is $packet_loss" + + if [ "$packet_loss" != "0%" ]; then + fail_test "Packet loss happened, rate is $packet_loss" + return 1 + fi + + pass_test +} + +# run the tests +test_disable_ethernet +test_enable_ethernet +test_ethernet_ping +# clean exit so lava-test can trust the results +exit 0 \ No newline at end of file -- cgit v1.2.3