多级配置参数处理方法、装置、设备、介质及程序产品与流程
本公开涉及终端测试,尤其涉及一种多级配置参数处理方法、装置、设备、介质及程序产品。
背景技术:
1、在终端工厂测试框架的软件实现中,测试项所依赖的运行参数并非来自单一数据源,而是分散在assets、vendor、sdcard、mode、common五级目录中的若干份json文件里,每一级配置均以“后加载覆盖先加载”的方式对参数进行叠加,最终形成一份生效参数表供具体测试项读取。当某个测试项出现异常结果时,工程师需要确定关键参数的最终值来自哪一层、被哪一层覆盖、覆盖时是否存在多源冲突以及冲突依据何种规则被裁决。
2、现有技术普遍采用“分层递归合并”方案处理多级json配置:在框架启动或测试项加载阶段,按照硬编码的优先级数组依次读取各层json文件,将其反序列化为内存中的嵌套映射结构,随后以深度优先方式递归遍历每一层的键值树,遇到同名键时若双方均为对象则继续向下递归合并,若一方为叶子值则直接以“后读取一方的叶子值覆盖先读取一方”完成替换,最终得到一份扁平化的生效参数表并写入内存缓存供测试项读取。在冲突处理上,现有技术几乎一致采用隐式的“最后写入者胜”策略,仅依据加载顺序或文件修改时间决定谁生效,没有显式的冲突声明、优先级谓词或裁决记录。
3、目前,多级配置参数处理效果较差,用户体验较差。
技术实现思路
1、本公开提供一种多级配置参数处理方法、装置、设备、介质及程序产品,以至少解决现有多级配置参数处理效果较差,用户体验较差的问题。
2、本公开的技术方案如下:
3、本公开实施例提供一种多级配置参数处理方法,包括:
4、扫描预设的多层级配置路径,解析各层级的配置文件,并为每个层级构建层级节点;
5、以各层级为节点,以层级间的覆盖依赖关系为边,构建有向无环图;并对所述有向无环图执行确定性拓扑排序,得到全局唯一的拓扑序列;
6、沿所述拓扑序列对全局键空间中的每个键收集全部候选值,生成参数决议账本;其中,所述参数决议账本保留每个键的全部候选值及来源信息;
7、对多源冲突构造约束满足问题,通过确定性规则引擎求解,得到裁决路径;
8、将每次决议事件以哈希链节点串联形成来源链;
9、将参数命名空间划分为不相交区间,基于集合运算计算两次决议快照之间的最小影响差分,并维护逆补丁栈进行可逆操作。
10、可选地,以各层级为节点,以层级间的覆盖依赖关系为边,构建有向无环图;并对所述有向无环图执行确定性拓扑排序,得到全局唯一的拓扑序列,包括:
11、以各层级为节点,以层级间的覆盖依赖关系为边,构建有向无环图;其中,从第一优先级层级向第二优先级层级连接覆盖依赖边,所述第二优先级的等级高于所述第一优先级;
12、针对同一优先级层级之间的相互引用约束执行防御性检测;
13、在检测到回边的情况下,则标记拓扑异常,并触发确定性线性化回退,按照层级优先级、完整性哈希字典序和加载顺序排列为单一线性序列,同时记录环警告信息;
14、采用拓扑排序算法对所述有向无环图执行确定性拓扑排序,得到全局唯一的拓扑序列。
15、可选地,沿所述拓扑序列对全局键空间中的每个键收集全部候选值,生成参数决议账本;其中,所述参数决议账本保留每个键的全部候选值及来源信息,包括:
16、以各层级参数索引的并集构成全局键空间作为遍历域,对每个键沿所述拓扑序列正向扫描,将出现每个键的各层级参数候选按拓扑序追加至候选列表;
17、按照确定性优先级规则从所述候选列表中选取生效值,所述确定性优先级规则依次考虑显式覆盖标记、覆盖优先级降序、完整性哈希字典序和时间降序;
18、保留每个键的全部候选值,将生效值及全部候选值写入决议记录;
19、每确定一个键的决议,追加来源链节点,基于前一哈希值、键、生效值、层级标识和规则标识生成当前哈希值,形成防篡改来源链,并同步压入逆补丁,所述逆补丁记录上一决议值与新决议值;
20、根据决议情形标注生效原因;
21、输出携带候选列表、生效原因和来源链头信息的决议记录集合,作为后续归因、裁决、差分和撤销的统一数据源。
22、可选地,所述参数决议账本至少包括:键、按拓扑序排列的全部候选列表、最终生效值、真正生效的层级、生效原因、冲突条款集合和裁决路径;生效原因包括单候选来源、显式覆盖、优先级胜出、时间仲裁以及无候选时套用默认规则中的至少一种。
23、可选地,所述对多源冲突构造约束满足问题,通过确定性规则引擎求解,得到裁决路径,包括:
24、在目标键的候选列表长度大于设定阈值的情况下,构造约束满足问题;以目标键的候选值域为变量取值域,并设定硬约束和软约束;
25、以确定性回溯搜索求解所述约束满足问题,先筛选出满足全部硬约束的候选子集,再从所述候选子集中选取软约束得分最高的候选值作为裁决结果;
26、全程记录裁决路径,所述裁决路径包括:每一步裁决的候选、所依据的冲突条款以及剩余候选集合,得到裁决路径。
27、可选地,将参数命名空间划分为不相交区间,基于集合运算计算两次决议快照之间的最小影响差分,并维护逆补丁栈进行可逆操作,包括:
28、将参数命名空间按前缀树划分为多个不相交区间;
29、获取变更前的第一决议快照和变更后的第二决议快照,基于集合运算计算所述第一决议快照和所述第二决议快照之间的最小影响差分,所述最小影响差分包括:新增键集合、移除键集合和变更键集合,所述变更键集合由两次快照中均存在但决议值不同的键构成;
30、将所述变更键集合按命名空间区间聚合,得到各区间变更计数;
31、撤销决议时弹出逆补丁栈顶,将逆补丁栈顶对应的键的决议值和来源链头恢复为变更前状态,并反向校验哈希链连续性,以维护逆补丁栈进行可逆操作。
32、本公开实施例还提供一种多级配置参数处理装置,包括:
33、构建模块,用于扫描预设的多层级配置路径,解析各层级的配置文件,并为每个层级构建层级节点;
34、排序模块,用于以各层级为节点,以层级间的覆盖依赖关系为边,构建有向无环图;并对所述有向无环图执行确定性拓扑排序,得到全局唯一的拓扑序列;
35、生成模块,用于沿所述拓扑序列对全局键空间中的每个键收集全部候选值,生成参数决议账本;其中,所述参数决议账本保留每个键的全部候选值及来源信息;
36、构造模块,用于对多源冲突构造约束满足问题,通过确定性规则引擎求解,得到裁决路径;
37、串联模块,用于将每次决议事件以哈希链节点串联形成来源链;
38、计算模块,用于将参数命名空间划分为不相交区间,基于集合运算计算两次决议快照之间的最小影响差分,并维护逆补丁栈进行可逆操作。
39、本公开实施例还提供一种电子设备,包括:
40、处理器;
41、用于存储处理器可执行指令的存储器;
42、其中,所述处理器被配置为执行指令,以实现上述的方法中的各步骤。
43、本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法中的各步骤。
44、本公开实施例还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法中的各步骤。
45、本公开的实施例提供的技术方案至少带来以下有益效果:
46、在本公开的一些实施例中,扫描预设的多层级配置路径,并解析各层级的配置文件,并为每个层级构建层级节点;以各层级为节点,以层级间的覆盖依赖关系为边,构建有向无环图;并对有向无环图执行确定性拓扑排序,得到全局唯一的拓扑序列;沿拓扑序列对全局键空间中的每个键收集全部候选值,并生成保留来源信息的参数决议账本;对多源冲突构造约束满足问题,通过确定性规则引擎求解,得到可复现裁决路径;将每次决议事件以哈希链节点串联形成可验证、防篡改的来源链;将参数命名空间划分为不相交区间,基于集合运算计算两次决议快照之间的最小影响差分,并维护逆补丁栈进行可逆操作;本公开实现配置决议的全局有序、来源可溯、冲突可裁决、结果可验证,提高多级配置参数处理效果,提升用户体验。
47、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com