| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # Copyright 2015-2017 Espressif Systems (Shanghai) PTE 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.
- """
- class for handling Test Apps. Currently it provides the following features:
- 1. get SDK path
- 2. get SDK tools
- 3. parse application info from its path. for example:
- * provide download info
- * provide partition table info
- Test Apps should inherent from BaseApp class and overwrite the methods.
- """
- import os
- import sys
- import time
- # timestamp used for calculate log folder name
- LOG_FOLDER_TIMESTAMP = time.time()
- class BaseApp(object):
- """
- Base Class for App.
- Defines the mandatory methods that App need to implement.
- Also implements some common methods.
- :param app_path: the path for app.
- :param config_name: app configuration to be tested
- :param target: build target
- """
- def __init__(self, app_path, config_name=None, target=None):
- pass
- @classmethod
- def get_sdk_path(cls):
- """
- get sdk path.
- subclass must overwrite this method.
- :return: abs sdk path
- """
- pass
- @classmethod
- def get_tools(cls):
- """
- get SDK related tools for applications
- subclass must overwrite this method.
- :return: tuple, abs path of each tool
- """
- pass
- @classmethod
- def get_log_folder(cls, test_suite_name):
- """
- By default log folder is ``${SDK_PATH}/TEST_LOGS/${test_suite_name}_${timestamp}``.
- The log folder name is consist once start running, ensure all logs of will be put into the same folder.
- :param test_suite_name: the test suite name, by default it's the base file name for main module
- :return: the log folder path
- """
- if not test_suite_name:
- test_suite_name = os.path.splitext(os.path.basename(sys.modules['__main__'].__file__))[0]
- sdk_path = cls.get_sdk_path()
- log_folder = os.path.join(sdk_path, 'TEST_LOGS',
- test_suite_name +
- time.strftime('_%m%d_%H_%M_%S', time.localtime(LOG_FOLDER_TIMESTAMP)))
- if not os.path.exists(log_folder):
- os.makedirs(log_folder)
- return log_folder
- def process_app_info(self):
- """
- parse built app info for DUTTool
- subclass must overwrite this method.
- :return: required info for specific DUTTool
- """
- pass
|