CN113377361B - 一种基于linux的crontad和jar包实现定时校验数据源的方法 - Google Patents

一种基于linux的crontad和jar包实现定时校验数据源的方法 Download PDF

Info

Publication number
CN113377361B
CN113377361B CN202110721093.7A CN202110721093A CN113377361B CN 113377361 B CN113377361 B CN 113377361B CN 202110721093 A CN202110721093 A CN 202110721093A CN 113377361 B CN113377361 B CN 113377361B
Authority
CN
China
Prior art keywords
data
data source
key
empty
linux
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110721093.7A
Other languages
English (en)
Other versions
CN113377361A (zh
Inventor
唐科伟
杨晓玲
汪江舟
叶剑涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Fulin Technology Co ltd
Original Assignee
Zhejiang Fulin Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Fulin Technology Co ltd filed Critical Zhejiang Fulin Technology Co ltd
Priority to CN202110721093.7A priority Critical patent/CN113377361B/zh
Publication of CN113377361A publication Critical patent/CN113377361A/zh
Application granted granted Critical
Publication of CN113377361B publication Critical patent/CN113377361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于linux的crontad和jar包实现定时校验数据源的方法。本方法具体为:配置linux系统的的定时任务crontab,在定时任务中配置所要执行的shell脚本;shell脚本中编写执行脚本的shell命令,调用jar包,并传入相应的参数;根据传入的参数去请求获取数据源数据的第三方接口,获取数据;数据传入对应的方法中;判断执行结果是否为空,为空的话则没有异常数据,不发送钉钉群消息,不为空的话则有异常数据,发送钉钉群消息。本发明的有益效果是:解决了对于数据源字段较多,且数据结构复杂的情况下,数据提供方对数据做修改的时候的校验及感知问题,且可以将有问题的数据通知到钉钉的群中,以便于通知相关用户可以及时的检查该数据源数据的变动。

Description

一种基于linux的crontad和jar包实现定时校验数据源的 方法
技术领域
本发明涉及java应用与测试开发相关技术领域,尤其是指一种基于linux的crontad和jar包实现定时校验数据源的方法。
背景技术
为了确保业务的正常,需要确保第三方数据源的数据的可靠性,而对于部分返回数据结构复杂且字段繁多的数据源,无法做到定期的去校验检查该数据源的字段或数据结构是否有变化。
发明内容
本发明是为了克服现有技术中存在上述的不足,提供了一种能够定期检验检查的基于linux的crontad和jar包实现定时校验数据源的方法。
为了实现上述目的,本发明采用以下技术方案:
一种基于linux的crontad和jar包实现定时校验数据源的方法,具体包括如下步骤:
(1)配置执行shell脚本时所用到的命令,在linux系统/etc/profile配置JAVA_HOME,在linux系统/root/.bash_profile配置JAVA_HOME和命令的所在路径;
(2)编辑linux系统中的/etc/crontab文件,设置定时任务,任务中包括执行shell脚本的时间,时间精确到分钟和所要执行的shell脚本的名称,以及执行shell脚本时产生日志的路径和文件名;
(3)编写shell脚本,在shell脚本开头编写执行步骤(1)中的文件及命令,紧接着编写执行jar包的命令,并将所需的参数紧跟在执行jar包命令之后,其中多个参数中间用空格隔开;
(4)jar包执行的时候默认执行的是jar包中的main方法,main方法所接收的参数是步骤(3)所输入的参数;
(5)main方法根据参数将会去请求第三方获取数据源数据的接口,获取相应数据源的数据;
(6)main方法在步骤(5)获取到数据后,会根据步骤(3)所传入的参数,路由到对应的数据校验的方法中;
(7)数据源校验的方法中,首先根据预期的数据结构和传入的数据源进行比对,传入的数据源中存在预期的数据结构则将该条记录去掉;
(8)验证关键字段的数据类型及数据范围,将关键字段按照相应的数据结构取出,然后校验取出字段的数据类型和数据范围,数据类型和数据范围不是符合预期的话,则将该字段记录下来;
(9)判断步骤(7)和步骤(8)的记录中是否为空,不为空的话,发送消息到预警的群中,发送的消息包括步骤(7)和步骤(8)中的记录;为空的话,不会发送消息。
该方法包括,每天定时去调用数据源验证的jar包,从而执行数据源验证的方法,jar包中包括从一开始的调用第三方的获取数据源数据的http的接口,再将获取到的数据源的数据路由到,相应的数据源验证方法中,该方法中首先根据数据源先进行提取数据结构,根据预期的数据结构和提取出的数据结构做对比,将预期的数据结构中存在,但是提取出的数据结构中不存在的数据结构记录下来,然后在根据数据源提取关键字段,进行关键字段的数据类型和数据有效范围做校验,若是不符合预期,则记录下来,最后通过钉钉将以上的记录发送到相应的群中。本发明致力于解决无法定期去校验检查,数据源返回的数据结构复杂且繁多的问题,通过本发明解决了对于数据源字段较多,且数据结构复杂的情况下,数据提供方对数据做修改的时候的校验及感知问题,且可以将有问题的数据通知到钉钉的群中,以便于通知相关用户可以及时的检查该数据源数据的变动。
作为优选,在步骤(4)和步骤(5)中,通过传入的参数,定义了所需数据源的数据的时间和某个数据源,再通过http的get请求,请求第三方的数据源,获取到相应的时间的相应数据源的数据。
作为优选,在步骤(7)中,预期的数据结构和传入的数据源之间的对比涉及到以下步骤:
(71)将json中有预期有效字段的key以“/”做为分隔编辑好其上下级关系,做为数据结构;
(72)将预期有效字段的数据结构放到Set数组中;
(73)将获取到的数据源的数据用fastjson中的数据结构获取到该数据的数据结构的list数组;
(74)将步骤(73)获取到的数据结构的list数组,转成set数组集合;
(75)将步骤(72)的set数组去移除步骤(4)中的set数组集合。
作为优选,在步骤(8)中,用fastjson获取到关键字段的value的object用该objectinstanceof数据的类型,包括Integer/Double/String/Long类型,是同一数据类型返回true,不是同一数据类型返回false,返回false的value对应的key记录在一个新的list集合中。
作为优选,在步骤(8)中,用fastjson获取到关键字段的value的object,先判断object的数据类型,是Integer类型的则用Integer的方法比较该value的数据范围,是Double类型的则用Double的方法比较该value的数据范围,在范围内的返回true,不在范围内的返回false,返回false的value对应的key记录在一个新的list集合中。
作为优选,在步骤(9)中,根据步骤(75)得到的数据结构的set数组集合放入到群消息发送的content中。
作为优选,在步骤(9)中,根据步骤(8)得到数据类型不符合预期的key的list集合放入到群消息发送的content中。
作为优选,在步骤(9)中,根据步骤(8)得到数据类型不符合预期的key的list集合放入到群消息发送的content中。
作为优选,在步骤(9)中,根据得到的set数组集合,判断set是否为空,为空则不发送消息,不为空则发送消息。
作为优选,在步骤(9)中,根据得到的list集合,判断list是否为空,为空则不发送消息,不为空则发送消息。
本发明的有益效果是:解决了对于数据源字段较多,且数据结构复杂的情况下,数据提供方对数据做修改的时候的校验及感知问题,且可以将有问题的数据通知到钉钉的群中,以便于通知相关用户可以及时的检查该数据源数据的变动。
附图说明
图1是本发明的方法流程图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
如图1所述的实施例中,一种基于linux的crontad和jar包实现定时校验数据源的方法,具体包括如下步骤:
(1)配置执行shell脚本时所用到的命令,在linux系统/etc/profile配置JAVA_HOME,在linux系统/root/.bash_profile配置JAVA_HOME和命令的所在路径;
(2)编辑linux系统中的/etc/crontab文件,设置定时任务,任务中包括执行shell脚本的时间,时间精确到分钟和所要执行的shell脚本的名称,以及执行shell脚本时产生日志的路径和文件名;
(3)编写shell脚本,在shell脚本开头编写执行步骤(1)中的文件及命令,紧接着编写执行jar包的命令,并将所需的参数紧跟在执行jar包命令之后,其中多个参数中间用空格隔开;
(4)jar包执行的时候默认执行的是jar包中的main方法,main方法所接收的参数是步骤(3)所输入的参数;
(5)main方法根据参数将会去请求第三方获取数据源数据的接口,获取相应数据源的数据;通过传入的参数,定义了所需数据源的数据的时间和某个数据源,再通过http的get请求,请求第三方的数据源,获取到相应的时间的相应数据源的数据;
(6)main方法在步骤(5)获取到数据后,会根据步骤(3)所传入的参数,路由到对应的数据校验的方法中;
(7)数据源校验的方法中,首先根据预期的数据结构(jsonPath)和传入的数据源(jsonPath)进行比对,传入的数据源中存在预期的数据结构(jsonPath)则将该条记录去掉;预期的数据结构和传入的数据源之间的对比涉及到以下步骤:
(71)将json中有预期有效字段的key以“/”做为分隔编辑好其上下级关系,做为数据结构;
(72)将预期有效字段的数据结构放到Set数组中;
(73)将获取到的数据源的数据用fastjson中的数据结构获取到该数据的数据结构的list数组;
(74)将步骤(73)获取到的数据结构的list数组,转成set数组集合;
(75)将步骤(72)的set数组去移除步骤(4)中的set数组集合;
(8)验证关键字段的数据类型及数据范围,将关键字段按照相应的数据结构(jsonPath)取出,然后校验取出字段的数据类型和数据范围,数据类型和数据范围不是符合预期的话,则将该字段记录下来;用fastjson获取到关键字段的value的object用该objectinstanceof数据的类型,包括Integer/Double/String/Long类型,是同一数据类型返回true,不是同一数据类型返回false,返回false的value对应的key记录在一个新的list集合中;用fastjson获取到关键字段的value的object,先判断object的数据类型,是Integer类型的则用Integer的方法比较该value的数据范围,是Double类型的则用Double的方法比较该value的数据范围,在范围内的返回true,不在范围内的返回false,返回false的value对应的key记录在一个新的list集合中;
(9)判断步骤(7)和步骤(8)的记录中是否为空,不为空的话,发送消息到预警的钉钉群中,发送的消息包括步骤(7)和步骤(8)中的记录;为空的话,不会发送消息;根据步骤(75)得到的数据结构的set数组集合放入到钉钉群消息发送的content中;根据步骤(8)得到数据类型不符合预期的key的list集合放入到钉钉群消息发送的content中;根据得到的set数组集合,判断set是否为空,为空则不发送消息,不为空则发送消息;根据得到的list集合,判断list是否为空,为空则不发送钉钉消息,不为空则发送钉钉消息。
简而言之,本方法主要为:配置linux系统的的定时任务crontab,在定时任务中配置所要执行的shell脚本;shell脚本中编写执行脚本的shell命令,调用jar包,并传入相应的参数;根据传入的参数去请求获取数据源数据的第三方接口,获取数据;数据传入对应的方法中;判断执行结果是否为空,为空的话则没有异常数据,不发送钉钉群消息,不为空的话则有异常数据,发送钉钉群消息。
该方法包括,每天定时去调用数据源验证的jar包,从而执行数据源验证的方法,jar包中包括从一开始的调用第三方的获取数据源数据的http的接口,再将获取到的数据源的数据路由到,相应的数据源验证方法中,该方法中首先根据数据源先进行提取数据结构,根据预期的数据结构和提取出的数据结构做对比,将预期的数据结构中存在,但是提取出的数据结构中不存在的数据结构记录下来,然后在根据数据源提取关键字段,进行关键字段的数据类型和数据有效范围做校验,若是不符合预期,则记录下来,最后通过钉钉将以上的记录发送到相应的群中。本发明致力于解决无法定期去校验检查,数据源返回的数据结构复杂且繁多的问题,通过本发明解决了对于数据源字段较多,且数据结构复杂的情况下,数据提供方对数据做修改的时候的校验及感知问题,且可以将有问题的数据通知到钉钉的群中,以便于通知相关用户可以及时的检查该数据源数据的变动。

Claims (7)

1.一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,具体包括如下步骤:
(1)配置执行shell脚本时所用到的命令,在linux系统/etc/profile配置JAVA_HOME,在linux系统/root/.bash_profile配置JAVA_HOME和命令的所在路径;
(2)编辑linux系统中的/etc/crontab文件,设置定时任务,任务中包括执行shell脚本的时间,时间精确到分钟和所要执行的shell脚本的名称,以及执行shell脚本时产生日志的路径和文件名;
(3)编写shell脚本,在shell脚本开头编写执行步骤(1)中的文件及命令,紧接着编写执行jar包的命令,并将所需的参数紧跟在执行jar包命令之后,其中多个参数中间用空格隔开;
(4)jar包执行的时候默认执行的是jar包中的main方法,main方法所接收的参数是步骤(3)所输入的参数;
(5)main方法根据参数将会去请求第三方获取数据源数据的接口,获取相应数据源的数据;
(6)main方法在步骤(5)获取到数据后,会根据步骤(3)所传入的参数,路由到对应的数据校验的方法中;
(7)数据源校验的方法中,首先根据预期的数据结构和传入的数据源进行比对,传入的数据源中存在预期的数据结构则将该存在的数据结构去掉;预期的数据结构和传入的数据源之间的对比涉及到以下步骤:
(71)将json中有预期有效字段的key以“/”做为分隔编辑好其上下级关系,做为数据结构;
(72)将预期有效字段的数据结构放到set数组中;
(73)将获取到的数据源的数据用fastjson中的数据结构获取到该数据的数据结构的list数组;
(74)将步骤(73)获取到的数据结构的list数组,转成set数组集合;
(75)将步骤(72)的set数组去移除步骤(74)中的set数组集合;
(8)验证关键字段key的数据类型及数据范围,将关键字段key按照相应的数据结构取出,然后校验取出字段的数据类型和数据范围,数据类型和数据范围不是符合预期的话,则将该字段记录下来;用fastjson获取到关键字段key的value的object,用该objectinstanceof数据的类型来判断object的数据类型,包括Integer、Double、String和Long类型,是同一数据类型返回true,不是同一数据类型返回false,返回false的value对应的key记录在一个新的list集合中;用fastjson获取到关键字段key的value的object,先判断object的数据类型,是Integer类型的则用Integer的方法比较该value的数据范围,是Double类型的则用Double的方法比较该value的数据范围,在范围内的返回true,不在范围内的返回false,返回false的value对应的key记录在一个新的list集合中;
(9)判断步骤(7)和步骤(8)的记录中是否为空,不为空的话,发送消息到预警的群中,发送的消息包括步骤(7)和步骤(8)中的记录;为空的话,不会发送消息。
2.根据权利要求1所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(4)和步骤(5)中,通过传入的参数,定义了所需数据源的数据的时间和某个数据源,再通过http的get请求,请求第三方的数据源,获取到相应的时间的相应数据源的数据。
3.根据权利要求1所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据步骤(75)得到的数据结构的set数组集合放入到群消息发送的content中。
4.根据权利要求1所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据步骤(8)得到数据类型不符合预期的key的list集合放入到群消息发送的content中。
5.根据权利要求1所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据步骤(8)得到数据范围不符合预期的key的list集合放入到群消息发送的content中。
6.根据权利要求3所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据得到的set数组集合,判断set是否为空,为空则不发送消息,不为空则发送消息。
7.根据权利要求4或5所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据得到的list集合,判断list是否为空,为空则不发送消息,不为空则发送消息。
CN202110721093.7A 2021-06-28 2021-06-28 一种基于linux的crontad和jar包实现定时校验数据源的方法 Active CN113377361B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110721093.7A CN113377361B (zh) 2021-06-28 2021-06-28 一种基于linux的crontad和jar包实现定时校验数据源的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110721093.7A CN113377361B (zh) 2021-06-28 2021-06-28 一种基于linux的crontad和jar包实现定时校验数据源的方法

Publications (2)

Publication Number Publication Date
CN113377361A CN113377361A (zh) 2021-09-10
CN113377361B true CN113377361B (zh) 2023-01-13

Family

ID=77579604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110721093.7A Active CN113377361B (zh) 2021-06-28 2021-06-28 一种基于linux的crontad和jar包实现定时校验数据源的方法

Country Status (1)

Country Link
CN (1) CN113377361B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108733818A (zh) * 2018-05-21 2018-11-02 上海世脉信息科技有限公司 一种基于多场景多数据源校验的大数据扩样方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112802B2 (en) * 2008-11-21 2012-02-07 At&T Intellectual Property I, Lp Verification of outsourced data streams
US8799754B2 (en) * 2009-12-07 2014-08-05 At&T Intellectual Property I, L.P. Verification of data stream computations using third-party-supplied annotations
US9582345B2 (en) * 2009-12-14 2017-02-28 Appfolio, Inc. Systems and methods for importing data from data sources over a network while correcting and transforming the data
CN106940695B (zh) * 2016-01-05 2020-06-26 阿里巴巴集团控股有限公司 数据源信息的校验方法及装置
CN109656744A (zh) * 2017-10-11 2019-04-19 北京京东尚科信息技术有限公司 基于Java注解实现数据校验和注入的方法和装置
CN111400187B (zh) * 2020-03-19 2023-03-14 重庆富民银行股份有限公司 基于定制数据源的参数动态化校验系统及方法
CN112287009A (zh) * 2020-11-03 2021-01-29 平安普惠企业管理有限公司 接口调用和接口数据入库方法、装置、设备及存储介质
CN112269706B (zh) * 2020-11-16 2024-04-05 北京百度网讯科技有限公司 接口参数校验方法、装置、电子设备以及计算机可读介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108733818A (zh) * 2018-05-21 2018-11-02 上海世脉信息科技有限公司 一种基于多场景多数据源校验的大数据扩样方法

Also Published As

Publication number Publication date
CN113377361A (zh) 2021-09-10

Similar Documents

Publication Publication Date Title
US10409711B2 (en) Automatically running tests against WEB APIs based on specifications
US10474519B2 (en) Server fault analysis system using event logs
US8832680B2 (en) Installation event counting apparatus and package creation method
CN111162972B (zh) 基于语义分析的车载以太网协议栈自动化测试方法
US20200327045A1 (en) Test System and Test Method
CN108628748B (zh) 自动化测试管理方法和自动化测试管理系统
CN110888838B (zh) 基于对象存储的请求处理方法、装置、设备及存储介质
WO2019051948A1 (zh) 监控数据的处理方法、设备、服务器及存储介质
WO2020232871A1 (zh) 一种微服务依赖分析方法及装置
CN108540533B (zh) 一种应答请求的方法和装置
CN108462598A (zh) 一种日志生成方法、日志分析方法及装置
CN111314174A (zh) 基于区块链和sdn边缘计算网络系统的网络拨测方法及装置
CN113377361B (zh) 一种基于linux的crontad和jar包实现定时校验数据源的方法
CN111371811B (zh) 一种资源调用方法、资源调用装置、客户端及业务服务器
CN113761079A (zh) 数据访问方法、系统和存储介质
CN109214189B (zh) 识别程序漏洞的方法、装置、存储介质和电子设备
CN112699000A (zh) 数据处理方法、装置、可读存储介质和电子设备
US9374437B2 (en) Schema validation proxy
CN116483899A (zh) 融合服务接口的调用方法及其装置、电子设备及存储介质
CN111866995B (zh) 一种基于微信小程序的智能设备配网方法及系统
CN110740151B (zh) 一种微服务调整方法、装置、服务器及计算机存储介质
CN109150893B (zh) 一种服务请求转发方法及相关装置
WO2015192497A1 (zh) 通信链路的发送方法、装置及终端
CN113138861A (zh) 基于设备服务系统的消息处理方法、系统及存储介质
CN115102943B (zh) 一种基于多通道的数据跨区传输方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Tang Kewei

Inventor after: Yang Xiaolin

Inventor after: Ye Jiantao

Inventor before: Tang Kewei

Inventor before: Yang Xiaoling

Inventor before: Wang Jiangzhou

Inventor before: Ye Jiantao