Author: agomes Date: Sun Dec 3 21:56:48 2017 New Revision: 1817055 URL: http://svn.apache.org/viewvc?rev=1817055&view=rev Log: Bug 61852 - Add a Boundary Extractor Tester in View Results Tree
Added: jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsBoundaryExtractor.java (with props) Modified: jmeter/trunk/src/components/org/apache/jmeter/extractor/BoundaryExtractor.java jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties jmeter/trunk/xdocs/changes.xml jmeter/trunk/xdocs/usermanual/component_reference.xml Modified: jmeter/trunk/src/components/org/apache/jmeter/extractor/BoundaryExtractor.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/extractor/BoundaryExtractor.java?rev=1817055&r1=1817054&r2=1817055&view=diff ============================================================================== --- jmeter/trunk/src/components/org/apache/jmeter/extractor/BoundaryExtractor.java (original) +++ jmeter/trunk/src/components/org/apache/jmeter/extractor/BoundaryExtractor.java Sun Dec 3 21:56:48 2017 @@ -239,7 +239,7 @@ public class BoundaryExtractor extends A * @param found * @return int found updated */ - private int extract(String leftBoundary, String rightBoundary, int matchNumber, String inputString, + public int extract(String leftBoundary, String rightBoundary, int matchNumber, String inputString, List<String> result, int found) { int startIndex = -1; int endIndex; Added: jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsBoundaryExtractor.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsBoundaryExtractor.java?rev=1817055&view=auto ============================================================================== --- jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsBoundaryExtractor.java (added) +++ jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsBoundaryExtractor.java Sun Dec 3 21:56:48 2017 @@ -0,0 +1,240 @@ +/* + * 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. + */ +package org.apache.jmeter.visualizers; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.JTabbedPane; +import javax.swing.JTextArea; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; + +import org.apache.jmeter.extractor.BoundaryExtractor; +import org.apache.jmeter.samplers.SampleResult; +import org.apache.jmeter.util.JMeterUtils; +import org.apache.jorphan.gui.GuiUtils; +import org.apache.jorphan.gui.JLabeledTextField; + + +/** + * Implement ResultsRender for Boundary Extractor tester + */ +public class RenderAsBoundaryExtractor implements ResultRenderer, ActionListener { + + private static final String BOUNDARY_EXTRACTOR_TESTER_COMMAND = "boundary_extractor_tester"; // $NON-NLS-1$ + + private JPanel boundaryExtractorPane; + + private JTextArea boundaryExtractorDataField; + + private JLabeledTextField boundaryExtractorFieldLeft; + + private JLabeledTextField boundaryExtractorFieldRight; + + private JTextArea boundaryExtractorResultField; + + private JTabbedPane rightSide; + + private SampleResult sampleResult = null; + + /** + * Display the response as text or as rendered HTML. Change the text on the + * button appropriate to the current display. + * + * @param e the ActionEvent being processed + */ + @Override + public void actionPerformed(ActionEvent e) { + String command = e.getActionCommand(); + if ((sampleResult != null) && (BOUNDARY_EXTRACTOR_TESTER_COMMAND.equals(command))) { + String response = ViewResultsFullVisualizer.getResponseAsString(sampleResult); + executeAndShowBoundaryExtractorTester(response); + } + } + + /** + * Launch boundaryExtractor engine to parse a input text + * @param textToParse + */ + private void executeAndShowBoundaryExtractorTester(String textToParse) { + if (textToParse != null && textToParse.length() > 0 + && this.boundaryExtractorFieldLeft.getText().length() > 0 + && this.boundaryExtractorFieldRight.getText().length() > 0) { + this.boundaryExtractorResultField.setText(process(textToParse)); + this.boundaryExtractorResultField.setCaretPosition(0); // go to first line + } + } + + + private String process(String textToParse) { + + List<String> result = new ArrayList<>(); + BoundaryExtractor extractor = new BoundaryExtractor(); + + final int nbFound = extractor.extract(boundaryExtractorFieldLeft.getText(),boundaryExtractorFieldRight.getText(), -1, textToParse, result, 0); + + // Construct a multi-line string with all matches + StringBuilder sb = new StringBuilder(); + sb.append("Match count: ").append(nbFound).append("\n"); + for (int j = 0; j < nbFound; j++) { + String mr = result.get(j); + sb.append("Match[").append(j+1).append("]=").append(mr).append("\n"); + } + return sb.toString(); + + } + + /** {@inheritDoc} */ + @Override + public void clearData() { + this.boundaryExtractorDataField.setText(""); // $NON-NLS-1$ + this.boundaryExtractorFieldLeft.setText(""); // $NON-NLS-1$ + this.boundaryExtractorFieldRight.setText(""); // $NON-NLS-1$ + this.boundaryExtractorResultField.setText(""); // $NON-NLS-1$ + } + + /** {@inheritDoc} */ + @Override + public void init() { + // Create the panels for the boundaryExtractor tab + boundaryExtractorPane = createBoundaryExtractorPanel(); + } + + /** + * @return boundaryExtractor Tester panel + */ + private JPanel createBoundaryExtractorPanel() { + boundaryExtractorDataField = new JTextArea(); + boundaryExtractorDataField.setEditable(false); + boundaryExtractorDataField.setLineWrap(true); + boundaryExtractorDataField.setWrapStyleWord(true); + + JScrollPane boundaryExtractorDataPane = GuiUtils.makeScrollPane(boundaryExtractorDataField); + boundaryExtractorDataPane.setPreferredSize(new Dimension(0, 200)); + + JPanel pane = new JPanel(new BorderLayout(0, 5)); + + JSplitPane mainSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, + boundaryExtractorDataPane, createBoundaryExtractorTasksPanel()); + mainSplit.setDividerLocation(0.6d); + mainSplit.setOneTouchExpandable(true); + pane.add(mainSplit, BorderLayout.CENTER); + return pane; + } + + /** + * Create the boundaryExtractor task pane + * + * @return boundaryExtractor task pane + */ + private JPanel createBoundaryExtractorTasksPanel() { + JPanel boundaryExtractorActionPanel = new JPanel(); + boundaryExtractorActionPanel.setLayout(new BoxLayout(boundaryExtractorActionPanel, BoxLayout.X_AXIS)); + Border margin = new EmptyBorder(5, 5, 0, 5); + boundaryExtractorActionPanel.setBorder(margin); + boundaryExtractorFieldLeft = new JLabeledTextField(JMeterUtils.getResString("boundaryextractor_leftboundary_field")); // $NON-NLS-1$ + boundaryExtractorActionPanel.add(boundaryExtractorFieldLeft, BorderLayout.WEST); + boundaryExtractorFieldRight = new JLabeledTextField(JMeterUtils.getResString("boundaryextractor_rightboundary_field")); // $NON-NLS-1$ + boundaryExtractorActionPanel.add(boundaryExtractorFieldRight, BorderLayout.WEST); + + JButton boundaryExtractorTester = new JButton(JMeterUtils.getResString("boundaryextractor_tester_button_test")); // $NON-NLS-1$ + boundaryExtractorTester.setActionCommand(BOUNDARY_EXTRACTOR_TESTER_COMMAND); + boundaryExtractorTester.addActionListener(this); + boundaryExtractorActionPanel.add(boundaryExtractorTester, BorderLayout.EAST); + + boundaryExtractorResultField = new JTextArea(); + boundaryExtractorResultField.setEditable(false); + boundaryExtractorResultField.setLineWrap(true); + boundaryExtractorResultField.setWrapStyleWord(true); + + JPanel boundaryExtractorTasksPanel = new JPanel(new BorderLayout(0, 5)); + boundaryExtractorTasksPanel.add(boundaryExtractorActionPanel, BorderLayout.NORTH); + boundaryExtractorTasksPanel.add(GuiUtils.makeScrollPane(boundaryExtractorResultField), BorderLayout.CENTER); + + return boundaryExtractorTasksPanel; + } + + /** {@inheritDoc} */ + @Override + public void setupTabPane() { + // Add boundaryExtractor tester pane + if (rightSide.indexOfTab(JMeterUtils.getResString("boundaryextractor_tester_title")) < 0) { // $NON-NLS-1$ + rightSide.addTab(JMeterUtils.getResString("boundaryextractor_tester_title"), boundaryExtractorPane); // $NON-NLS-1$ + } + clearData(); + } + + @Override + public void setLastSelectedTab(int index) { + // nothing to do + } + + /** {@inheritDoc} */ + @Override + public synchronized void setRightSide(JTabbedPane side) { + rightSide = side; + } + + /** {@inheritDoc} */ + @Override + public synchronized void setSamplerResult(Object userObject) { + if (userObject instanceof SampleResult) { + sampleResult = (SampleResult) userObject; + } + } + + /** {@inheritDoc} */ + @Override + public void renderResult(SampleResult sampleResult) { + clearData(); + String response = ViewResultsFullVisualizer.getResponseAsString(sampleResult); + boundaryExtractorDataField.setText(response); + boundaryExtractorDataField.setCaretPosition(0); + } + + /** {@inheritDoc} */ + @Override + public String toString() { + return JMeterUtils.getResString("boundaryextractor_tester_title"); // $NON-NLS-1$ + } + + /** {@inheritDoc} */ + @Override + public void renderImage(SampleResult sampleResult) { + clearData(); + boundaryExtractorDataField.setText(JMeterUtils.getResString("boundaryextractor_render_no_text")); // $NON-NLS-1$ + } + + /** {@inheritDoc} */ + @Override + public void setBackgroundColor(Color backGround) { + } + +} Propchange: jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsBoundaryExtractor.java ------------------------------------------------------------------------------ svn:eol-style = native 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=1817055&r1=1817054&r2=1817055&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original) +++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Sun Dec 3 21:56:48 2017 @@ -148,8 +148,11 @@ backend_listener_queue_size=Async Queue bind=Thread Bind bouncy_castle_unavailable_message=The jars for bouncy castle are unavailable, please add them to your classpath. boundaryextractor_empty_default_value=Use empty default value -boundaryextractor_leftboundary_field=Left Boundary: -boundaryextractor_rightboundary_field=Right Boundary: +boundaryextractor_leftboundary_field=Left Boundary: +boundaryextractor_render_no_text=Data response result isn't text. +boundaryextractor_rightboundary_field=Right Boundary: +boundaryextractor_tester_button_test=Test +boundaryextractor_tester_title=Boundary Extractor Tester boundaryextractor_title=Boundary Extractor browse=Browse... bsf_sampler_title=BSF Sampler 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=1817055&r1=1817054&r2=1817055&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 Sun Dec 3 21:56:48 2017 @@ -144,7 +144,10 @@ bind=Connexion de l'unit\u00E9 bouncy_castle_unavailable_message=Les jars de bouncycastle sont indisponibles, ajoutez les au classpath. boundaryextractor_empty_default_value=Utiliser la cha\u00EEne vide comme valeur par d\u00E9faut boundaryextractor_leftboundary_field=Borne gauche +boundaryextractor_render_no_text=Les donn\u00E9es de r\u00E9ponse ne sont pas du texte. boundaryextractor_rightboundary_field=Borne droite +boundaryextractor_tester_button_test=Tester +boundaryextractor_tester_title=Testeur de extracteur par bornes boundaryextractor_title=Extracteur par bornes browse=Parcourir... bsf_sampler_title=Echantillon BSF Modified: jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1817055&r1=1817054&r2=1817055&view=diff ============================================================================== --- jmeter/trunk/xdocs/changes.xml [utf-8] (original) +++ jmeter/trunk/xdocs/changes.xml [utf-8] Sun Dec 3 21:56:48 2017 @@ -95,42 +95,43 @@ Summary <h3>HTTP Samplers and Test Script Recorder</h3> <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 : 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>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: 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> - <li><bug>61843</bug>HTTP(S) Test Script Recorder : Add SAN to JMeter generated CA Certificate. Contributed by Matthew Buckett</li> + <li><bug>61843</bug>HTTP(S) Test Script Recorder: Add SAN to JMeter generated CA Certificate. Contributed by Matthew Buckett</li> </ul> <h3>Other samplers</h3> <ul> - <li><bug>61739</bug>Java Request / JavaSamplerClient : Improve <code>org.apache.jmeter.protocol.java.sampler.JavaSamplerContext</code></li> + <li><bug>61739</bug>Java Request / JavaSamplerClient: Improve <code>org.apache.jmeter.protocol.java.sampler.JavaSamplerContext</code></li> <li><bug>61762</bug>Start Next Thread Loop should be used everywhere</li> <li><bug>61544</bug>JMS Point-to-Point Sampler: Enhance communication styles with read, browse, clear. Based on a contribution by Benny van Wijngaarden (benny at smaragd-it.nl)</li> - <li><bug>61829</bug>JMS Point-to-Point : If Receive Queue is empty and a timeout is set, it is not taken into account. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> + <li><bug>61829</bug>JMS Point-to-Point: If Receive Queue is empty and a timeout is set, it is not taken into account. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> </ul> <h3>Controllers</h3> <ul> - <li><bug>61675</bug>If Controller : Use expression by default and add a warning when the other mode is used. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> - <li><bug>61770</bug>Module Controller : Inform user in UI that he needs to have at least one Controller in his plan. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> + <li><bug>61675</bug>If Controller: Use expression by default and add a warning when the other mode is used. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> + <li><bug>61770</bug>Module Controller: Inform user in UI that he needs to have at least one Controller in his plan. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> </ul> <h3>Listeners</h3> <ul> - <li><bug>57760</bug>View Results Tree : Cookie Header is wrongly shown as empty (no cookies) when viewing a recorder Sample Result. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> + <li><bug>57760</bug>View Results Tree: Cookie Header is wrongly shown as empty (no cookies) when viewing a recorder Sample Result. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> <li><bug>61769</bug>View Results Tree: Use syntax highlighter in XPath Tester, JSON Path Tester and CSS/JQuery Tester. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> <li><bug>61776</bug>View Results Tree: Expansion of <code>Add expand/collapse all</code> menu in render XML view. Contributed by Maxime Chassagneux and Graham Russell</li> - <li><bug>61794</bug>Influxdb backend : Add as many custom tags as wanted by just create new lines and prefix theirs name by "<code>TAG_</code>" on the GUI backend listener</li> + <li><bug>61852</bug>View Results Tree: Add a Boundary Extractor Tester</li> + <li><bug>61794</bug>Influxdb backend: Add as many custom tags as wanted by just create new lines and prefix theirs name by "<code>TAG_</code>" on the GUI backend listener</li> </ul> <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> <ul> <li><bug>60213</bug>Boundary based extractor</li> <li><bug>61644</bug>HTTP Cache Manager: "Use Cache-Control/Expires header when processing GET requests" should be checked by default</li> - <li><bug>61645</bug>Response Assertion : Add ability to assert on Request Data</li> + <li><bug>61645</bug>Response Assertion: Add ability to assert on Request Data</li> <li><bug>61534</bug>Convert AssertionError to a failed assertion in the JSR223Assertion allowing users to use assert in their code</li> - <li><bug>61756</bug>Extractors : Improve label name "Reference name" to make it clear what it makes</li> + <li><bug>61756</bug>Extractors: Improve label name "Reference name" to make it clear what it makes</li> <li><bug>61758</bug><code>Apply to:</code> field in Extractors, Assertions : When entering a value in <code>JMeter Variable Name</code>, the radio box <code>JMeter Variable Name</code> should be selected by default. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> <li><bug>61845</bug>New Component JSON Assertion based on AtlanBH JSON Path Assertion donated to JMeter-Plugins and migrated into JMeter core by Artem Fedorov (artem at blazemeter.com)</li> <li><bug>61846</bug>Scoped Assertion should follow same order of evaluation as Post Processors</li> @@ -139,7 +140,7 @@ Summary <h3>Functions</h3> <ul> <li><bug>61561</bug>Function helper dialog should display exception in result</li> - <li><bug>61738</bug>Function Helper Dialog : Add Copy in Generate and clarify labels. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> + <li><bug>61738</bug>Function Helper Dialog: Add Copy in Generate and clarify labels. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> <li><bug>61593</bug>Remove Detail, Add, Add from Clipboard, Delete buttons in Function Helper GUI</li> <li><bug>61724</bug>Add <code>__digest</code> function to provide computing of Hashes (SHA-XXX, MDX). Based on a contribution by orimarko at gmail.com</li> <li><bug>61735</bug>Add <code>__dateTimeConvert</code> function to provide date formats conversions. Based on a contribution by orimarko at gmail.com</li> @@ -150,7 +151,7 @@ Summary <h3>I18N</h3> <ul> <li><bug>61606</bug>Translate button <code>Browse…</code> in some elements (which use FileEditor class)</li> - <li><bug>61747</bug>HTTP(S) Test Script Recorder : add the missing doc to "Create transaction after request (ms)"</li> + <li><bug>61747</bug>HTTP(S) Test Script Recorder: add the missing doc to "Create transaction after request (ms)"</li> </ul> <h3>Report / Dashboard</h3> @@ -160,22 +161,22 @@ Summary <h3>General</h3> <ul> <li><bug>61591</bug>Drop Workbench from test tree. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.</li> - <li><bug>61549</bug>Thread Group : Remove start and end date</li> + <li><bug>61549</bug>Thread Group: Remove start and end date</li> <li><bug>61529</bug>Migration to Java 9. Partly contributed by Ubik Load Pack (support at ubikloadpack.com)</li> - <li><bug>61709</bug>SampleResult : Add a method <code>setIgnore()</code> to make JMeter ignore the SampleResult and not send it to listeners</li> + <li><bug>61709</bug>SampleResult: Add a method <code>setIgnore()</code> to make JMeter ignore the SampleResult and not send it to listeners</li> <li><bug>61607</bug>Add browse button in all BeanShell elements to select BeanShell script</li> <li><bug>61627</bug>Don't clear LogView anymore when clicking on Warning/Errors Indicator</li> <li><bug>61629</bug>Add Think Times to Children menu should not consider disabled elements</li> - <li><bug>61655</bug>SampleSender : Drop HoldSampleSender implementation</li> + <li><bug>61655</bug>SampleSender: Drop HoldSampleSender implementation</li> <li><bug>61656</bug><code>tearDown Thread Group</code> should run by default at stop or shutdown of test</li> <li><bug>61659</bug><code>JMeterVariables#get()</code> should apply <code>toString()</code> on non string objects</li> <li><bug>61555</bug>Metaspace should be restricted as default</li> <li><bug>61693</bug>JMeter aware of Docker (<code>-XX:+UnlockExperimentalVMOptions</code> <code>-XX:+UseCGroupMemoryLimitForHeap</code>)</li> <li><bug>61694</bug>Add <code>-server</code> option in <code>jmeter.bat</code></li> <li><bug>61697</bug>Introduce Darcula Look And Feel to make JMeter UI more attractive</li> - <li><bug>61704</bug>Toolbar : Improve a bit the right part</li> + <li><bug>61704</bug>Toolbar: Improve a bit the right part</li> <li><bug>61731</bug>Enhance Test plan Backup with option to save before run. Based on a contribution by orimarko at gmail.com</li> - <li><bug>61640</bug>JSR223 Test Elements : Enable by default caching. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> + <li><bug>61640</bug>JSR223 Test Elements: Enable by default caching. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> <li><bug>61785</bug>Add <menuchoice><guimenuitem>Help</guimenuitem><guimenuitem>Useful links</guimenuitem></menuchoice> to create issues and download nightly build</li> <li><bug>61808</bug>Fix main frame position. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by BlazeMeter Ltd.</li> <li><bug>61802</bug>Loop / ForEach Controller should expose a variable for current iteration. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> @@ -225,12 +226,12 @@ Summary <h3>Listeners</h3> <ul> - <li><bug>61742</bug>BackendListener : fix default value for <code>backend_graphite.send_interval</code></li> + <li><bug>61742</bug>BackendListener: fix default value for <code>backend_graphite.send_interval</code></li> </ul> <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> <ul> - <li><bug>61716</bug>Header Manager : When pasting Headers from Firefox or Chrome spaces are introduced as first character of value</li> + <li><bug>61716</bug>Header Manager: When pasting Headers from Firefox or Chrome spaces are introduced as first character of value</li> </ul> <h3>Functions</h3> @@ -238,7 +239,7 @@ Summary <li><bug>61588</bug>Better log message for <funclink name="__RandomDate()"/> function</li> <li><bug>61619</bug>In Function Helper Dialog, the 1<sup>st</sup> function doesn't display default parameters</li> <li><bug>61628</bug>If split string has empty separator default separator is not used</li> - <li><bug>61752</bug><code>__RandomDate</code> : Function does not allow missing last parameter used for variable name</li> + <li><bug>61752</bug><code>__RandomDate</code>: Function does not allow missing last parameter used for variable name</li> </ul> <h3>I18N</h3> @@ -254,7 +255,7 @@ Summary <ul> <li><bug>61661</bug>Avoid startup/shutdown problems due to 3<sup>rd</sup> party Thread Listener plugins throwing RuntimeException</li> <li><bug>61625</bug>File Editor used in BeanInfo behaves strangely under all LAFs with impact on CSVDataSet, JSR223, BSF, Beanshell Element</li> - <li><bug>61844</bug>Maven pom.xml : Libraries used in testing should have scope test</li> + <li><bug>61844</bug>Maven pom.xml: Libraries used in testing should have scope test</li> </ul> <!-- =================== Thanks =================== --> Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1817055&r1=1817054&r2=1817055&view=diff ============================================================================== --- jmeter/trunk/xdocs/usermanual/component_reference.xml (original) +++ jmeter/trunk/xdocs/usermanual/component_reference.xml Sun Dec 3 21:56:48 2017 @@ -2920,6 +2920,11 @@ You can right-click on any node and expa The "<code>Test</code>" button allows the user to apply the XPath query to the upper panel and the results will be displayed in the lower panel.<br/> </td></tr> +<tr><td><code>Boundary Extractor Tester </code></td> +<td>The <i>Boundary Extractor Tester</i> only works for text responses. It shows the plain text in the upper panel. +The "<code>Test</code>" button allows the user to apply the Boundary Extractor query to the upper panel and the results +will be displayed in the lower panel.<br/> +</td></tr> </table> <p><code>Scroll automatically?</code> option permit to have last node display in tree selection</p> <note>Starting with version 3.2 the number of entries in the View is restricted to the value of the