1ba991379Sopenharmony_ci# encoding=utf-8 2ba991379Sopenharmony_ci 3ba991379Sopenharmony_ci# from aw.Exception.upgrade_exception import UpgradeException 4ba991379Sopenharmony_cifrom aw.Param import UpgradeParam 5ba991379Sopenharmony_cifrom util.log_info import logger 6ba991379Sopenharmony_ci 7ba991379Sopenharmony_cifrom aw.Common.Constant import CONSTANT 8ba991379Sopenharmony_ci 9ba991379Sopenharmony_ciimport platform 10ba991379Sopenharmony_ciimport traceback 11ba991379Sopenharmony_ciimport sys 12ba991379Sopenharmony_ciimport os 13ba991379Sopenharmony_ci 14ba991379Sopenharmony_cifrom util.time_info import get_now_time_str_info 15ba991379Sopenharmony_ci 16ba991379Sopenharmony_ciclass BaseApp(object): 17ba991379Sopenharmony_ci param_List = None 18ba991379Sopenharmony_ci flash_type = None 19ba991379Sopenharmony_ci 20ba991379Sopenharmony_ci def __init__(self, param=None): 21ba991379Sopenharmony_ci self.logFilePath = None 22ba991379Sopenharmony_ci 23ba991379Sopenharmony_ci self.TAG = self.__class__.__name__ 24ba991379Sopenharmony_ci 25ba991379Sopenharmony_ci self.logFilePath = CONSTANT.OSType.default_log_dir 26ba991379Sopenharmony_ci 27ba991379Sopenharmony_ci if isinstance(param, dict): 28ba991379Sopenharmony_ci self.logFilePath = param.get('logFilePath') 29ba991379Sopenharmony_ci self.params_dict = param 30ba991379Sopenharmony_ci elif isinstance(param, str): 31ba991379Sopenharmony_ci param_file_path, param_file_name = os.path.split(param) 32ba991379Sopenharmony_ci self.logFilePath = os.path.join(param_file_path, ''.join([param_file_name.split('.')[0], '.log'])) 33ba991379Sopenharmony_ci self.params_dict = upgrade_param.getAllParam(param) 34ba991379Sopenharmony_ci else: 35ba991379Sopenharmony_ci # raise UpgradeException(200) 36ba991379Sopenharmony_ci pass 37ba991379Sopenharmony_ci logger.switchFilePath(self.logFilePath) 38ba991379Sopenharmony_ci 39ba991379Sopenharmony_ci 40ba991379Sopenharmony_ci def _excuteApp(self, flash_type): 41ba991379Sopenharmony_ci # exit_code = 0 42ba991379Sopenharmony_ci 43ba991379Sopenharmony_ci try: 44ba991379Sopenharmony_ci ret = self._excute() 45ba991379Sopenharmony_ci logger.info(ret) 46ba991379Sopenharmony_ci nowtime = get_now_time_str_info() 47ba991379Sopenharmony_ci #sn = self.params_dict.get("sn") 48ba991379Sopenharmony_ci #os.system("hdc_std -t %s shell reboot loader" % sn) 49ba991379Sopenharmony_ci if ret == 98: 50ba991379Sopenharmony_ci flash_two(nowtime, flash_type) 51ba991379Sopenharmony_ci return 98 52ba991379Sopenharmony_ci if ret == 99: 53ba991379Sopenharmony_ci flash_two(nowtime, flash_type) 54ba991379Sopenharmony_ci return 99 55ba991379Sopenharmony_ci if not ret: 56ba991379Sopenharmony_ci flash_two(nowtime, flash_type) 57ba991379Sopenharmony_ci return -1 58ba991379Sopenharmony_ci else: 59ba991379Sopenharmony_ci logger.printLog("========================%s %s flash success========================" % (nowtime, flash_type)) 60ba991379Sopenharmony_ci logger.info("============================= end autotest facoty device flash==================================") 61ba991379Sopenharmony_ci return 0 62ba991379Sopenharmony_ci # else: 63ba991379Sopenharmony_ci # logger.printLog("========================%s %s flash fail========================" % (nowtime, flash_type)) 64ba991379Sopenharmony_ci # exit_code = -1 65ba991379Sopenharmony_ci # raise UpgradeException(ERROR_OTHER_ERROR) 66ba991379Sopenharmony_ci # except UpgradeException as e: 67ba991379Sopenharmony_ci # nowtime = get_now_time_str_info() 68ba991379Sopenharmony_ci # errormessage = e.getUpgradeMessage(e.code) 69ba991379Sopenharmony_ci # logger.printLog("%s ========================== %s ===============================" % (nowtime, errormessage)) 70ba991379Sopenharmony_ci # exit_code = e.code 71ba991379Sopenharmony_ci except Exception as e: 72ba991379Sopenharmony_ci traceback.print_exc() 73ba991379Sopenharmony_ci return 200 74ba991379Sopenharmony_ci # finally: 75ba991379Sopenharmony_ci # logger.info("============================= end autotest facoty device flash==================================") 76ba991379Sopenharmony_ci # return exit_code 77ba991379Sopenharmony_ci 78ba991379Sopenharmony_ci 79ba991379Sopenharmony_ci def _excute(self): 80ba991379Sopenharmony_ci ret = self.excute() 81ba991379Sopenharmony_ci return ret 82ba991379Sopenharmony_ci 83ba991379Sopenharmony_ci def parsePropertiesFile(self, all_params): 84ba991379Sopenharmony_ci logger.debug('select all params') 85ba991379Sopenharmony_ci return all_params 86ba991379Sopenharmony_ci 87ba991379Sopenharmony_ci 88ba991379Sopenharmony_ci #在用户级实现,如果用户级没实现,就直接报错 89ba991379Sopenharmony_ci def excute(self): 90ba991379Sopenharmony_ci logger.error('No custom executor ,check your APP pls') 91ba991379Sopenharmony_ci pass 92ba991379Sopenharmony_ci 93ba991379Sopenharmony_cidef dec_stepmsg(excutmsg): 94ba991379Sopenharmony_ci ''' 95ba991379Sopenharmony_ci #=================================================================================== 96ba991379Sopenharmony_ci # @Method: dec_stepmsg(excutmsg) 97ba991379Sopenharmony_ci # @Precondition: none 98ba991379Sopenharmony_ci # @Func: 装饰器函数,将app执行步骤的开始时间、结束时间以及相关步骤信息打印到控制 99ba991379Sopenharmony_ci # 台,excutmsg为执行步骤标识需自己传入 100ba991379Sopenharmony_ci # @PostStatus: excutmsg:执行步骤标识 101ba991379Sopenharmony_ci # @Param: local_upgrade_hotaLocation: hota大包在本地的路径 102ba991379Sopenharmony_ci # @eg: dec_stepmsg("download") 103ba991379Sopenharmony_ci # @return: 被装饰函数 104ba991379Sopenharmony_ci #=================================================================================== 105ba991379Sopenharmony_ci ''' 106ba991379Sopenharmony_ci def do_dec(fn): 107ba991379Sopenharmony_ci def do(self, *args, **kargs): 108ba991379Sopenharmony_ci nowtime = get_now_time_str_info() 109ba991379Sopenharmony_ci logger.printLog("========================%s start %s ========================" % (nowtime, excutmsg)) 110ba991379Sopenharmony_ci ret = fn(self, *args, **kargs) 111ba991379Sopenharmony_ci nowtime = get_now_time_str_info() 112ba991379Sopenharmony_ci logger.printLog("========================%s end %s ========================" % (nowtime, excutmsg)) 113ba991379Sopenharmony_ci return ret 114ba991379Sopenharmony_ci return do 115ba991379Sopenharmony_ci return do_dec 116ba991379Sopenharmony_ci 117ba991379Sopenharmony_ci 118ba991379Sopenharmony_cidef flash_two(nowtime, flash_type): 119ba991379Sopenharmony_ci logger.printLog("========================%s %s flash fail========================" % (nowtime, flash_type)) 120ba991379Sopenharmony_ci logger.info("============================= end autotest facoty device flash==================================") 121