简体   繁体   中英

JMeter not running in ANT

I am struggling to understand the issue but unable to figure out. Here is my issue.

I have ANT_HOME , JMeter and Jenkins which are all in C: drive . When I run my project .jmx file using ant it works fine. Here I have put all my ANT configuration under \\extras folder. However if i copy the same set up into Jenkins then below jmeter element in build.xml is not being executed.

  <jmeter jmeterhome="${jmeter.home}" testplan ="${testpath}/${test}.jmx" resultlog="${logpath}/${test}.xml"> <!-- <jvmarg value="-Xincgc"/> <jvmarg value="-Xmx128m"/> <jvmarg value="-Dproperty=value"/> <jmeterarg value="-qextra.properties"/> --> <!-- Force suitable defaults --> <property name="jmeter.save.saveservice.output_format" value="xml"/> <property name="jmeter.save.saveservice.assertion_results" value="all"/> <property name="jmeter.save.saveservice.bytes" value="true"/> <property name="file_format.testlog" value="${format}"/> <property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/> </jmeter> </target> 

Please find more details of the location

ANT_HOME = C:\\apache-ant-1.9.11 ANT in JMeter path (this is running perfectly) = C:\\Jmeter\\apache-jmeter-4.0\\extras ANT in Jenkins path (issue) = C:\\Program Files (x86)\\Jenkins\\workspace\\JMeter_Run\\apache-jmeter-4.0\\extras

Below is the full build.xml snippet which is not working.

 <?xml version="1.0"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <project name="ant-jmeter" default="all"> <description> Sample build file for use with ant-jmeter.jar See http://www.programmerplanet.org/pages/projects/jmeter-ant-task.php To run a test and create the output report: ant -Dtest=script To run a test only: ant -Dtest=script run To run report on existing test output ant -Dtest=script report The "script" parameter is the name of the script without the .jmx suffix. Additional options: -Dshow-data=y - include response data in Failure Details -Dtestpath=xyz - path to test file(s) (default user.dir). NB Ant interprets relative paths against the build file -Djmeter.home=.. - C:/Jmeter/apache-jmeter-4.0 -Dreport.title="My Report" - title for html report (default is 'Load Test Results') </description> <property name="logdir" value="log"/> <property name="logpath" value="${user.dir}/${logdir}"/> <property name="testpath" value="${user.dir}"/> <property name="jmeter.home" value="${basedir}"/> <property name="report.title" value="Load Test Results"/> <!-- Name of test (without .jmx) --> <property name="test" value="MockTrading"/> <!-- Should report include response data for failures? --> <property name="show-data" value="n"/> <property name="format" value="2.1"/> <condition property="style_version" value="_21"> <equals arg1="${format}" arg2="2.1"/> </condition> <condition property="funcMode"> <equals arg1="${show-data}" arg2="y"/> </condition> <condition property="funcMode" value="false"> <not> <equals arg1="${show-data}" arg2="y"/> </not> </condition> <!-- Allow jar to be picked up locally --> <path id="jmeter.classpath"> <fileset dir="${basedir}"> <include name="ant-jmeter*.jar"/> </fileset> </path> <taskdef name="jmeter" classpathref="jmeter.classpath" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/> <target name="all" depends="run,report"/> <target name="run"> <echo>funcMode = ${funcMode}</echo> <delete file="${logpath}/${test}.html"/> <jmeter jmeterhome="${jmeter.home}" testplan ="${testpath}/${test}.jmx" resultlog="${logpath}/${test}.xml"> <!-- <jvmarg value="-Xincgc"/> <jvmarg value="-Xmx128m"/> <jvmarg value="-Dproperty=value"/> <jmeterarg value="-qextra.properties"/> --> <!-- Force suitable defaults --> <property name="jmeter.save.saveservice.output_format" value="xml"/> <property name="jmeter.save.saveservice.assertion_results" value="all"/> <property name="jmeter.save.saveservice.bytes" value="true"/> <property name="file_format.testlog" value="${format}"/> <property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/> </jmeter> </target> <property name="lib.dir" value="${jmeter.home}/lib"/> <!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ --> <path id="xslt.classpath"> <fileset dir="${lib.dir}" includes="xalan*.jar"/> <fileset dir="${lib.dir}" includes="serializer*.jar"/> </path> <target name="report" depends="xslt-report,copy-images"> <echo>Report generated at ${report.datestamp}</echo> </target> <target name="xslt-report" depends="_message_xalan"> <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp> <xslt classpathref="xslt.classpath" force="true" in="${logpath}/${test}.xml" out="${logpath}/${test}.html" style="${basedir}/jmeter-results-detail-report${style_version}.xsl"> <param name="showData" expression="${show-data}"/> <param name="titleReport" expression="${report.title}"/> <param name="dateReport" expression="${report.datestamp}"/> </xslt> </target> <!-- Copy report images if needed --> <target name="copy-images" depends="verify-images" unless="samepath"> <copy file="${basedir}/expand.png" tofile="${logpath}/expand.png"/> <copy file="${basedir}/collapse.png" tofile="${logpath}/collapse.png"/> </target> <target name="verify-images"> <condition property="samepath"> <equals arg1="${testpath}" arg2="${basedir}" /> </condition> </target> <!-- Check that the xalan libraries are present --> <condition property="xalan.present"> <and> <!-- No need to check all jars; just check a few --> <available classpathref="xslt.classpath" classname="org.apache.xalan.processor.TransformerFactoryImpl"/> <available classpathref="xslt.classpath" classname="org.apache.xml.serializer.ExtendedContentHandler"/> </and> </condition> <target name="_message_xalan" unless="xalan.present"> <echo>Cannot find all xalan and/or serialiser jars</echo> <echo>The XSLT formatting may not work correctly.</echo> <echo>Check you have xalan and serializer jars in ${lib.dir}</echo> </target> </project> 

Below is the output

 C:\\Program Files (x86)\\Jenkins\\workspace\\JMeter_Run\\apache-jmeter-4.0\\extras>ant Buildfile: C:\\Program Files (x86)\\Jenkins\\workspace\\JMeter_Run\\apache-jmeter-4.0\\extras\\build.xml run: [echo] funcMode = false [delete] Deleting: C:\\Program Files (x86)\\Jenkins\\workspace\\JMeter_Run\\apache-jmeter-4.0\\extras\\log\\MockTrading.html [jmeter] Executing test plan: C:\\Program Files (x86)\\Jenkins\\workspace\\JMeter_Run\\apache-jmeter-4.0\\extras\\MockTrading.jmx ==> C:\\Program Files (x86)\\Jenkins\\workspace\\JMeter_Run\\apache-jmeter-4.0\\extras\\log\\MockTrading.xml _message_xalan: xslt-report: [xslt] Processing C:\\Program Files (x86)\\Jenkins\\workspace\\JMeter_Run\\apache-jmeter-4.0\\extras\\log\\MockTrading.xml to C:\\Program Files (x86)\\Jenkins\\workspace\\JMeter_Run\\apache-jmeter-4.0\\extras\\log\\MockTrading.html [xslt] Loading stylesheet C:\\Program Files (x86)\\Jenkins\\workspace\\JMeter_Run\\apache-jmeter-4.0\\extras\\jmeter-results-detail-report_21.xsl 

Finally I spotted out the issue. Here is the solution I found.

Jenkins will look after build.xml in the workspace and not any sub folders. The same path should be configured in the Jenkins->Job->Configure->ANT build path

All supporting lib and bin folder should be in workspace without creating any sub folder

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM