summaryrefslogtreecommitdiff
path: root/ubuntu/scripts/wlan-download-test.sh
blob: 3417b286ce8b76f423c84300b82ca882a3f9ad01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!/bin/bash
#
# wlan download test case
#
# Copyright (C) 2012 - 2016, 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: Naresh Kamboju <naresh.kamboju@linaro.org>
# Description:
# Download a file via wlan interface from know location
# validate the file by using md5sum with known md5sum
#

set -e

URL=$1
MD5SUM_CHECK=$2
OUTPUT_FILE_NAME="output_file"
MD5SUM=`which md5sum`
GET_MD5SUM=""
WLAN_INTERFACE=""
OLD_GATEWAY_IP=""
OLD_GATEWAY_INTERFACE=""
WLAN_GATEWAY_IP=""
WLAN_GATEWAY=""
RET=0

pre_setup() {
    # Print ifconfig to know available interfaces
    ip addr

    # Make sure that rp_filter is set to 0
    echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
    echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
}

check_wlan_interface() {
    # Check wlan interface state
    WLAN_INTERFACE_ARG=$1
    if [ -z $WLAN_INTERFACE_ARG ]; then
       echo "No wireless interface found on the device"
       echo "wlan-download-testcase=fail"
       RET=1
       exit $RET
    else
       ip addr show $WLAN_INTERFACE_ARG | grep "state UP"
       if [ $? -eq 0 ] ; then
          echo "wireless interface state UP"
          echo "wireless-interface-state=pass"
        else
          echo "wireless interface state DOWN"
          echo "wireless-interface-state=fail"
          RET=1
          exit $RET
       fi
    fi
}

get_interface_and_ipaddr() {
    # Assume eth and wlan are up and running
    WLAN_INTERFACE=`ls -1d /sys/class/net/*/wireless | awk -F / '{print($5)}' | head -1`
    echo wlan interface $WLAN_INTERFACE
    check_wlan_interface $WLAN_INTERFACE

    OLD_GATEWAY_IP=`ip route list | grep default |awk '{print $3}'`
    echo old gate way ip $OLD_GATEWAY_IP

    OLD_GATEWAY_INTERFACE=`ip route list | grep default |awk '{print $5}'`
    echo old gate way interface $OLD_GATEWAY_INTERFACE

    WLAN_GATEWAY_IP=`ip route list | grep $WLAN_INTERFACE | tail -1 | awk '{print $1}' | cut -f1 -d'/'`
    echo wlan gateway IP $WLAN_GATEWAY_IP

    WLAN_GATEWAY=`echo $WLAN_GATEWAY_IP | awk -F'.' '{$NF=1; print}' OFS="."`
    echo wlan gateway $WLAN_GATEWAY
}

del_primary_route() {
    ip route del default dev $OLD_GATEWAY_INTERFACE via $OLD_GATEWAY_IP
}

add_wlan_route() {
    ip route add default dev $WLAN_INTERFACE via $WLAN_GATEWAY
}

del_wlan_route() {
    ip route del default dev $WLAN_INTERFACE via $WLAN_GATEWAY
}

set_back_primary_route() {
    ip route add default dev $OLD_GATEWAY_INTERFACE via $OLD_GATEWAY_IP
}

download_via_wlan() {
    which curl
    if [ $? -eq 0 ] ; then
        curl -# --connect-timeout 1800 $URL > $OUTPUT_FILE_NAME
        if [ $? -eq 0 ] ; then
           echo "curl-file-download=pass"
        else
           echo "please validate provided url" $URL
           echo "curl-file-download=fail"
           RET=1
        fi
    else
        echo "curl command not found test exit"
        echo "curl-cmd-not-found=fail"
        RET=1
    fi
}

validate_check_sum() {
    # Get md5sum of output_file
    GET_MD5SUM=`$MD5SUM $OUTPUT_FILE_NAME | awk '{print $1}'`
    echo "GET_MD5SUM is $GET_MD5SUM"
    if [ "$MD5SUM_CHECK" = $GET_MD5SUM ] ; then
        echo "md5-checksum=pass"
        echo "wlan-download-testcase=pass"
    else
        echo "md5-checksum=fail"
        echo "wlan-download-testcase=fail"
        RET=1
    fi
}

# Prerequisite
pre_setup
get_interface_and_ipaddr
del_primary_route
add_wlan_route

# Running Test
download_via_wlan
validate_check_sum

# Set back to original state
del_wlan_route
set_back_primary_route

exit $RET