System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于gocron的定时巡检任务实现系统技术方案_技高网

一种基于gocron的定时巡检任务实现系统技术方案

技术编号:40313438 阅读:9 留言:0更新日期:2024-02-07 20:55
本发明专利技术提供一种基于gocron的定时巡检任务实现系统,属于信息技术领域,本发明专利技术定时任务调度中心、任务执行器、定时任务调度器;面向自动进行真机的自动化测试,通过简洁的系统配置使自动化巡检任务定时执行,并自动生成每次巡检任务的执行报告,通过邮件发送出来,使得定时巡检系统可以自动协调设备和执行器实现定时巡检并发送执行结果邮件报告。

【技术实现步骤摘要】

本专利技术涉及信息,要用于研制计算机硬件、软件、外部设备、通信网络设备,以及利用计算机硬件、软件及数字传递网对信息进行文字、图形、特征识别、信息采集、信息处理和传递等。涉及应用于测试方面的自动化,包括在控制系统、自动化技术应用、自动化原件、仪表与装置、人工智能自动化、机器人等领域的活动。尤其涉及一种基于gocron的定时巡检任务实现方法。


技术介绍

1、1、adb(又名android调试桥)是一个通用命令行工具,其允许用户与模拟器实例或连接的android设备进行通信,adb的后台程序相当于一个跑在手机上的服务器,通过约定的协议以tcp的方式和pc的客户端交互,执行命令;

2、2、airtest是一个跨平台的、基于图像识别的ui自动化测试框架,适用于游戏和app,支持平台有windows、android和ios,python中带有airtest的依赖包,专利直接在python作为主技术语言的模块中引用;poco是一款基于ui控件识别的自动化测试框架,目前支持unity3d/cocos2dx-*/android原生app/ios原生app/微信小程序,也可以在其他引擎中自行介入poco-sdk来使用源码;

3、3、gocron定时任务管理系统是使用go语言开发的轻量级定时任务集中调度和管理系统,可用于替代linux-crontab,指定任务类型、内容并实时查看执行结果域执行日志

4、利用gocron定时任务管理系统,配置需要指定设备执行的定时任务,当上一个任务没有执行结束且没有超时时,下一个需要同一设备执行的任务即将开始,就会造成设备占用冲突,设备终端将报出拒绝连接,最终造成两个任务同时执行失败。

5、当执行的自动化巡检脚本出现死循环时,会造成设备中的adb进程缓存累积量巨大,利用golang依赖包中的killsignal方法无法杀死当前任务进程。


技术实现思路

1、为了解决以上技术问题,本专利技术提供了一种基于gocron的定时巡检任务实现系统。解决在使用定时任务管理系统配置自动化巡检任务时设备占用优先级之间和任务与任务之间冲突,进程有效清理与定时任务邮件通知报告发送冲突,执行器多设备执行时报告覆盖的问题,使得定时巡检系统可以自动协调设备和执行器实现定时巡检并发送执行结果邮件报告。

2、本专利技术的技术方案是:

3、一种基于gocron的定时巡检任务实现系统,包括

4、定时任务调度中心

5、负责与远程主机保持连接,向远程主机分发任务命令,确认任务开始执行。执行结束后从远程主机获取任务执行结果,将执行时间、终端输出、报告地址的结果保存至任务日志数据库,解析所有数据发送任务执行结果通知;

6、任务执行器

7、每个指定执行设备都要依赖airtest框架循环执行每个指定的测试用例,执行单个脚本时通过airtest的customairtstcase类获取执行结果,通过定时任务调度中心生成的任务命令解析出执行设备号,使用自主开发的template页面模板将所有数据写入单个用例的执行报告,存入使用‘log’+设备号命名的文件夹中。任务全部执行完毕后使用聚合报告模板将聚合结果写入聚合报告,用例执行详情链接配置为‘log’+设备号的路径,支持通过nginx配置直接访问;

8、定时任务调度器

