0
votes

I have successfully integrate Apache ant & Configured it. I am using Jmeter for load testing.

Now I was trying to generate HTML report of load testing and it was working fine until I have deleted test.jmx and test.html was there in folder C:\apache-ant-1.9.6\bin

But as my test plan name and JTL files name is different , I have deleted above test.jmx and test.html and specified name in build.xml:

testplan ="${testpath}/${mytestplanname}.jmx"

 resultlog="${testpath}/${mytest}.jtl">

But now after completing load testing when I run ant command then it says :

Cound not found C:\apache-ant-1.9.6\bin\test.jmx

No sure why it is still finding test file , it should find name which I have specified in in built.xml.

I want this ant script to generate HTML report of my current test rather than it's "TEST.jmx" plan

BUILD.XML is given here :

<?xml version="1.0"?>

   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.
   -->

    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).
                     N.B. Ant interprets relative paths against the build file
    -Djmeter.home=.. - path to JMeter home directory (defaults to parent of this build file)
    -Dreport.title="My Report" - title for html report (default is 'Load Test Results')

    Deprecated:
    -Dformat=2.0 - use version 2.0 JTL files rather than 2.1

</description>

<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="Test"/>

<!-- Should report include response data for failures? -->
<property name="show-data" value="n"/>

<property name="format" value="2.1"/>

<condition property="style_version" value="">
    <equals arg1="${format}" arg2="2.0"/>
</condition>

<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="${testpath}/${test}.html"/>
    <jmeter
        jmeterhome="${jmeter.home}"
        testplan ="${testpath}/${test}.jmx"
        resultlog="${testpath}/${test}.jtl">
    <!--
        <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="${testpath}/${test}.jtl"
        out="${testpath}/${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="${testpath}/expand.png"/>
    <copy file="${basedir}/collapse.png" tofile="${testpath}/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>

Note :

1 - My all tests are in path : C:\apache-jmeter-2.13\apache-jmeter-2.13\bin

2 - Above build.xml is in path : C:\apache-jmeter-2.13\apache-jmeter-2.13\extras

1
Can you post your build.xml?vins
@VinothS - I have added build.xmlHelping Hands

1 Answers

2
votes

You can run Apache Ant against your .jmx files using build.xml file which lives under /extras folder of your JMeter installation without having to copy or delete anything, just provide location and .jmx file name via -D command-line arguments like:

 ant -Dtestpath=/path/to/the/folder/with/test -Dtest=testname.without.jmx.extension

Given your JMeter script lives i.e. in c:\tests\mytest.jmx

You need to launch Ant as follows:

ant -Dtestpath=c:/tests -Dtest=mytest

and it will generate the following files:

  • C:\tests\mytest.jtl
  • C:\tests\mytest.html

References: