summaryrefslogtreecommitdiff
path: root/test-cli/test/tests/qwifi.py
diff options
context:
space:
mode:
authorHector Fernandez <hector@iatec.biz>2020-03-05 16:29:31 +0100
committerHector Fernandez <hector@iatec.biz>2020-03-05 16:29:31 +0100
commita615dac03a9ea7897bf3947ba8d31278b2cea121 (patch)
tree2112572fc48cf74bac76a7db69005ae1373ed0db /test-cli/test/tests/qwifi.py
parent23e0cea58ba6ac5357db507b0ac7f8dfcf223326 (diff)
downloadboard-a615dac03a9ea7897bf3947ba8d31278b2cea121.zip
board-a615dac03a9ea7897bf3947ba8d31278b2cea121.tar.gz
board-a615dac03a9ea7897bf3947ba8d31278b2cea121.tar.bz2
Modify tests.
Diffstat (limited to 'test-cli/test/tests/qwifi.py')
-rw-r--r--test-cli/test/tests/qwifi.py88
1 files changed, 68 insertions, 20 deletions
diff --git a/test-cli/test/tests/qwifi.py b/test-cli/test/tests/qwifi.py
index 188e300..154dd52 100644
--- a/test-cli/test/tests/qwifi.py
+++ b/test-cli/test/tests/qwifi.py
@@ -1,33 +1,81 @@
-from test.helpers.syscmd import SysCommand
import unittest
+import sh
+import re
+
class Qwifi(unittest.TestCase):
+ __sip = None
+ __numbytestx = None
+ __bind = None
+ __OKBW = None
+ __port = None
+ #varlist: sip, bind, OKBW, port
def __init__(self, testname, testfunc, varlist):
super(Qwifi, self).__init__(testfunc)
- if "signal" in varlist:
- self.__signal = varlist["signal"]
+ if "sip" in varlist:
+ self.__sip = varlist["sip"]
+ else:
+ raise Exception('sip param inside Qwifi have been be defined')
+ if "OKBW" in varlist:
+ self.__OKBW = varlist["OKBW"]
+ else:
+ raise Exception('OKBW param inside Qwifi must be defined')
+ if "port" in varlist:
+ self.__port = varlist["port"]
else:
- raise Exception('signal param inside Qwifi must be defined')
+ raise Exception('port param inside Qwifi must be defined')
+ if "bind" in varlist:
+ self.__bind = varlist["bind"]
+ else:
+ self.__bind = None
+ self.__numbytestx = "10M"
self._testMethodDoc = testname
def execute(self):
- str_cmd= "iw wlan0 link"
- wifi_stats = SysCommand("wifi_stats", str_cmd)
- if wifi_stats.execute() == 0:
- w_stats = wifi_stats.getOutput().decode('ascii').splitlines()
- #self._longMessage = str(self.__raw_out).replace("'", "")
- if not w_stats[0] == "Not connected.":
- signal_st = w_stats[5].split(" ")[1]
- try:
- int(signal_st)
- if -1*int(signal_st) > int(self.__signal):
- self.fail("failed: signal to server lower than expected")
- except ValueError:
- self.fail("failed: error output (Bad connection?)")
+ # check if the board is connected to the router by wifi
+ p = sh.iw("wlan0", "link")
+ if p.exit_code == 0:
+ # get the first line of the output stream
+ out1 = p.stdout.decode('ascii').splitlines()[0]
+ if out1 != "Not connected.":
+ #check if the board has ip in the wlan0 interface
+ p = sh.ifconfig("wlan0")
+ if p.exit_code == 0:
+ result = re.search("inet addr:(?!127\.0{1,3}\.0{1,3}\.0{0,2}1$)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",
+ p.stdout)
+ if result:
+ # execute iperf command against the server
+ if self.__bind is None:
+ p = sh.iperf("-c", self.__sip, "-x", "CMSV", "-n", self.__numbytestx, "-f", "m", "-p",
+ self.__port)
+ else:
+ p = sh.iperf("-c", self.__sip, "-x", "CMSV", "-n", self.__numbytestx, "-f", "m", "-p",
+ self.__port, "-B", self.__bind)
+ # check if it was executed succesfully
+ if p.exit_code == 0:
+ if p.stdout == "":
+ self.fail("failed: error executing iperf command")
+ # analyze output string
+ # split by lines
+ lines = p.stdout.splitlines()
+ # get first line
+ dat = lines[1].decode('ascii')
+ # search for the BW value
+ a = re.search("\d+(\.\d)? Mbits/sec", dat)
+ b = a.group().split()
+ bwreal = b[0]
+
+ # check if BW is in the expected range
+ self.failUnless(float(bwreal) > float(self.__OKBW) * 0.9,
+ "failed: speed is lower than spected. Speed(MB/s)" + str(bwreal))
+ else:
+ self.fail("failed: could not complete iperf command")
+ else:
+ self.fail("failed: wlan0 interface doesn't have any ip address.")
+ else:
+ self.fail("failed: could not complete ifconfig command.")
else:
- self.fail("failed: error output (Bad connection?)")
- #tx_brate = float(w_stats[6].split(" ")[2])
+ self.fail("failed: wifi module is not connected to the router.")
else:
self.fail("failed: couldn't execute iw command")
-