summaryrefslogtreecommitdiff
path: root/test-cli/test/tests/qusb.py
diff options
context:
space:
mode:
Diffstat (limited to 'test-cli/test/tests/qusb.py')
-rw-r--r--test-cli/test/tests/qusb.py87
1 files changed, 32 insertions, 55 deletions
diff --git a/test-cli/test/tests/qusb.py b/test-cli/test/tests/qusb.py
index 70265a5..7ecf31e 100644
--- a/test-cli/test/tests/qusb.py
+++ b/test-cli/test/tests/qusb.py
@@ -1,69 +1,46 @@
-from test.helpers.syscmd import SysCommand
+import sh
import unittest
+import re
+from test.helpers.changedir import changedir
class Qusb(unittest.TestCase):
- __numPorts = None
- __devLabel = None
params = None
def __init__(self, testname, testfunc, varlist):
self.params = varlist
super(Qusb, self).__init__(testfunc)
- if "numPorts" in varlist:
- self.__numPorts = varlist["numPorts"]
- else:
- raise Exception('numPorts param inside Qusb must be defined')
self._testMethodDoc = testname
- if "devLabel" in varlist:
- self.__devLabel = varlist["devLabel"]
- else:
- raise Exception('devLabel param inside Qusb must be defined')
- if testname == "USBOTG":
- self.__usbFileName = "/this_is_an_usb_otg"
- self.__usbtext = "USBOTG"
- else:
- self.__usbFileName = "/this_is_an_usb_host"
- self.__usbtext = "USBHOST"
- self.__numUsbFail = []
def execute(self):
- str_cmd = "lsblk -o LABEL"
- lsblk_command = SysCommand("lsblk", str_cmd)
- if lsblk_command.execute() == 0:
- self.__raw_out = lsblk_command.getOutput()
- if self.__raw_out == "":
- return -1
- lines = lsblk_command.getOutput().splitlines()
- host_list = []
- for i in range(len(lines)):
- if str(lines[i].decode('ascii')) == self.__devLabel:
- host_list.append(i)
- if len(host_list) == int(self.__numPorts):
- str_cmd = "lsblk -o MOUNTPOINT"
- lsblk_command = SysCommand("lsblk", str_cmd)
- if lsblk_command.execute() == 0:
- self.__raw_out = lsblk_command.getOutput()
- if self.__raw_out == "":
- print("failed: no command output")
- self.fail("failed: no command output")
- else:
- lines = lsblk_command.getOutput().splitlines()
- for i in range(len(host_list)):
- file_path = str(lines[host_list[i]].decode('ascii')) + self.__usbFileName
- usb_file = open(file_path, 'r')
- read = usb_file.read()
- if read.find(self.__usbtext) != -1:
- print(file_path + " --> OK!")
- else:
- self.fail(
- "failed: could not read from usb {}".format(lines[host_list[i]].decode('ascii')))
- self.__numUsbFail.append(host_list[i])
- usb_file.close()
- else:
- self.fail("failed: couldn't execute lsblk command")
-
+ # Execute script usb.sh
+ p = sh.bash('test/helpers/usb.sh')
+ # Search in the stdout a pattern "/dev/sd + {letter} + {number}
+ q = re.search("/dev/sd\w\d", p.stdout.decode('ascii'))
+ # get the first device which matches the pattern
+ device = q.group(0)
+ # create a new folder where the pendrive is going to be mounted
+ sh.mkdir("-p", "/mnt/pendrive")
+ # mount the device
+ p = sh.mount(device, "/mnt/pendrive")
+ if p.exit_code == 0:
+ # copy files
+ p = sh.cp("/root/usbtest/usbdatatest.bin", "/root/usbtest/usbdatatest.md5", "/mnt/pendrive")
+ if p.exit_code == 0:
+ # check md5
+ with changedir("/mnt/pendrive/"):
+ p = sh.md5sum("-c", "usbdatatest.md5")
+ q = re.search("OK", p.stdout.decode('ascii'))
+ # delete files
+ sh.rm("-f", "/mnt/pendrive/usbdatatest.bin", "/mnt/pendrive/usbdatatest.md5")
+ # umount
+ sh.umount("/mnt/pendrive")
+ # check result
+ if q is None:
+ self.fail("failed: wrong md5 result.")
else:
- self.fail("failed: reference and real usb host devices number mismatch")
+ # umount
+ sh.umount("/mnt/pendrive")
+ self.fail("failed: unable to copy files.")
else:
- self.fail("failed: couldn't execute lsblk command")
+ self.fail("failed: unable to mount the device.")