当前位置:网站首页>Quickly use Jacobo code coverage statistics
Quickly use Jacobo code coverage statistics
2022-07-07 07:58:00 【Wu_ Candy】
brief introduction
Jacoco Is an open source coverage tool .
Jacoco Can be embedded into Ant
、Maven
in , And provides EclEmma Eclipse
plug-in unit , You can also use JavaAgent
Technical monitoring Java Program
.
Many third-party tools provide access to Jacoco Integration of , Such as sonar、Jenkins etc. .
Today's sharing environment is :
k8s+jenkins
Built , It involves in node Generated in the container of the node machine jacoco.exec
file , Then copy it to the node machine , Then from the node machine jacoco.exec
File copy to jenkins
In the code base of , Used to generate reports .
Operation steps
**Step1:** Introduce the corresponding jar To the directory of application services , And modify the startup script of the application service that needs to be monitored
The following is in jenkins The corresponding application service deployment script is adjusted
echo ' cd /opt/ wget http://192.168.214.100:7777/jacoco/tools/jacocoagent.jar # Here a siampleHttp service , Used to get jar package wget http://192.168.214.100:7777/jacoco/tools/jacocoant.jar wget -O buildexec.xml http://192.168.214.100:7777/jacoco/buildexec/build.xml wget http://192.168.214.100:7777/jacoco/tools/cron.sh sh cron.sh& # See... Here step2 Script edited in sed -i "s#exec java#exec java -javaagent:/opt/jacocoagent.jar=includes=*,output=tcpserver,port=8044,address=127.0.0.1 -Xverify:none -javaagent:/opt/skywalking-agent/skywalking-agent.jar #g" /opt/mt/bin/startup.sh && cd /opt/mt/ && dos2unix -k start.sh && cd /opt/mt/bin/ && dos2unix -k startup.sh && sh startup.sh '> ./start.sh
Step2: It is used to generate jacoco.exec
this jacoco.exec
The file is one generated by the fetched code execution file exec file
, This file is just Step1 A script file required in .
[[email protected] tools]# more cron.sh
while true;do ant dump -buildfile buildexec.xml;sleep 60;done
Step3: stay jenkins
Pull the source code , The generated jacoco.exec
Copy the file , Then generate the final execution report
Here is one jenkins job
cd ../test-deploy
wget -O buildreport.xml http://192.168.214.100:7777/jacoco/buildreport/build_test_model.xml
wget -nc http://192.168.214.100:7777/jacoco/tools/jacocoant.jar
wget -nc http://192.168.214.100:7777/jacoco/tools/dlexec.sh
sh dlexec.sh testqyd test-model # Detailed see step4
ant report -buildfile ./buildreport.xml # Generate executed reports
open site:http://192.168.214.100:7777/jacoco/report/testqyd/test-model/jacocoReport/ # Open the report
Step4: from docker
In order to get jacoco.exec
file , And then on jenkins
Extract the source code directory
[[email protected]]# more dlexec.sh
platformname=$1
projectname=$2
echo " ############################################# # from node Node machine download jacoco.exec File execution script # ############################################# "
case $# in
0)
echo ""
;;
1)
ssh [email protected] "kubectl get pods -n $platformname -o wide"
;;
2)
pnip=`ssh 192.168.214.50 "kubectl --kubeconfig=/etc/kubernetes/kubelet.kubeconfig get pods -n $platformname -o wide|grep $projectname|awk '{print \\$7}'|head -1"`
if [ $pnip == '192.168.214.55' ];then
pnip='[email protected]'
rqid=`ssh $pnip "docker ps |grep $platformname/$projectname|awk '{print \\$1}'|head -1"`
ssh $pnip "docker cp $rqid:/opt/jacoco.exec /opt/test/jacoco.exec"
scp $pnip:/opt/test/jacoco.exec ./
elif [ $pnip == '192.168.214.56' ];then
pnip='[email protected]'
rqid=`ssh $pnip "docker ps |grep $platformname/$projectname|awk '{print \\$1}'|head -1"`
ssh $pnip "docker cp $rqid:/opt/jacoco.exec /opt/test/jacoco.exec"
scp $pnip:/opt/test/jacoco.exec ./
else
echo "not found!"
fi
;;
esac
Jenkins The execution effect diagram is shown in the following figure :
Welcome to your attention : The way of immeasurable testing
official account , reply : Claim resources
Python+Unittest frame API automation 、
Python+Unittest frame API automation 、
Python+Pytest frame API automation 、
Python+Pandas+Pyecharts Big data analysis 、
Python+Selenium frame Web Of UI automation 、
Python+Appium frame APP Of UI automation 、
Python Programming learning resources dry goods 、
Vue Front end component framework development 、
Resources and code Free ~
contain : Data analysis 、 big data 、 machine learning 、 Test Development 、API Interface automation 、 Test operation and maintenance 、UI automation 、 Performance testing 、 code detection 、 Programming technology, etc .
WeChat search official account : The way of immeasurable testing
, Add the attention , Let's grow together !
边栏推荐
- 【经验分享】如何为visio扩展云服务图标
- dash plotly
- LeetCode 90:子集 II
- 探索干货篇!Apifox 建设思路
- [UVM practice] Chapter 1: configuring the UVM environment (taking VCs as an example), run through the examples in the book
- Common validation comments
- Kbu1510-asemi power supply special 15A rectifier bridge kbu1510
- 2022 welder (elementary) judgment questions and online simulation examination
- Wechat applet data binding multiple data
- Asemi rectifier bridge rs210 parameters, rs210 specifications, rs210 package
猜你喜欢
QT learning 28 toolbar in the main window
[SUCTF 2019]Game
【p2p】本地抓包
Resource create package method
Ansible
leetcode:105. Constructing binary trees from preorder and inorder traversal sequences
【经验分享】如何为visio扩展云服务图标
Idea add class annotation template and method template
Sign up now | oar hacker marathon phase III, waiting for your challenge
json 数据展平pd.json_normalize
随机推荐
[advanced digital IC Verification] command query method and common command interpretation of VCs tool
Sign up now | oar hacker marathon phase III, waiting for your challenge
Chip information website Yite Chuangxin
Hands on deep learning (IV) -- convolutional neural network CNN
有 Docker 谁还在自己本地安装 Mysql ?
【数字IC验证快速入门】17、SystemVerilog学习之基本语法4(随机化Randomization)
php导出百万数据
[Stanford Jiwang cs144 project] lab3: tcpsender
Asemi rectifier bridge rs210 parameters, rs210 specifications, rs210 package
Ansible
Live online system source code, using valueanimator to achieve view zoom in and out animation effect
Live broadcast platform source code, foldable menu bar
大视频文件的缓冲播放原理以及实现
The configuration that needs to be modified when switching between high and low versions of MySQL 5-8 (take aicode as an example here)
Route jump in wechat applet
buuctf misc USB
[VHDL parallel statement execution]
mysql多列索引(组合索引)特点和使用场景
[webrtc] m98 Screen and Window Collection
[P2P] local packet capturing