CN113377361A - 一种基于linux的crontad和jar包实现定时校验数据源的方法 - Google Patents
一种基于linux的crontad和jar包实现定时校验数据源的方法 Download PDFInfo
- Publication number
- CN113377361A CN113377361A CN202110721093.7A CN202110721093A CN113377361A CN 113377361 A CN113377361 A CN 113377361A CN 202110721093 A CN202110721093 A CN 202110721093A CN 113377361 A CN113377361 A CN 113377361A
- Authority
- CN
- China
- Prior art keywords
- data
- data source
- linux
- empty
- message
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test 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
技术领域
本发明涉及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 (10)
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)数据源校验的方法中,首先根据预期的数据结构和传入的数据源进行比对,传入的数据源中存在预期的数据结构则将该条记录去掉;
(8)验证关键字段的数据类型及数据范围,将关键字段按照相应的数据结构取出,然后校验取出字段的数据类型和数据范围,数据类型和数据范围不是符合预期的话,则将该字段记录下来;
(9)判断步骤(7)和步骤(8)的记录中是否为空,不为空的话,发送消息到预警的群中,发送的消息包括步骤(7)和步骤(8)中的记录;为空的话,不会发送消息。
2.根据权利要求1所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(4)和步骤(5)中,通过传入的参数,定义了所需数据源的数据的时间和某个数据源,再通过http的get请求,请求第三方的数据源,获取到相应的时间的相应数据源的数据。
3.根据权利要求1所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(7)中,预期的数据结构和传入的数据源之间的对比涉及到以下步骤:
(71)将json中有预期有效字段的key以“/”做为分隔编辑好其上下级关系,做为数据结构;
(72)将预期有效字段的数据结构放到Set数组中;
(73)将获取到的数据源的数据用fastjson中的数据结构获取到该数据的数据结构的list数组;
(74)将步骤(73)获取到的数据结构的list数组,转成set数组集合;
(75)将步骤(72)的set数组去移除步骤(4)中的set数组集合。
4.根据权利要求1所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(8)中,用fastjson获取到关键字段的value的object用该objectinstanceof数据的类型,包括Integer/Double/String/Long类型,是同一数据类型返回true,不是同一数据类型返回false,返回false的value对应的key记录在一个新的list集合中。
5.根据权利要求4所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(8)中,用fastjson获取到关键字段的value的object,先判断object的数据类型,是Integer类型的则用Integer的方法比较该value的数据范围,是Double类型的则用Double的方法比较该value的数据范围,在范围内的返回true,不在范围内的返回false,返回false的value对应的key记录在一个新的list集合中。
6.根据权利要求3所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据步骤(75)得到的数据结构的set数组集合放入到群消息发送的content中。
7.根据权利要求4所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据步骤(8)得到数据类型不符合预期的key的list集合放入到群消息发送的content中。
8.根据权利要求5所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据步骤(8)得到数据类型不符合预期的key的list集合放入到群消息发送的content中。
9.根据权利要求6所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据得到的set数组集合,判断set是否为空,为空则不发送消息,不为空则发送消息。
10.根据权利要求7或8所述的一种基于linux的crontad和jar包实现定时校验数据源的方法,其特征是,在步骤(9)中,根据得到的list集合,判断list是否为空,为空则不发送消息,不为空则发送消息。
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 true CN113377361A (zh) | 2021-09-10 |
CN113377361B 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 (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100132036A1 (en) * | 2008-11-21 | 2010-05-27 | At&T Intellectual Property I, L.P. | Verification of outsourced data streams |
US20110138264A1 (en) * | 2009-12-07 | 2011-06-09 | Graham Robert Cormode | Verification Of Data Stream Computations Using Third-Party-Supplied Annotations |
US20110145636A1 (en) * | 2009-12-14 | 2011-06-16 | Klaus Schauser | Systems and methods for importing data from data sources over a network while correcting and transforming the data |
CN106940695A (zh) * | 2016-01-05 | 2017-07-11 | 阿里巴巴集团控股有限公司 | 数据源信息的校验方法及装置 |
CN108733818A (zh) * | 2018-05-21 | 2018-11-02 | 上海世脉信息科技有限公司 | 一种基于多场景多数据源校验的大数据扩样方法 |
CN109656744A (zh) * | 2017-10-11 | 2019-04-19 | 北京京东尚科信息技术有限公司 | 基于Java注解实现数据校验和注入的方法和装置 |
CN111400187A (zh) * | 2020-03-19 | 2020-07-10 | 重庆富民银行股份有限公司 | 基于定制数据源的参数动态化校验系统及方法 |
CN112269706A (zh) * | 2020-11-16 | 2021-01-26 | 北京百度网讯科技有限公司 | 接口参数校验方法、装置、电子设备以及计算机可读介质 |
CN112287009A (zh) * | 2020-11-03 | 2021-01-29 | 平安普惠企业管理有限公司 | 接口调用和接口数据入库方法、装置、设备及存储介质 |
-
2021
- 2021-06-28 CN CN202110721093.7A patent/CN113377361B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100132036A1 (en) * | 2008-11-21 | 2010-05-27 | At&T Intellectual Property I, L.P. | Verification of outsourced data streams |
US20110138264A1 (en) * | 2009-12-07 | 2011-06-09 | Graham Robert Cormode | Verification Of Data Stream Computations Using Third-Party-Supplied Annotations |
US20110145636A1 (en) * | 2009-12-14 | 2011-06-16 | Klaus Schauser | Systems and methods for importing data from data sources over a network while correcting and transforming the data |
CN106940695A (zh) * | 2016-01-05 | 2017-07-11 | 阿里巴巴集团控股有限公司 | 数据源信息的校验方法及装置 |
CN109656744A (zh) * | 2017-10-11 | 2019-04-19 | 北京京东尚科信息技术有限公司 | 基于Java注解实现数据校验和注入的方法和装置 |
CN108733818A (zh) * | 2018-05-21 | 2018-11-02 | 上海世脉信息科技有限公司 | 一种基于多场景多数据源校验的大数据扩样方法 |
CN111400187A (zh) * | 2020-03-19 | 2020-07-10 | 重庆富民银行股份有限公司 | 基于定制数据源的参数动态化校验系统及方法 |
CN112287009A (zh) * | 2020-11-03 | 2021-01-29 | 平安普惠企业管理有限公司 | 接口调用和接口数据入库方法、装置、设备及存储介质 |
CN112269706A (zh) * | 2020-11-16 | 2021-01-26 | 北京百度网讯科技有限公司 | 接口参数校验方法、装置、电子设备以及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113377361B (zh) | 2023-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111162972B (zh) | 基于语义分析的车载以太网协议栈自动化测试方法 | |
CN108628748B (zh) | 自动化测试管理方法和自动化测试管理系统 | |
WO2022016847A1 (zh) | 一种适用于云平台的自动化测试方法及装置 | |
CN110888838B (zh) | 基于对象存储的请求处理方法、装置、设备及存储介质 | |
US20200327045A1 (en) | Test System and Test Method | |
WO2020232871A1 (zh) | 一种微服务依赖分析方法及装置 | |
CN108540533B (zh) | 一种应答请求的方法和装置 | |
WO2019051948A1 (zh) | 监控数据的处理方法、设备、服务器及存储介质 | |
CN108462598A (zh) | 一种日志生成方法、日志分析方法及装置 | |
CN110737639A (zh) | 审计日志方法、装置、计算机设备及存储介质 | |
CN112953983A (zh) | Sftp传输方法及装置 | |
CN111314174A (zh) | 基于区块链和sdn边缘计算网络系统的网络拨测方法及装置 | |
CN108052440A (zh) | 对业务系统操作逻辑的修正方法、装置、设备和存储介质 | |
CN113158195B (zh) | 一种基于poc脚本的分布式漏洞扫描方法及系统 | |
CN113377361B (zh) | 一种基于linux的crontad和jar包实现定时校验数据源的方法 | |
US9374437B2 (en) | Schema validation proxy | |
CN112699000A (zh) | 数据处理方法、装置、可读存储介质和电子设备 | |
CN109214189B (zh) | 识别程序漏洞的方法、装置、存储介质和电子设备 | |
CN112883088A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN111866995B (zh) | 一种基于微信小程序的智能设备配网方法及系统 | |
CN114327981A (zh) | 一种功能安全机制的安全校验系统、方法及装置 | |
CN109150893B (zh) | 一种服务请求转发方法及相关装置 | |
CN110740151B (zh) | 一种微服务调整方法、装置、服务器及计算机存储介质 | |
WO2015192497A1 (zh) | 通信链路的发送方法、装置及终端 | |
CN111177097B (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 |