<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en">
<head>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<title>Apache JMeter
          -
          User guide: Customizables templates</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./css/new-style.css">
<link rel="apple-touch-icon-precomposed" href="./images/apple-touch-icon.png">
<link rel="icon" href="./images/favicon.png">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="./images/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
</head>
<body role="document">
<a href="#content" class="hidden">Main content</a>
<div class="header">
<!--
            APACHE LOGO
          -->
<div>
<a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="./images/asf-logo.svg" alt="Logo ASF"></a>
</div>
<!--
              PROJECT LOGO
            -->
<div>
<a href="https://jmeter.apache.org/"><img class="logo" src="./images/logo.svg" alt="Apache JMeter"></a>
</div>
<div class="banner">
<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
<div class="clear"></div>
</div>
</div>
<div class="nav">
<ul class="menu">
<li onClick="return true">
<div class="menu-title">About</div>
<ul>
<li>
<a href="./index.html">Overview</a>
</li>
<li>
<a href="https://www.apache.org/licenses/">License</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Download</div>
<ul>
<li>
<a href="./download_jmeter.cgi">Download Releases</a>
</li>
<li>
<a href="./changes.html">Release Notes</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Documentation</div>
<ul>
<li>
<a href="./usermanual/get-started.html">Get Started</a>
</li>
<li>
<a href="./usermanual/index.html">User Manual</a>
</li>
<li>
<a href="./usermanual/best-practices.html">Best Practices</a>
</li>
<li>
<a href="./usermanual/component_reference.html">Component Reference</a>
</li>
<li>
<a href="./usermanual/functions.html">Functions Reference</a>
</li>
<li>
<a href="./usermanual/properties_reference.html">Properties Reference</a>
</li>
<li>
<a href="./changes_history.html">Change History</a>
</li>
<li>
<a href="./api/index.html">Javadocs</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Tutorials</div>
<ul>
<li>
<a href="./usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
</li>
<li>
<a href="./usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
</li>
<li>
<a href="./usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
</li>
<li>
<a href="./usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
</li>
<li>
<a href="./usermanual/jmeter_tutorial.html">Extending JMeter</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Community</div>
<ul>
<li>
<a href="./issues.html">Issue Tracking</a>
</li>
<li>
<a href="https://www.apache.org/security/">Security</a>
</li>
<li>
<a href="./mail.html">Mailing Lists</a>
</li>
<li>
<a href="./svnindex.html">Source Repositories</a>
</li>
<li>
<a href="./building.html">Building and Contributing</a>
</li>
<li>
<a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Foundation</div>
<ul>
<li>
<a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
</li>
<li>
<a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</div>
<div class="main" id="content">
<div class="social-media">
<ul class="social-media-links">
<li class="twitter">
<a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
</li>
<li class="github">
<a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
</li>
</ul>
</div>
<div class="section">
<h1>Customizable template</h1>
            
<p>
                This document describes how to create a customizable template.
            </p>
            
<div class="subsection">
<h2 id="folder_structure">1 Folder structure<a class="sectionlink" href="#folder_structure" title="Link to here">&para;</a>
</h2>
                    
<p>
                        The template feature uses the bin/templates folder which contains :<br>
                        
<ul>
                            
<li>templates.xml, the file where you declare the templates you want to be able to use</li>
                            
<li>some .jmx and .jmx.fmkr files which are the templates</li>
                        
</ul>
                    
</p>
                    
<p>Here is how it looks like:
                    <figure>
<a href="./images/screenshots/templates/template_folder.png"><img src="./images/screenshots/templates/template_folder.png" width="" height="" alt="Figure 1 - template folder"></a>
<figcaption>Figure 1 - template folder</figcaption>
</figure>
                    
</p>
            
</div>
            
<div class="subsection">
<h2 id="template_creation">2 Template declaration<a class="sectionlink" href="#template_creation" title="Link to here">&para;</a>
</h2>
                
<div class="subsection">
<h2 id="basic_template_declaration">2.1 Basic template declaration<a class="sectionlink" href="#basic_template_declaration" title="Link to here">&para;</a>
</h2>
                    
<p>
                        First of all you must declare your template. To do that, look into the templates.xml file.<br>
                        This file respect a DTD <br>
                        Below is the already existing Recording template declaration inside the templates.xml :
                        <figure>
<a href="./images/screenshots/templates/templates_xml.png"><img src="./images/screenshots/templates/templates_xml.png" width="" height="" alt="Figure 2 - recording template declaration"></a>
<figcaption>Figure 2 - recording template declaration</figcaption>
</figure>
                        A template declaration is made as follow :<br>
                        
<ul>
                            
<li>
<span class="code">template</span> element which contains the informations described in the followings tags</li>
                            
<li>
<span class="code">name</span> element which contains the template name the user will see</li>
                            
<li>
<span class="code">fileName</span> element which contains the relative path of the template.</li>
                            
<li>
<span class="code">description</span> element which uses html to describe the template</li>
                            
<li>
<span class="code">optional</span> parameters tag (will be discussed later)</li>
                        
</ul>
                    
</p>
                
</div>
                
