mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-31 21:14:37 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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
 | 
