基于spring数据抓取和数据回放实现方案
2018-08-10 16:49
681 查看
一、概要
如何线上的实际数据在测试环境进行回放。需要解决的问题1. 线上数据如何记录
2.线下数据如何回放
3.依赖第三方接口(甚至数据库)可以mock
声明:也许这并没有多大是使用价值
github: https://github.com/Athlizo/pheonix
二、phx
phx分为2个部分
phx-Recorder:用于抓取数据
phx-Replayer:把抓取的数据用于线下回放
难点:如何处理泛型,Optional,null(详细参考代码)
三、使用
第一步,总是在配置类加上@EnablePhx3.1 Phx-Recorder
1.在入口使用 @PhxEntry例(phx-test中的代码)
@PostMapping("/n") @PhxEntry(type = PhxTypeEnum.CONTROLLER) public Object n() throws SQLException { phService.creditRefundMoneyReady3(1234, null, null, "content".getBytes()); return "ok"; }
2.在需要mock的地方加上@PhxMock(类和方法名上都可以)
例
@PhxMock @Service public class PhDaoImpl implements PhDao { .... }
3.2 Phx-Replayer
@Autowired PhxReplayer phxReplayer; //一条调用记录 String aRecorder = 你的保存phx-recorder的地方 phxReplayer.replay(aRecorder);
四、例子
参考项目里的phx-test,启动spring boot,然后打开调动/n接口,模拟线上输入然后标准IO会输出,就是本次调用记录的东西,参考代码在
注1:好吧,我这里没实现怎么保存,就简单打印出来,你们可以把他保存到数据库,文件都可以
注2:key太长了,可以简写
real call //注,证明真的是调用phDao里面的方法
{"abstractPhxMocks":[{"className":"com.enniu.phx.service.PhDaoImpl","methodName":"testMock3","mocked":false,"phxParameters":[{"clz":"@null","val":"null"},{"clz":"java.lang.Integer","val":"1"}],"phxResult":{"clz":"com.enniu.phx.service.PhDo","exception":false,"val":"{\"autoId\":2}"},"uid":"3682431e-0861-4f02-bddb-f12ce16ecd41"}],"entry":{"className":"com.enniu.phx.Application","methodName":"n","phxParameters":[],"phxResult":{"clz":"java.lang.String","exception":false,"val":"\"ok\""}},"type":"CONTROLLER"}
然后把上面json复制,调用/check
这下看到并没有打印 real call
为了说明,回放失败,我把上面的json改一下
在调用一下 check,会发现抛出了 回放失败的异常
相关文章推荐
- 基于crawler4j的数据抓取实现方案
- Android基于WIFI实现电脑和手机间数据传输的技术方案研究
- 基于maven的spring boot 项目porm文件配置(含定时器,数据抓取,分词器依赖配置)
- Android基于WIFI实现电脑和手机间数据传输的技术方案研究
- Android基于WIFI实现电脑和手机间数据传输的技术方案研究
- 基于Spring3 MVC实现基于form表单上传Excel文件,批量导入数据!
- 基于Spring3 MVC实现批量导出数据成Excel文件!
- 基于tomcat与Spring的实现差异化配置方案
- JSP实现的分页(基于spring2.5)适合轻量级数据量
- 基于Spring的MyBatis读写分离实现方案
- 一个基于Spring.net AOP实现的安全方案
- Python基于多线程实现抓取数据存入数据库的方法
- 基于spring实现的restful webservice返回json数据
- Android基于WIFI实现电脑和手机间数据传输的技术方案研究
- 基于Spring的异步系统实现方案
- 基于mysql5.6实现的同城多IDC间的mysql部分库表数据复制方案
- 基于Spring3 MVC实现基于form表单上传Excel文件,批量导入数据时,报错:Unable to recognize OLE stream !
- 基于ExtJs6前台,SpringMVC-Spring-Mybatis,resteasy,mysql无限极表设计,实现树状展示数据(treepanel)
- Android基于WIFI实现电脑和手机间数据传输的技术方案研究
- 一种基于 SOA 的应用程序的动态实现框架方案