ProHoster > Blog > Pangangasiwa > Pagpapatakbo ng mga pagsubok sa JMeter sa OpenShift gamit ang Jenkins Pipeline
Pagpapatakbo ng mga pagsubok sa JMeter sa OpenShift gamit ang Jenkins Pipeline
Kumusta sa lahat!
Sa artikulong ito gusto kong ibahagi ang isa sa mga paraan upang magpatakbo ng mga pagsubok sa pagganap ng JMeter sa OpenShift gamit ang Jenkins bilang automation. Una gagawin namin ang lahat ng kinakailangang hakbang (paglikha ImageStreams, BuildConfig, Job atbp.) sa manual mode. Pagkatapos nito, isulat natin ang Jenkins Pipeline.
Bilang panimulang punto dapat tayong magkaroon ng:
nagpapatakbo ng OpenShift (v3.11) cluster
Jenkins server na may mga naka-configure na kredensyal para gumana sa OpenShift
file apache-jmeter-5.2.tgz
Bilang mga pagsubok ito ay magiging simple HTTP Request sa ya.ru sa isang batis.
Paglikha ng isang proyekto sa OpenShift
Magsimula tayo sa paglikha ng isang bagong kapaligiran. Lumikha tayo perftest napapaligiran ng isang pangkat:
jmeter-web Ito ay isang Apache web server. Ang gawain nito ay magbigay ng isang direktoryo na may mga resulta ng pagsubok para sa pagtingin.
Inihanda Dockerfile at configuration file httpd.conf. Para sa direktiba DocumentRoot itinakda ang halaga /jmeter/reports, ibig sabihin. ang direktoryo kung saan naka-save ang mga resulta ng pagsubok.
dockerfile
$ tee Dockerfile<<EOF
FROM httpd:2.4
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
RUN chmod -R 777 /usr/local/apache2/logs
EXPOSE 8080
CMD ["httpd", "-D", "FOREGROUND"]
EOF
run.sh ito ay isang script na nagpapatakbo ng JMeter at nagse-save ng mga resulta sa isang direktoryo files.
Sa bawat oras na ilulunsad ang script, tinatanggal nito ang mga nakaraang pagsubok, kaya maaari ka lamang gumana sa pinakabagong data. Ngunit ito ay hindi isang problema, dahil maaari mong baguhin ito upang umangkop sa iyong mga pangangailangan.
#!/bin/bash
set -e
if [ -d "/jmeter/reports/files" ]
then
echo "Directory /jmeter/reports/files exist - OK"
else
echo "Creating /jmeter/reports/files directory"
mkdir /jmeter/reports/files
fi
if [ -d "/jmeter/reports/dashboards" ]
then
echo "Directory /jmeter/reports/dashboards exist"
else
echo "Creating /jmeter/reports/dashboards directory"
mkdir /jmeter/reports/dashboards
fi
echo "*** JMeter START Tests ***"
for item in $(ls -1 /jmeter/tests | grep jmx)
do
echo "*** Removing dashboard directory for $item"
rm -rdf /jmeter/reports/dashboards/${item}*
echo "*** Removing tests directory for $item"
rm -rdf /jmeter/reports/files/${item}*
echo "*** Testing a $item file ***"
jmeter -n -t /jmeter/tests/${item} -l /jmeter/reports/files/${item}-report.jtl -e -o /jmeter/reports/dashboards/${item}-dash
done
Job's ay ginagamit sa OpenShift'e upang magpatakbo ng isa o higit pa POD's at ginagarantiyahan ang kanilang matagumpay na pagkumpleto pagkatapos isagawa ang command/script.
Pagkatapos makumpleto ng Pipeline ang operasyon nito, makakatanggap kami ng notification sa pamamagitan ng email '[email protected] mula sa [email protected].
Sa pamamagitan ng pag-click sa link http://jmeter-web.127.0.0.1.nip.io/ makikita natin ang direktoryo files, na nag-iimbak ng mga ulat ng pagsubok:
Mga nilalaman ng file ya.HTTP.Request.jmx-report.jtk:
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1597311456443,569,Yandex - HTTP Request,200,Ok,Thread Group 1-1,text,true,,59449,220,1,1,https://ya.ru/,145,0,57
1597311456443,147,Yandex - HTTP Request-0,302,Found,Thread Group 1-1,,true,,478,110,1,1,http://ya.ru/,145,0,57
1597311456592,420,Yandex - HTTP Request-1,200,Ok,Thread Group 1-1,text,true,,58971,110,1,1,https://ya.ru/,370,0,259
Konklusyon
Ipinakita ng artikulong ito ang isa sa mga opsyon para sa pagpapatakbo ng mga pagsubok sa JMeter sa kapaligiran ng OpenShift. Kinumpleto namin nang manu-mano ang lahat ng mga hakbang, pagkatapos ay ginawa namin ang Jenkins Pipeline upang i-automate ang proseso ng pagpapatakbo ng mga pagsubok.