Author: agomes Date: Sat Nov 11 20:49:03 2017 New Revision: 1814971 URL: http://svn.apache.org/viewvc?rev=1814971&view=rev Log: Bug 61672 - add tht choice between prefix and transaction name to name sampler during recording
Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java jmeter/trunk/xdocs/changes.xml jmeter/trunk/xdocs/images/screenshots/proxy_control.png jmeter/trunk/xdocs/usermanual/component_reference.xml Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original) +++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Sat Nov 11 20:49:03 2017 @@ -787,7 +787,6 @@ proxy_general_lifecycle=State proxy_general_settings=Global Settings proxy_headers=Capture HTTP Headers proxy_pause_http_sampler=Create new transaction after request (ms)\: -proxy_prefix_http_sampler_name=Prefix\: proxy_regex=Regex matching proxy_sampler_settings=HTTP Sampler settings proxy_sampler_type=Type\: @@ -936,6 +935,8 @@ run_threadgroup_no_timers=Start no pause running_test=Running test runtime_controller_title=Runtime Controller runtime_seconds=Runtime (seconds) +sample_name_prefix=Prefix +sample_name_transaction=Transaction name salt_string=Salt to be used for hashing (optional) sample_result_save_configuration=Sample Result Save Configuration sample_scope=Apply to: Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties (original) +++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties Sat Nov 11 20:49:03 2017 @@ -777,7 +777,6 @@ proxy_general_lifecycle=Etat proxy_general_settings=Param\u00E8tres g\u00E9n\u00E9raux proxy_headers=Capturer les ent\u00EAtes HTTP proxy_pause_http_sampler=Cr\u00E9er une nouvelle transaction apr\u00E8s la requ\u00EAte (ms) \: -proxy_prefix_http_sampler_name=Pr\u00E9fixe \: proxy_regex=Correspondance des variables par regex ? proxy_sampler_settings=Param\u00E8tres Echantillon HTTP proxy_sampler_type=Type \: @@ -926,6 +925,8 @@ run_threadgroup_no_timers=Lancer sans pa running_test=Lancer test runtime_controller_title=Contr\u00F4leur Dur\u00E9e d'ex\u00E9cution runtime_seconds=Temps d'ex\u00E9cution (secondes) \: +sample_name_prefix=Pr\u00E9fixe +sample_name_transaction=Nom de la transaction salt_string=Sel \u00e0 utiliser pour le hash sample_result_save_configuration=Sauvegarder la configuration de la sauvegarde des \u00E9chantillons sample_scope=Appliquer sur Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java (original) +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java Sat Nov 11 20:49:03 2017 @@ -54,6 +54,12 @@ import org.xml.sax.helpers.DefaultHandle */ public class DefaultSamplerCreator extends AbstractSamplerCreator { private static final Logger log = LoggerFactory.getLogger(DefaultSamplerCreator.class); + + /* + * Must be the same order than in org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui class in createHTTPSamplerPanel method + */ + private static final int SAMPLER_NAME_NAMING_MODE_PREFIX = 0; // $NON-NLS-1$ + private static final int SAMPLER_NAME_NAMING_MODE_COMPLETE = 1; // $NON-NLS-1$ /** * @@ -275,15 +281,28 @@ public class DefaultSamplerCreator exten protected void computeSamplerName(HTTPSamplerBase sampler, HttpRequestHdr request) { String prefix = request.getPrefix(); + int HttpSampleNameMode = request.getHttpSampleNameMode(); if (!HTTPConstants.CONNECT.equals(request.getMethod()) && isNumberRequests()) { if(!StringUtils.isEmpty(prefix)) { - sampler.setName(incrementRequestNumberAndGet() + " " + prefix); + if (HttpSampleNameMode==SAMPLER_NAME_NAMING_MODE_PREFIX) { + sampler.setName(prefix + incrementRequestNumberAndGet() + " " + sampler.getPath()); + } else if (HttpSampleNameMode==SAMPLER_NAME_NAMING_MODE_COMPLETE) { + sampler.setName(incrementRequestNumberAndGet() + " " + prefix); + } else { + log.debug("Sampler name naming mode not recognized"); + } } else { sampler.setName(incrementRequestNumberAndGet() + " " + sampler.getPath()); } } else { if(!StringUtils.isEmpty(prefix)) { - sampler.setName(prefix); + if (HttpSampleNameMode==SAMPLER_NAME_NAMING_MODE_PREFIX) { + sampler.setName(prefix+sampler.getPath()); + } else if (HttpSampleNameMode==SAMPLER_NAME_NAMING_MODE_COMPLETE) { + sampler.setName(prefix); + } else { + log.debug("Sampler name naming mode not recognized"); + } } else { sampler.setName(sampler.getPath()); } Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java (original) +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java Sat Nov 11 20:49:03 2017 @@ -88,6 +88,8 @@ public class HttpRequestHdr { private String firstLine; // saved copy of first line for error reports private String prefix; + + private int httpSampleNameMode; public HttpRequestHdr() { this("", ""); @@ -105,12 +107,22 @@ public class HttpRequestHdr { * @param httpSamplerName the http sampler name */ public HttpRequestHdr(String prefix, String httpSamplerName) { - this.prefix = prefix; - this.httpSamplerName = httpSamplerName; - this.firstLine = "" ; // $NON-NLS-1$ + this(prefix, httpSamplerName,0); } /** + * @param prefix Sampler prefix + * @param httpSamplerName the http sampler name + * @param httpSampleNameMode the naming mode of sampler name + */ + public HttpRequestHdr(String prefix, String httpSamplerName, int httpSampleNameMode) { + this.prefix = prefix; + this.httpSamplerName = httpSamplerName; + this.firstLine = "" ; // $NON-NLS-1$ + this.httpSampleNameMode = httpSampleNameMode; + } + + /** * Parses a http header from a stream. * * @param in @@ -457,4 +469,11 @@ public class HttpRequestHdr { public String getPrefix() { return prefix; } + + /** + * @return the httpSampleNameMode + */ + public int getHttpSampleNameMode() { + return httpSampleNameMode; + } } Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java (original) +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java Sat Nov 11 20:49:03 2017 @@ -161,8 +161,8 @@ public class Proxy extends Thread { public void run() { // Check which HTTPSampler class we should use String httpSamplerName = target.getSamplerTypeName(); - - HttpRequestHdr request = new HttpRequestHdr(target.getPrefixHTTPSampleName(), httpSamplerName); + + HttpRequestHdr request = new HttpRequestHdr(target.getPrefixHTTPSampleName(), httpSamplerName,target.getHTTPSampleNamingMode()); SampleResult result = null; HeaderManager headers = null; HTTPSamplerBase sampler = null; Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java (original) +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java Sat Nov 11 20:49:03 2017 @@ -156,6 +156,8 @@ public class ProxyControl extends Generi private static final String SAMPLER_DOWNLOAD_IMAGES = "ProxyControlGui.sampler_download_images"; // $NON-NLS-1$ + private static final String HTTP_SAMPLER_NAMING_MODE = "ProxyControlGui.proxy_http_sampler_naming_mode"; // $NON-NLS-1$ + private static final String PREFIX_HTTP_SAMPLER_NAME = "ProxyControlGui.proxy_prefix_http_sampler_name"; // $NON-NLS-1$ private static final String PROXY_PAUSE_HTTP_SAMPLER = "ProxyControlGui.proxy_pause_http_sampler"; // $NON-NLS-1$ @@ -181,6 +183,7 @@ public class ProxyControl extends Generi private static final int GROUPING_STORE_FIRST_ONLY = 3; private static final int GROUPING_IN_TRANSACTION_CONTROLLERS = 4; + // Original numeric order (we now use strings) private static final String SAMPLER_TYPE_HTTP_SAMPLER_JAVA = "0"; private static final String SAMPLER_TYPE_HTTP_SAMPLER_HC3_1 = "1"; @@ -389,6 +392,10 @@ public class ProxyControl extends Generi setProperty(new BooleanProperty(SAMPLER_DOWNLOAD_IMAGES, b)); } + public void setHTTPSampleNamingMode(int HTTPNamingMode) { + setProperty(new IntegerProperty(HTTP_SAMPLER_NAMING_MODE, HTTPNamingMode)); + } + public void setPrefixHTTPSampleName(String prefixHTTPSampleName) { setProperty(PREFIX_HTTP_SAMPLER_NAME, prefixHTTPSampleName); } @@ -479,6 +486,10 @@ public class ProxyControl extends Generi return getPropertyAsBoolean(SAMPLER_DOWNLOAD_IMAGES, false); } + public int getHTTPSampleNamingMode() { + return getPropertyAsInt(HTTP_SAMPLER_NAMING_MODE); + } + public String getPrefixHTTPSampleName() { return getPropertyAsString(PREFIX_HTTP_SAMPLER_NAME); } Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java (original) +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java Sat Nov 11 20:49:03 2017 @@ -157,7 +157,12 @@ public class ProxyControlGui extends Log private JCheckBox samplerDownloadImages; /** - * Add a prefix to HTTP sample name recorded + * To choose between a prefix or a transaction name + */ + private JComboBox<String> HTTPSampleNamingMode; + + /** + * Add a prefix/transaction name to HTTP sample name recorded */ private JTextField prefixHTTPSampleName; @@ -227,6 +232,8 @@ public class ProxyControlGui extends Log private static final String ADD_TO_EXCLUDE_FROM_CLIPBOARD = "exclude_clipboard"; // $NON-NLS-1$ private static final String ADD_SUGGESTED_EXCLUDES = "exclude_suggested"; + + private static final String HTTP_SAMPLER_NAMING_MODE = "proxy_http_sampler_naming_mode"; // $NON-NLS-1$ private static final String PREFIX_HTTP_SAMPLER_NAME = "proxy_prefix_http_sampler_name"; // $NON-NLS-1$ @@ -284,6 +291,7 @@ public class ProxyControlGui extends Log model.setSamplerFollowRedirects(samplerFollowRedirects.isSelected()); model.setUseKeepAlive(useKeepAlive.isSelected()); model.setSamplerDownloadImages(samplerDownloadImages.isSelected()); + model.setHTTPSampleNamingMode(HTTPSampleNamingMode.getSelectedIndex()); model.setPrefixHTTPSampleName(prefixHTTPSampleName.getText()); model.setProxyPauseHTTPSample(proxyPauseHTTPSample.getText()); model.setNotifyChildSamplerListenerOfFilteredSamplers(notifyChildSamplerListenerOfFilteredSamplersCB.isSelected()); @@ -346,6 +354,7 @@ public class ProxyControlGui extends Log samplerFollowRedirects.setSelected(model.getSamplerFollowRedirects()); useKeepAlive.setSelected(model.getUseKeepalive()); samplerDownloadImages.setSelected(model.getSamplerDownloadImages()); + HTTPSampleNamingMode.setSelectedIndex(model.getHTTPSampleNamingMode()); prefixHTTPSampleName.setText(model.getPrefixHTTPSampleName()); proxyPauseHTTPSample.setText(model.getProxyPauseHTTPSample()); notifyChildSamplerListenerOfFilteredSamplersCB.setSelected(model.getNotifyChildSamplerListenerOfFilteredSamplers()); @@ -375,10 +384,18 @@ public class ProxyControlGui extends Log * Also handles samplerTypeName */ /** {@inheritDoc} */ - @Override - public void itemStateChanged(ItemEvent e) { - enableRestart(); - } + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getSource() instanceof JComboBox) { + JComboBox combo = (JComboBox) e.getSource(); + if(HTTP_SAMPLER_NAMING_MODE.equals(combo.getName())){ + model.setHTTPSampleNamingMode(HTTPSampleNamingMode.getSelectedIndex()); + } + } + else { + enableRestart(); + } + } /** {@inheritDoc} */ @Override @@ -834,12 +851,16 @@ public class ProxyControlGui extends Log samplerDownloadImages.addActionListener(this); samplerDownloadImages.setActionCommand(ENABLE_RESTART); + DefaultComboBoxModel<String> choice = new DefaultComboBoxModel<>(); + choice.addElement(JMeterUtils.getResString("sample_name_prefix")); // $NON-NLS-1$ + choice.addElement(JMeterUtils.getResString("sample_name_transaction")); // $NON-NLS-1$ + HTTPSampleNamingMode = new JComboBox<>(choice); + HTTPSampleNamingMode.setName(HTTP_SAMPLER_NAMING_MODE); + HTTPSampleNamingMode.addItemListener(this); + prefixHTTPSampleName = new JTextField(4); prefixHTTPSampleName.addKeyListener(this); prefixHTTPSampleName.setName(PREFIX_HTTP_SAMPLER_NAME); - prefixHTTPSampleName.setActionCommand(ENABLE_RESTART); - JLabel labelPrefix = new JLabel(JMeterUtils.getResString("proxy_prefix_http_sampler_name")); // $NON-NLS-1$ - labelPrefix.setLabelFor(prefixHTTPSampleName); proxyPauseHTTPSample = new JTextField(6); proxyPauseHTTPSample.addKeyListener(this); @@ -853,7 +874,7 @@ public class ProxyControlGui extends Log GridBagLayout gridBagLayout = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); - gbc.anchor = GridBagConstraints.NORTHWEST; + gbc.anchor = GridBagConstraints.FIRST_LINE_START; gbc.fill = GridBagConstraints.NONE; gbc.gridheight = 1; gbc.gridwidth = 1; @@ -864,7 +885,7 @@ public class ProxyControlGui extends Log JPanel panel = new JPanel(gridBagLayout); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("proxy_sampler_settings"))); // $NON-NLS-1$ - panel.add(labelPrefix, gbc.clone()); + panel.add(HTTPSampleNamingMode, gbc.clone()); gbc.gridx++; gbc.weightx = 3; gbc.fill=GridBagConstraints.HORIZONTAL; Modified: jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== --- jmeter/trunk/xdocs/changes.xml [utf-8] (original) +++ jmeter/trunk/xdocs/changes.xml [utf-8] Sat Nov 11 20:49:03 2017 @@ -90,7 +90,7 @@ Summary <ul> <li><pr>316</pr>Warn about empty truststore loading. Contributed by Vincent Herilier (https://github.com/vherilier)</li> <li><bug>61639</bug>HTTP(S) Test Script Recorder : In request filtering tab, uncheck by default "Notify Child Listeners of filtered samplers"</li> - <li><bug>61672</bug>HTTP(S) Test Script Recorder : When a prefix is set don't use path in Sampler Name</li> + <li><bug>61672</bug>HTTP(S) Test Script Recorder : Have the ability to choose the sampler name while keeping the ability to just add a prefix</li> <li><bug>53957</bug>HTTP Request : In Parameters tab, allow pasting of content coming from Firefox and Chrome (unparsed)</li> <li><bug>61587</bug>Drop properties <code>sampleresult.getbytes.headers_size</code> and <code>sampleresult.getbytes.body_real_size</code></li> </ul> Modified: jmeter/trunk/xdocs/images/screenshots/proxy_control.png URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/proxy_control.png?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== Binary files - no diff available. Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1814971&r1=1814970&r2=1814971&view=diff ============================================================================== --- jmeter/trunk/xdocs/usermanual/component_reference.xml (original) +++ jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Nov 11 20:49:03 2017 @@ -6646,6 +6646,7 @@ Both Chrome and Internet Explorer use th </property> <property name="Add Assertions" required="Yes">Add a blank assertion to each sampler?</property> <property name="Regex Matching" required="Yes">Use Regex Matching when replacing variables? If checked replacement will use word boundaries, i.e. it will only replace word matching values of variable, not part of a word. A word boundary follows Perl5 definition and is equivalent to <code>\b</code>. More information below in the paragraph about "<code>User Defined Variable replacement</code>".</property> + <property name="Prefix/Transaction name" required="No">Add a prefix to sampler name during recording (Prefix mode). Or replace sampler name by user choosen name (Transaction name)</property> <property name="Type" required="Yes">Which type of sampler to generate (the HTTPClient default or Java)</property> <property name="Redirect Automatically" required="Yes">Set Redirect Automatically in the generated samplers?</property> <property name="Follow Redirects" required="Yes">Set Follow Redirects in the generated samplers?<br/>