From 0a59fcecd3b8d699b481e2e1f426b5a2b3d1a814 Mon Sep 17 00:00:00 2001 From: Donghoon Shin Date: Fri, 7 Oct 2016 12:53:26 +0900 Subject: [PATCH] Support artik devices and more standalone devices Change-Id: Ie555ec9b25496b307b2570cee2fd62e0cba3345b --- CHANGES.txt | 8 +- README.md | 8 +- debian/changelog | 6 + docs/source/litmus.core.rst | 1 + litmus/__init__.py | 4 +- litmus/core/util.py | 2 +- litmus/device/device.py | 9 +- litmus/device/deviceartik10.py | 157 ++++++++++++++++++ litmus/device/deviceartik5.py | 21 +++ litmus/device/devicestandalone.py | 156 +++++++++++++++++ litmus/device/devicestandalone_m0.py | 22 +++ litmus/device/devicestandalone_tm1.py | 22 +++ litmus/device/devicestandalone_tm2.py | 22 +++ litmus/device/devicestandalone_tw1.py | 22 +++ litmus/device/devicestandalone_u3.py | 22 +++ litmus/device/devicestandalone_xu3.py | 22 +++ litmus/device/devicestandalone_z1.py | 22 +++ litmus/helper/helper.py | 13 +- litmus/templates/artik10/__init__.py | 0 litmus/templates/artik10/conf.yaml | 5 + litmus/templates/artik10/misc/autoinput | Bin 0 -> 13976 bytes litmus/templates/artik10/misc/getevent | Bin 0 -> 37415 bytes litmus/templates/artik10/tc.yaml | 32 ++++ litmus/templates/artik10/userscript.py | 67 ++++++++ litmus/templates/artik5/__init__.py | 0 litmus/templates/artik5/conf.yaml | 5 + litmus/templates/artik5/misc/autoinput | Bin 0 -> 13976 bytes litmus/templates/artik5/misc/getevent | Bin 0 -> 37415 bytes litmus/templates/artik5/tc.yaml | 32 ++++ litmus/templates/artik5/userscript.py | 67 ++++++++ litmus/templates/standalone/__init__.py | 0 litmus/templates/standalone/conf_mobile.yaml | 4 + litmus/templates/standalone/conf_tv.yaml | 5 + .../templates/standalone/conf_wearable.yaml | 4 + litmus/templates/standalone/tc_mobile.yaml | 50 ++++++ litmus/templates/standalone/tc_tv.yaml | 23 +++ litmus/templates/standalone/tc_wearable.yaml | 50 ++++++ litmus/templates/standalone/userscript.py | 65 ++++++++ 38 files changed, 925 insertions(+), 23 deletions(-) create mode 100644 litmus/device/deviceartik10.py create mode 100644 litmus/device/deviceartik5.py create mode 100644 litmus/device/devicestandalone.py create mode 100644 litmus/device/devicestandalone_m0.py create mode 100644 litmus/device/devicestandalone_tm1.py create mode 100644 litmus/device/devicestandalone_tm2.py create mode 100644 litmus/device/devicestandalone_tw1.py create mode 100644 litmus/device/devicestandalone_u3.py create mode 100644 litmus/device/devicestandalone_xu3.py create mode 100644 litmus/device/devicestandalone_z1.py create mode 100644 litmus/templates/artik10/__init__.py create mode 100644 litmus/templates/artik10/conf.yaml create mode 100755 litmus/templates/artik10/misc/autoinput create mode 100755 litmus/templates/artik10/misc/getevent create mode 100644 litmus/templates/artik10/tc.yaml create mode 100755 litmus/templates/artik10/userscript.py create mode 100644 litmus/templates/artik5/__init__.py create mode 100644 litmus/templates/artik5/conf.yaml create mode 100755 litmus/templates/artik5/misc/autoinput create mode 100755 litmus/templates/artik5/misc/getevent create mode 100644 litmus/templates/artik5/tc.yaml create mode 100755 litmus/templates/artik5/userscript.py create mode 100644 litmus/templates/standalone/__init__.py create mode 100644 litmus/templates/standalone/conf_mobile.yaml create mode 100644 litmus/templates/standalone/conf_tv.yaml create mode 100644 litmus/templates/standalone/conf_wearable.yaml create mode 100644 litmus/templates/standalone/tc_mobile.yaml create mode 100644 litmus/templates/standalone/tc_tv.yaml create mode 100644 litmus/templates/standalone/tc_wearable.yaml create mode 100755 litmus/templates/standalone/userscript.py diff --git a/CHANGES.txt b/CHANGES.txt index a219c42..5655b55 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -13,13 +13,13 @@ Version 0.1.1 27 Jun 2016 - Turn off device if keyboard interrupt is raised while flashing or turning on device - Add timeout for all call/check_output to avoid hang issue -Version 0.2.0 9 Sep 2016 +Version 0.2.0 09 Sep 2016 --------------------------- - Remove acmlock routine to improve test performance - Support flash function for standalone device type - Update test helper functions -Version 0.2.1 9 Sep 2016 +Version 0.2.1 09 Sep 2016 --------------------------- - Update import command to use shell-like path expansions - Update standalone device type to avoid sdb error @@ -35,3 +35,7 @@ Version 0.3.0 21 Sep 2016 Version 0.3.1 22 Sep 2016 --------------------------- - Update cmd_rm handler + +Version 0.3.2 07 Oct 2016 +--------------------------- +- Support artik and more standalone device types diff --git a/README.md b/README.md index 8bea69b..179460a 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Buliding & installing $ debuild -2. Install the deb package using dpkg +2. Install the deb package by using dpkg $ cd .. @@ -43,13 +43,13 @@ Getting started 1. Create a litmus project: - $ litmus mk + $ litmus mk [project_name] -2. Modify /userscript.py and /conf.yaml +2. Modify [project_path]/userscript.py and [project_path]/conf.yaml 3. Run the litmus project - $ litmus run + $ litmus run [project_name] Please refer to litmus wiki for more details. diff --git a/debian/changelog b/debian/changelog index 842a097..48b9aa1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +litmus (0.3.2-1) unstable; urgency=low + + * Support artik and more standalone device types + + -- Donghoon Shin Fri, 7 Oct 2016 11:14:00 +0900 + litmus (0.3.1-1) unstable; urgency=low * Update cmd_rm handler diff --git a/docs/source/litmus.core.rst b/docs/source/litmus.core.rst index 4c82e86..1f9e8c8 100644 --- a/docs/source/litmus.core.rst +++ b/docs/source/litmus.core.rst @@ -12,6 +12,7 @@ litmus.core.manager module :undoc-members: :show-inheritance: + litmus.core.util module ----------------------- diff --git a/litmus/__init__.py b/litmus/__init__.py index abbddaf..131d9e3 100644 --- a/litmus/__init__.py +++ b/litmus/__init__.py @@ -14,11 +14,11 @@ # limitations under the License. import os -__version__ = '0.3.1' +__version__ = '0.3.2' _homedir_ = os.path.expanduser('~') _confdir_ = os.path.join(_homedir_, '.litmus') _duts_ = os.path.join(_confdir_, 'topology') _projects_ = os.path.join(_confdir_, 'projects') _tmpdir_ = '/tmp' _path_for_locks_ = '/var/lock/litmus/' -_dev_types_ = ('u3', 'xu3', 'standalone', 'empty') +_dev_types_ = ('u3', 'xu3', 'artik5', 'artik10', 'standalone', 'empty') diff --git a/litmus/core/util.py b/litmus/core/util.py index 7851bdb..809c7af 100644 --- a/litmus/core/util.py +++ b/litmus/core/util.py @@ -182,6 +182,6 @@ def load_yaml(filename): :returns dict: parsed yaml data """ - with open(filename, 'r') as stream: + with open(os.path.expanduser(filename), 'r') as stream: data = yaml.load(stream) return data diff --git a/litmus/device/device.py b/litmus/device/device.py index 19c700c..981f7d5 100644 --- a/litmus/device/device.py +++ b/litmus/device/device.py @@ -214,7 +214,7 @@ class device(object): busid = self._find_usb_busid() self._release_global_lock() self._lthor(filenames=filenames, busid=busid) - self._cutter.off() + self.off() except (Exception, KeyboardInterrupt) as e: self._release_global_lock() logging.debug(e) @@ -520,14 +520,8 @@ class device(object): time.sleep(0.3) self._write_uart(b''.join([b'echo 1 > ', usb0_path, b'/enable'])) time.sleep(0.3) - - def check_funcs_sconf(): - """docstring for check_funcs_sconf""" - self._write_uart(b''.join([b'cat ', usb0_path, b'/funcs_sconf'])) - time.sleep(0.3) self._write_uart(b''.join([b'cat ', usb0_path, b'/enable'])) time.sleep(0.3) - self._read_uart(bufsize=1000) def get_serialnumber(): """docstring for get_serialnumber""" @@ -538,7 +532,6 @@ class device(object): retrycnt = 0 while retrycnt < 10: set_serialnumber(deviceid=self.get_id().encode()) - check_funcs_sconf() serialnumber = get_serialnumber() if find_pattern(pattern, serialnumber): return diff --git a/litmus/device/deviceartik10.py b/litmus/device/deviceartik10.py new file mode 100644 index 0000000..d8990c2 --- /dev/null +++ b/litmus/device/deviceartik10.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import time +import logging +from threading import Thread +from litmus.device.device import device +from litmus.core.util import find_pattern +from litmus.core.exceptions import BootError + + +class deviceartik10(device): + """docstring for device""" + + _booting_time = 60 + _pattern_shellprompt = r'root.*> .*' + _pattern_bootprompt = r'ARTIK.*# .*' + + def __init__(self, *args, **kwargs): + self.args = args + self.kwargs = kwargs + self._name = kwargs['devicename'] + + self._open_uart() + self._manager = kwargs['manager'] + + def _release(self): + """docstring for _release""" + self._close_uart() + + def _wait_uart_shell_login_prompt(self): + """docstring for _wait_uart_shell_login_prompt""" + super(deviceartik10, self)._wait_uart_shell_login_prompt() + + def _set_sdb_deviceid(self): + """docstring for _set_sdb_deviceid""" + usb0_path = b'/sys/class/usb_mode/usb0' + pattern = '.*{0}'.format(self.get_id()) + + def set_serialnumber(deviceid): + """docstring for set_serialnumber""" + self._write_uart(b''.join([b'echo 0 > ', usb0_path, b'/enable'])) + time.sleep(0.3) + self._write_uart(b''.join([b'echo ', + b'-n ', + deviceid, + b' > ', usb0_path, + b'/iSerial'])) + time.sleep(0.3) + self._write_uart(b'direct_set_debug.sh --sdb-set') + time.sleep(0.5) + + def get_serialnumber(): + """docstring for get_serialnumber""" + self._write_uart(b''.join([b'cat ', usb0_path, b'/enable'])) + time.sleep(0.3) + self._write_uart(b''.join([b'cat ', usb0_path, b'/iSerial'])) + time.sleep(0.3) + return self._read_uart(1000) + + retrycnt = 0 + while retrycnt < 10: + set_serialnumber(deviceid=self.get_id().encode()) + serialnumber = get_serialnumber() + if find_pattern(pattern, serialnumber): + return + retrycnt += 1 + else: + raise Exception('Can\'t configure sdb deviceid') + + def _reboot(self): + """docstring for _reboot""" + status = self._current_uart_status() + + if status == 'LOGGED_IN': + self._write_uart(b'reboot') + time.sleep(3) + elif status == 'BOOT_PROMPT': + self._write_uart(b'reset') + time.sleep(3) + elif status == 'NOT_LOGGED_IN': + self._wait_uart_shell_login_prompt() + self._login_uart_shell() + self._write_uart(b'reboot') + time.sleep(3) + + def _current_uart_status(self): + """docstring for _current_uart_status""" + self._flush_uart_buffer() + for loop in range(3): + self._write_uart(b'') + readdata = self._read_uart(500) + if find_pattern(self._pattern_bootprompt, readdata): + return 'BOOT_PROMPT' + if find_pattern(self._pattern_shellprompt, readdata): + return 'LOGGED_IN' + else: + return 'NOT_LOGGED_IN' + + def _enter_download_mode(self, cmd, power_cut_delay=1, thread_param=10): + """docstring for _enter_download_mode""" + t = Thread(target=self._thread_for_enter_download_mode, + args=(cmd, thread_param, )) + status = self._current_uart_status() + if status == 'NOT_LOGGED_IN': + self._wait_uart_shell_login_prompt() + self._login_uart_shell() + t.start() + self._reboot() + t.join() + + def on(self, powercut_delay=3): + """ + Turn on the device acquired. + + :param float powercut_delay: power-cut delay for cutter + """ + logging.debug('=================Turn on device {}==================' + .format(self.get_name())) + retry_cnt = 0 + time.sleep(powercut_delay) + while retry_cnt <= self._max_attempt_boot_retry: + try: + self._reboot() + self._wait_uart_shell_login_prompt() + self._login_uart_shell() + self._set_sdb_deviceid() + self._attach_sdb() + self._sdb_root_on() + return + except KeyboardInterrupt: + raise Exception('Keyboard interrupt.') + except Exception as e: + logging.debug(e) + retry_cnt += 1 + else: + raise BootError('Cant\'t turn on dut.') + + def off(self, powercut_delay=2): + """ + Trun off the device acquired. + + :param float powercut_delay: power-cut delay for cutter + """ + logging.debug('off function is not supported for Artik device') diff --git a/litmus/device/deviceartik5.py b/litmus/device/deviceartik5.py new file mode 100644 index 0000000..bc4323e --- /dev/null +++ b/litmus/device/deviceartik5.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from litmus.device.deviceartik10 import deviceartik10 + + +class deviceartik5(deviceartik10): + """docstring for device""" + _pattern_bootprompt = r'ARITK.*# .*' diff --git a/litmus/device/devicestandalone.py b/litmus/device/devicestandalone.py new file mode 100644 index 0000000..a720896 --- /dev/null +++ b/litmus/device/devicestandalone.py @@ -0,0 +1,156 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import time +import logging +from litmus.device.device import device +from litmus.core.util import check_output, find_pattern +from litmus.core.util import call + + +class devicestandalone(device): + """ + Litmus device class. + User can control device in topology by this class methods. + """ + + _booting_time = 60 + + def __init__(self, *args, **kwargs): + self.args = args + self.kwargs = kwargs + self._name = kwargs['devicename'] + if 'serialno' in kwargs: + self._id = kwargs['serialno'] + else: + self._id = self._find_device_id() + + self._manager = kwargs['manager'] + + def _release(self): + """docstring for _release""" + pass + + def _find_device_id(self): + """docstring for _find_device_id""" + self.start_sdb_server() + outs = check_output(['sdb', 'devices'], timeout=10) + pattern = '.*List of devices attached \n([a-zA-Z0-9]*).*device.*' + found = find_pattern(pattern, outs, groupindex=1) + if found: + return found + + # public methods. + + def get_id(self): + """ + Return the id of acquired device. + Device instance uses this id for sdb connection. + + Example: + >>> dut = mgr.acquire_dut('xu3') + >>> dut.get_id() + 'XU3_001' + + :returns str: device id + """ + return self._id + + def on(self, booting_time=None): + """ + Turn on the device acquired. + + :param float powercut_delay: power-cut delay for cutter + """ + logging.debug('=================Turn on device {}==================' + .format(self.get_name())) + + self.start_sdb_server() + if self.is_on(): + self._sdb_root_on() + self.run_cmd('reboot -f', timeout=20) + wait_for_boot = booting_time if booting_time else self._booting_time + for loop in range(wait_for_boot): + logging.debug('Wait {} seconds......' + .format(wait_for_boot - loop)) + time.sleep(1) + self.start_sdb_server() + self._sdb_root_on() + + def off(self, powercut_delay=2): + """ + Trun off the device acquired. + + :param float powercut_delay: power-cut delay for cutter + """ + logging.debug('off function is not supported for standalone device') + + def flash(self, filenames, flasher='lthor', waiting=5, + partition_bin_mappings={'BOOT': 'zImage', + 'ROOTFS': 'rootfs.img', + 'USER': 'user.img', + 'SYSTEM-DATA': 'system-data.img'}): + """ + Flash binaries to device. + This function turn on device and turn off device automatically. + + :param dict filenames: filename string or dict + :param string flasher: external flashing tool name + :param float waiting: waiting time to acquire cdc_acm device + :param dict partition_bin_mappings: partition table for device which use heimdall flasher + + Example: + >>> dut.flash(['boot.tar.gz','platform.tar.gz']) + >>> or + >>> dut.flash('platform.tar.gz') + + """ + logging.debug('================Flash binaries to device============') + logging.debug(filenames) + + self.start_sdb_server() + + if not filenames: + raise Exception('There\'s no file to flash.') + try: + self._sdb_root_on() + self._acquire_global_lock() + self.run_cmd('reboot -f download', timeout=20) + time.sleep(waiting) + if flasher == 'lthor': + busid = self._find_usb_busid() + self._release_global_lock() + self._lthor(filenames=filenames, busid=busid) + elif flasher == 'heimdall': + (busaddr, devaddr) = self._find_usb_bus_and_device_address() + self._release_global_lock() + self._heimdall(filenames=filenames, + busaddr=busaddr, + devaddr=devaddr, + partition_bin_mappings=partition_bin_mappings) + except (Exception, KeyboardInterrupt) as e: + self._release_global_lock() + logging.debug(e) + raise Exception('Can\'t flash files : {}.'.format(filenames)) + + def refresh_sdb_server(self): + """docstring for refresh_sdb_server""" + call('sdb kill-server; sdb start-server', shell=True, timeout=10) + time.sleep(1) + + def start_sdb_server(self): + """docstring for start_sdb_server""" + call('sdb start-server', shell=True, timeout=10) + time.sleep(1) diff --git a/litmus/device/devicestandalone_m0.py b/litmus/device/devicestandalone_m0.py new file mode 100644 index 0000000..41cc556 --- /dev/null +++ b/litmus/device/devicestandalone_m0.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from litmus.device.devicestandalone import devicestandalone + + +class devicestandalone_m0(devicestandalone): + """docstring for device""" + pass + diff --git a/litmus/device/devicestandalone_tm1.py b/litmus/device/devicestandalone_tm1.py new file mode 100644 index 0000000..0cada07 --- /dev/null +++ b/litmus/device/devicestandalone_tm1.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from litmus.device.devicestandalone import devicestandalone + + +class devicestandalone_tm1(devicestandalone): + """docstring for device""" + pass + diff --git a/litmus/device/devicestandalone_tm2.py b/litmus/device/devicestandalone_tm2.py new file mode 100644 index 0000000..79cb68b --- /dev/null +++ b/litmus/device/devicestandalone_tm2.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from litmus.device.devicestandalone import devicestandalone + + +class devicestandalone_tm2(devicestandalone): + """docstring for device""" + pass + diff --git a/litmus/device/devicestandalone_tw1.py b/litmus/device/devicestandalone_tw1.py new file mode 100644 index 0000000..fe459e8 --- /dev/null +++ b/litmus/device/devicestandalone_tw1.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from litmus.device.devicestandalone import devicestandalone + + +class devicestandalone_tw1(devicestandalone): + """docstring for device""" + pass + diff --git a/litmus/device/devicestandalone_u3.py b/litmus/device/devicestandalone_u3.py new file mode 100644 index 0000000..9517b1e --- /dev/null +++ b/litmus/device/devicestandalone_u3.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from litmus.device.devicestandalone import devicestandalone + + +class devicestandalone_u3(devicestandalone): + """docstring for device""" + pass + diff --git a/litmus/device/devicestandalone_xu3.py b/litmus/device/devicestandalone_xu3.py new file mode 100644 index 0000000..08bc420 --- /dev/null +++ b/litmus/device/devicestandalone_xu3.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from litmus.device.devicestandalone import devicestandalone + + +class devicestandalone_xu3(devicestandalone): + """docstring for device""" + pass + diff --git a/litmus/device/devicestandalone_z1.py b/litmus/device/devicestandalone_z1.py new file mode 100644 index 0000000..8a85f76 --- /dev/null +++ b/litmus/device/devicestandalone_z1.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# Copyright 2015-2016 Samsung Electronics Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from litmus.device.devicestandalone import devicestandalone + + +class devicestandalone_z1(devicestandalone): + """docstring for device""" + pass + diff --git a/litmus/helper/helper.py b/litmus/helper/helper.py index 2665a12..26a8cf2 100644 --- a/litmus/helper/helper.py +++ b/litmus/helper/helper.py @@ -18,6 +18,7 @@ import sys import time import logging import requests +import litmus import urllib.parse from bs4 import BeautifulSoup from litmus.core.util import find_pattern, find_all_pattern @@ -173,10 +174,11 @@ def install_plugin(dut, script, waiting=5, timeout=180): import os +import tempfile import shutil from subprocess import DEVNULL -def install_plugin_from_git(dut, url, branch, script, tmpdir='repo', +def install_plugin_from_git(dut, url, branch, script, waiting=5, timeout=180, commitid=None): """ Clone a git project which include tizen plugins and install the plugins on device. @@ -186,7 +188,6 @@ def install_plugin_from_git(dut, url, branch, script, tmpdir='repo', :param str url: url for git project :param str branch: branch name of the git project :param str script: script path to install plugins on device - :param str tmpdir: temporary directory to clone the git project :param float waiting: wait time before installing plugins :param float timeout: timeout :param str commitid: commitid which you want to clone @@ -210,6 +211,8 @@ def install_plugin_from_git(dut, url, branch, script, tmpdir='repo', logging.debug('plugin install script : {}'.format(script)) dut.on() + tmpdir = next(tempfile._get_candidate_names()) + call('git clone {0} {1} --branch {2}'.format(url, tmpdir, branch), shell=True) @@ -220,15 +223,13 @@ def install_plugin_from_git(dut, url, branch, script, tmpdir='repo', call('find ./{0} -exec perl -pi -e "s/sdb\s+(-d\s+)*(root|shell|push|pull)/sdb -s {1} \\2/g" {{}} \;'.format(tmpdir, dut.get_id()), stderr=DEVNULL, shell=True) call('find ./{0} -exec perl -pi -e "s/sdb\s+.*reboot.*//g" {{}} \;'.format(tmpdir), stderr=DEVNULL, shell=True) - script = os.path.join(tmpdir, script) - script_path = '/'.join(script.split('/')[:-1]) script_name = script.split('/')[-1] - call('cp -R {0}/* .'.format(script_path), shell=True) time.sleep(waiting) - call('sh {0}'.format(script_name).split(), timeout=timeout) + call('cd {0}/{1} && sh {2}'.format(tmpdir, script_path, script_name), + shell=True, timeout=timeout) shutil.rmtree(tmpdir) dut.off() diff --git a/litmus/templates/artik10/__init__.py b/litmus/templates/artik10/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/litmus/templates/artik10/conf.yaml b/litmus/templates/artik10/conf.yaml new file mode 100644 index 0000000..5b81875 --- /dev/null +++ b/litmus/templates/artik10/conf.yaml @@ -0,0 +1,5 @@ +binary_urls: + - http://download.tizen.org/snapshots/tizen/common/latest/images/arm-wayland/common-wayland-3parts-armv7l-artik/ + - http://download.tizen.org/snapshots/tizen/common/latest/images/arm-wayland/common-boot-armv7l-artik10/ +username: +password: diff --git a/litmus/templates/artik10/misc/autoinput b/litmus/templates/artik10/misc/autoinput new file mode 100755 index 0000000000000000000000000000000000000000..88d78e3864ebaadf751577c3daffb0607277fcbb GIT binary patch literal 13976 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 T7+;q^ycp9=KC%2Ig^m7C8hN2J literal 0 HcmV?d00001 diff --git a/litmus/templates/artik10/misc/getevent b/litmus/templates/artik10/misc/getevent new file mode 100755 index 0000000000000000000000000000000000000000..66e2c2a493f27420663572ab45042ed2963b6b40 GIT binary patch literal 37415 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 +password: diff --git a/litmus/templates/artik5/misc/autoinput b/litmus/templates/artik5/misc/autoinput new file mode 100755 index 0000000000000000000000000000000000000000..88d78e3864ebaadf751577c3daffb0607277fcbb GIT binary patch literal 13976 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 T7+;q^ycp9=KC%2Ig^m7C8hN2J literal 0 HcmV?d00001 diff --git a/litmus/templates/artik5/misc/getevent b/litmus/templates/artik5/misc/getevent new file mode 100755 index 0000000000000000000000000000000000000000..66e2c2a493f27420663572ab45042ed2963b6b40 GIT binary patch literal 37415 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 +password: diff --git a/litmus/templates/standalone/conf_tv.yaml b/litmus/templates/standalone/conf_tv.yaml new file mode 100644 index 0000000..43a1164 --- /dev/null +++ b/litmus/templates/standalone/conf_tv.yaml @@ -0,0 +1,5 @@ +binary_urls: + - http://download.tizen.org/snapshots/tizen/tv/latest/images/arm-wayland/tv-boot-armv7l-odroidxu3/ + - http://download.tizen.org/snapshots/tizen/tv/latest/images/arm-wayland/tv-wayland-armv7l-odroidu3/ +username: +password: diff --git a/litmus/templates/standalone/conf_wearable.yaml b/litmus/templates/standalone/conf_wearable.yaml new file mode 100644 index 0000000..eb9cbca --- /dev/null +++ b/litmus/templates/standalone/conf_wearable.yaml @@ -0,0 +1,4 @@ +binary_urls: + - http://download.tizen.org/snapshots/tizen/wearable/latest/images/target-circle/wearable-wayland-armv7l-circle/ +username: +password: diff --git a/litmus/templates/standalone/tc_mobile.yaml b/litmus/templates/standalone/tc_mobile.yaml new file mode 100644 index 0000000..7932170 --- /dev/null +++ b/litmus/templates/standalone/tc_mobile.yaml @@ -0,0 +1,50 @@ +testcases: + - name: verify_process_is_running + from: litmus.helper.tests + result_dir: result + plan: + - name: dbus_is_running + param: dbus + pattern: .*/usr/bin/dbus-daemon.* + - name: enlightenment_is_running + param: enlightenment + pattern: .*/usr/bin/enlightenment.* + - name: sensord_is_running + param: sensord + pattern: .*/usr/bin/sensord.* + - name: deviced_is_running + param: deviced + pattern: .*/usr/bin/deviced.* + - name: pulseaudio_is_running + param: pulseaudio + pattern: .*/usr/bin/pulseaudio.* + - name: sdbd_is_running + param: sdbd + pattern: .*/usr/sbin/sdbd.* + - name: msg-server_is_running + param: msg-server + pattern: .*/usr/bin/msg-server.* + - name: connmand_is_running + param: connmand + pattern: .*/usr/sbin/connmand.* + - name: callmgrd_is_running + param: callmgrd + pattern: .*/usr/bin/callmgrd.* + - name: alarm-server_is_running + param: alarm-server + pattern: .*/usr/bin/alarm-server.* + - name: media-server_is_running + param: media-server + pattern: .*/usr/bin/media-server.* + - name: verify_dmesg + from: litmus.helper.tests + result_dir: result + plan: + - name: panel_is_alive + param: panel + pattern: .*panel is dead.* + - name: verify_wifi_is_working + from: litmus.helper.tests + wifi_apname: setup + wifi_password: + result_dir: result diff --git a/litmus/templates/standalone/tc_tv.yaml b/litmus/templates/standalone/tc_tv.yaml new file mode 100644 index 0000000..44ed8a2 --- /dev/null +++ b/litmus/templates/standalone/tc_tv.yaml @@ -0,0 +1,23 @@ +testcases: + - name: verify_process_is_running + from: litmus.helper.tests + result_dir: result + plan: + - name: enlightenment_is_running + param: enlightenment + pattern: .*/usr/bin/enlightenment.* + - name: deviced_is_running + param: deviced + pattern: .*/usr/bin/deviced.* + - name: pulseaudio_is_running + param: pulseaudio + pattern: .*/usr/bin/pulseaudio.* + - name: sdbd_is_running + param: sdbd + pattern: .*/usr/sbin/sdbd.* + - name: alarm-server_is_running + param: alarm-server + pattern: .*/usr/bin/alarm-server.* + - name: media-server_is_running + param: media-server + pattern: .*/usr/bin/media-server.* diff --git a/litmus/templates/standalone/tc_wearable.yaml b/litmus/templates/standalone/tc_wearable.yaml new file mode 100644 index 0000000..f1c099f --- /dev/null +++ b/litmus/templates/standalone/tc_wearable.yaml @@ -0,0 +1,50 @@ +testcases: + - name: verify_process_is_running + from: litmus.helper.tests + result_dir: result + plan: + - name: dbus_is_running + param: dbus + pattern: .*/usr/bin/dbus-daemon.* + - name: enlightenment_is_running + param: enlightenment + pattern: .*/usr/bin/enlightenment.* + - name: sensord_is_running + param: sensord + pattern: .*/usr/bin/sensord.* + - name: deviced_is_running + param: deviced + pattern: .*/usr/bin/deviced.* + - name: pulseaudio_is_running + param: pulseaudio + pattern: .*/usr/bin/pulseaudio.* + - name: sdbd_is_running + param: sdbd + pattern: .*/usr/sbin/sdbd.* + - name: msg-server_is_running + param: msg-server + pattern: .*/usr/bin/msg-server.* + - name: connmand_is_running + param: connmand + pattern: .*/usr/sbin/connmand.* + - name: alarm-server_is_running + param: alarm-server + pattern: .*/usr/bin/alarm-server.* + - name: sound_server_is_running + param: sound_server + pattern: .*/usr/bin/sound_server.* + - name: media-server_is_running + param: media-server + pattern: .*/usr/bin/media-server.* + - name: verify_dmesg + from: litmus.helper.tests + result_dir: result + plan: + - name: panel_is_alive + param: panel + pattern: .*panel is dead.* + - name: verify_wifi_is_working + from: litmus.helper.tests + wifi_apname: setup + wifi_password: + result_dir: result diff --git a/litmus/templates/standalone/userscript.py b/litmus/templates/standalone/userscript.py new file mode 100755 index 0000000..b799b63 --- /dev/null +++ b/litmus/templates/standalone/userscript.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 +import os +from litmus.core.util import load_yaml +from litmus.core.manager import manager +from litmus.helper.helper import tizen_snapshot_downloader as downloader +from litmus.helper.tests import add_test_helper + + +def main(*args, **kwargs): + + # init manager instance + mgr = manager(*args, **kwargs) + + # init working directory + mgr.init_workingdir() + + # get projectinfo + project_info = load_yaml('conf_mobile.yaml') + #project_info = load_yaml('conf_wearable.yaml') + #project_info = load_yaml('conf_tv.yaml') + + username = project_info['username'] + password = project_info['password'] + binary_urls = project_info['binary_urls'] + + # get version from parameter + # ex) 20160923.3 + try: + version = kwargs['param'][0] + except (IndexError, TypeError): + version = None + + # download binaries from snapshot download server + filenames = [] + for url in binary_urls: + filenames.extend(downloader(url=url, + username=username, + password=password, + version=version)) + + # get an available device for testing. + dut = mgr.acquire_dut('standalone', max_retry_times=180) + #dut = mgr.acquire_dut_by_name('MyTM1', max_retry_times=180) + + # flashing binaries to device. + dut.flash(filenames) + + # turn on dut. + dut.on() + + # run helper functions for testing. + if not os.path.exists('result'): + os.mkdir('result') + + testcases = load_yaml('tc_mobile.yaml') + #testcases = load_yaml('tc_wearable.yaml') + #testcases = load_yaml('tc_tv.yaml') + add_test_helper(dut, testcases) + dut.run_tests() + + # turn off dut. + dut.off() + + # release a device + mgr.release_dut(dut) -- 2.34.1