问答 关于 jacoco 的 tcpclient 模式,如何获得服务器上的报告

xiaote · 2018年09月02日 · 最后由 kell 回复于 2018年10月29日 · 910 次阅读

jacoco的覆盖率获得有file tcpserver tcpclient三种模式。但是公司的服务器是docker动态分配的,有空闲的资源就把服务分布过去,所以服务器的ip不确定,不能用tcpserver和file模式。现在考虑用tcpclient的形式来获得,个人不太清楚这种模式下要如何拿到jacoco.exec?是需要自己写一个server么?求各位大神不吝赐教啊!

共收到 8 条回复 时间 点赞

你用域名不就行了? 另外也可以改造下,反向推送出去。

就是因为运维说用域名不行才想到了用tcpclient的模式。想问下,改造是改的哪里?

我试了源码的ExecutionDataServer启动了server,不过每次跑出来的结果都是空的。。

ip动态没关系,你们有cmdb系统么?封装个根据应用取IP的接口就行了。

我记得用法是差不多的,只不过你需要先启动一个本地监听的服务器,jacoco本身有提供,类名是ExecutionDataServer.java,需要配置远程服务器地址和本地的监听端口。服务器上需要配置启动监听的服务器地址和端口。覆盖率数据会自动上传到你监听服务器设定的路径里,并生成exec文件。

独缺 回复

没错,这个我试过了,不过一开始exec文件一直只有头内容,我把服务器jvm停掉后就会触发钩子写进exec文件了。不知道是不是client这种模式也是要停jvm的,还是我哪里做的有问题?

tcpserver设置动态覆盖率收集,手动调用dump出exec文件,可以不停jvm。tcpclient原理应该差不多吧,没试过。

xiaote 回复

试验了一下还真得不行,不知楼主解决了没

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册