<div class="subsection">
<h2 id="customizable_template_declaration">2.2 Customizable template declaration<a class="sectionlink" href="#customizable_template_declaration" title="Link to here">&para;</a>
</h2>
                    
<p>
                        Let's say we want the exact same Recording template as in the 2.1 section, but we want to choose the name
                        of the xml file where the recording of view result tree will be saved.<br>
<br>
                        To do so we will use the parameters tag to tell JMeter to ask the user about a name for the concerned file :
                        <figure>
<a href="./images/screenshots/templates/templates_xml_parameters.png"><img src="./images/screenshots/templates/templates_xml_parameters.png" width="" height="" alt="Figure 3 - recording template with parameters"></a>
<figcaption>Figure 3 - recording template with parameters</figcaption>
</figure>
                        
<div class="clear"></div>
<div class="note">You can put as many parameter tags as you want in the parameters tag.</div>
<div class="clear"></div>
                        Let's see what changed here.<br>
                        Firstly, customs templates are <span class="code">.jmx.fmkr</span> files and not only <span class="code">.jmx</span>.<br>
<br>
                        Lastly, we added a <span class="code">parameters</span> tag.<br> As you can see in the image, a <span class="code">parameters</span> tag contains <span class="code">parameter</span> tags.<br>
                        Parameter tags are empty and contains 2 attributes :
                        <ul>
                            
<li>
<span class="code">key</span> is the name of the parameter you will ask the user to fill.</li>
                            
<li>
<span class="code">defaultValue</span> is as its name says, the default value the user will see for the parameter.</li>
                        
</ul>
                    
</p>
                
</div>
            
</div>
            
<div class="subsection">
<h2 id="template_file">3 Template file<a class="sectionlink" href="#template_file" title="Link to here">&para;</a>
</h2>
                
<div class="subsection">
<h2 id="basic_template_file">3.1 Basic template file<a class="sectionlink" href="#basic_template_file" title="Link to here">&para;</a>
</h2>
                    
<p>
                        The template file is the one you used in the fileName tag when you declared your template.
                        A template file is just the saving of a JMeter test plan.
                    </p>
                
</div>
                
                
<div class="subsection">
<h2 id="customizable_template_file">3.2 Customizable template file<a class="sectionlink" href="#customizable_template_file" title="Link to here">&para;</a>
</h2>
                    
<p>
                        In the 2.2 section we saw that a custom template file is a .jmx.fmkr file.<br>
                        The single difference between them is the .jmx.fmkr will be analyzed by JMeter to<br>
                        detect customs tag. If a custom tag is found, JMeter will try to replace it by the corresponding
                        given value from the user.<br>
<br>
                        A custom tag is defined as follow : 
                        <pre class="source">[=&lt;key&gt;]</pre>
                        This is based on <a href="https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation">Freemarker alternative Interpolation syntax</a>.
                        Let's illustrate how it works with an example.<br>
                        Consider the following part of the recording.jmx template file : <br>
                        
<figure>
<a href="./images/screenshots/templates/template_recording_filename.png"><img src="./images/screenshots/templates/template_recording_filename.png" width="" height="" alt="Figure 4 - recording.jmx save file"></a>
<figcaption>Figure 4 - recording.jmx save file</figcaption>
</figure>
                        The surrounded area correspond to the name of the xml file where the View Results Tree output will be saved.
                        As it is, when you use the template you will always have the same saving filename : <span class="code">recording.xml</span>.<br>
<br>
                        To make it customizable, change your recording template declaration in the templates.xml files by the<br>
                        one shown in the 2.2 section. Then, rename the recording.jmx file to recording.jmx.fmkr.<br>
<br>
                        When it's done, Change the above selected line by this one : 
                        <pre class="source">&lt;stringProp name="filename"&gt;[=xmlFileName]&lt;/stringProp&gt;</pre>
                        
<br>
                        It's over ! With this configuration, if you chose to use the recording template, JMeter will ask you
                        a xmlFileName (correspond to the key value in the declaration).
                        <figure>
<a href="./images/screenshots/templates/template_parameters_window.png"><img src="./images/screenshots/templates/template_parameters_window.png" width="" height="" alt="Figure 5 - JMeter asks you the value you want to put for the key"></a>
<figcaption>Figure 5 - JMeter asks you the value you want to put for the key</figcaption>
</figure>
                        Then, you will find the expected value in the created template where you placed the [=xmlFileName] tag :
                        <figure>
<a href="./images/screenshots/templates/template_recording_retrieved_value.png"><img src="./images/screenshots/templates/template_recording_retrieved_value.png" width="" height="" alt="Figure 6 - the value changed"></a>
<figcaption>Figure 6 - the value changed</figcaption>
</figure>
                    
</p>
                
</div>
            
</div>
        
</div>
<div class="share-links">
      Share this page:
      <ul>
<li class="fb">
<a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
</li>
<li class="twitter">
<a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
</li>
</ul>
</div>
<a href="#top" id="topButton">Go to top</a>
</div>
<div class="footer">
<div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2019
            , Apache Software Foundation
          </div>
<div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
</div>
<script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
</body>
</html>
