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