9、当收到手动执行任务触发或定时任务配置的定时执行时间到来时,调度器区分该任务是否为需要设备配合执行的任务,判断所需设备的空闲状态,根据优先级暂停或等待设备当前的执行状态,分配任务执行,禁止设备被人为占用并追踪执行后结果及终端输出,任务主动结束、超时杀死或人为停止后自动释放设备,不影响后续任务的执行;并区分定时任务执行结果发送不同的邮件通知,成功时发送成功邮件包含用例巡检结果,超时时遍历任务执行的文件夹获取log重新写入邮件模板,主题改为执行超时通知。

10、进一步的,

11、工作过程如下:

12、首先配置任务执行器:当接收到执行命令时时开启新线程执行自动化任务命令,通过引入airtest的原装方法分别执行每一个用例脚本获取report报告写入模板,执行结束后收集所有任务的执行结果生成聚合报告存入使用主键设备号命名的文件夹;

13、其次需要配置向任务执行器发送信号的调度器;调度器要定时从任务池和设备池中取出空闲的任务和设备,确认设备的空闲状态,是否在任务的黑名单中,合理分配匹配的任务与设备生成任务执行命令发送给终端调用执行器,通过终端的命令反馈确认执行器是否成功开始新的巡检线程;收到设备人为占用通知后负责与终端交互停止任务执行器正在执行的设备任务,同时释放设备,向定时任务调度中心反馈执行中止通知;

14、最后配置定时任务调度中心,与远程主机上的调度器保持连接,进行任务分发入库以及获取巡检任务结果报告,发送执行结果通知。

15、其中,

16、将超时执行的任务进程利用终端强制杀死,并以将超时邮件配置写入定时任务系统中

17、定时任务系统中以请求其他配合系统接口的方式,与自动化巡检任务有效结合。

18、利用macaron.context管理任务流程,开始执行任务之前轮询设备当前状态,非空闲状态下继续轮询等待,设备空闲立即占用设备,在执行队列中加入任务,创建log日志空间,利用context.context控制执行进程,执行失败发送邮件通知,执行成功读取终端输出为taskresult存入日志并释放设备。

19、执行器方面基于python语言,脱离airtest ide,用python跨平台进行ui自动化测试,生成聚合报告。

20、执行进程由ctx控制,随时可控制停止任务,除执行成功由执行器配置自行发送邮件外,其他情况下由定时任务后台以执行器中建立log文件夹的模式读取节点log中的报告,由template依赖包写入模板页面,以页面内容为内容发送邮件。

21、本专利技术的有益效果是

22、实现了利用定时任务与python ui自动化巡检结合,有效利用空闲设备定时执行巡检,解决了定时任务执行时设备占用冲突的问题;解决了定时任务超时执行后进程累积无法有效清理进程与强制清理进程后无法发送邮件通知的问题;解决了设备执行定时任务过程中被人为占用导致任务执行失败或人为占用设备时被即将开始的使用此设备的定时任务打断占用的问题,实现由多线程分管任务流程,有效控制执行器脱离airtest ide利用python跨平台进行ui自动化测试并生成聚合报告,定时任务管理系统与执行器配合实现所有执行结果成功发送结果邮件通知的完整自动化巡检流程。

本文档来自技高网...

【技术保护点】

1.一种基于gocron的定时巡检任务实现系统,其特征在于,

2.根据权利要求1所述的系统,其特征在于,

3.根据权利要求1所述的系统,其特征在于,

4.根据权利要求1所述的系统,其特征在于,

5.根据权利要求1所述的系统,其特征在于,

6.根据权利要求1所述的系统,其特征在于,

7.根据权利要求1所述的系统,其特征在于,

8.根据权利要求1所述的系统,其特征在于,

【技术特征摘要】

1.一种基于gocron的定时巡检任务实现系统,其特征在于,

2.根据权利要求1所述的系统,其特征在于,

3.根据权利要求1所述的系统,其特征在于,

4.根据权利要求1所述的系统,其特征在于...

【专利技术属性】
技术研发人员:苏爽袁哲张皓钦
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1