背景

  最近公司推出云化平台执行用例,之前都是在物理单板,云化平台有一个特点那就是性能相较于物理单板是特别的弱,执行一个用例1-2分钟,在物理单板上用例30s左右跑完。为了适配云化平台,我们推了一个适配方案“采用双配置文件加载的办法”,配置文件命明采用new_gen_1951.json、new_gen_qemu.json标识不同平台配置文件。

需要实现的目标

  用例整个拷贝到准备上传到节点的平台之后,删除另一个平台配置文件,并将留下配置文件改名为new_gen.json。

用例执行时加载架构



  之前用例配置文件命令默认是new_gen.json,适配云化平台只需要在用例修改配置文件之前将目标平台配置文件改为new_gen.json即可适配后续执行步骤,达到特性类最少更改。


需要解决的问题

  • 不同平台配置文件的命名方案
  • 找出不同该平台下的配置文件

不同平台配置文件的命名方案

  物理执行环境CPU用的是海思1951芯片,配置文件命令为new_gen_1951.json。云化平台是采用虚拟机模式则命令为new_gen_qemu.json。

找出不同该平台下的配置文件

  采用正则表达式匹配目标目录下文件名,不匹配平台的配置文件则删除,匹配平台的配置文件则将“_1951”去除。

def delete_config_suffix(system_type = None, case_path = None):
    '''
    去掉ftpd目录下phm配置文件的平台相关后缀,删除平台无关文件
    :param self:
    :return:bool
    '''
    system_keyword = 'qemu' if system_type == 'qemu' else '1951'
    delete_keyword = 'qemu' if system_type != 'qemu' else '1951'

    config_path = os.path.join(case_path, 'config').replace('\\', '/')
    all_config_list = os.listdir(config_path)

    for single_file in all_config_list:
        if re.search(system_keyword, single_file):
            new_single_name = re.sub('_'+system_keyword, '', single_file)
            cmd = 'mv {0}/{1} {0}/{2}'.\
                format(config_path, single_file, new_single_name)
            run_exec_local(cmd)
        elif re.search(delete_keyword, single_file):
            # 防止误删除new_gen_new.json
            cmd = 'rm -rf {0}/{1}'.format(config_path, single_file)
            run_exec_local(cmd)

总结

  最大限度的适配之前的代码是最优选择。

posted on 2022-05-04 11:35  放纵-F  阅读(167)  评论(0)    收藏  举报