Author: sebb Date: Tue May 13 06:19:59 2008 New Revision: 655852 URL: http://svn.apache.org/viewvc?rev=655852&view=rev Log: Give BSF Sampler access to JMeter Properties via "props" object Add Jexl as a supported BSF Sampler language
Modified: jakarta/jmeter/trunk/docs/changes.html jakarta/jmeter/trunk/docs/usermanual/component_reference.html jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/BSFSamplerGui.java jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java jakarta/jmeter/trunk/xdocs/changes.xml jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Modified: jakarta/jmeter/trunk/docs/changes.html URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/changes.html?rev=655852&r1=655851&r2=655852&view=diff ============================================================================== --- jakarta/jmeter/trunk/docs/changes.html (original) +++ jakarta/jmeter/trunk/docs/changes.html Tue May 13 06:19:59 2008 @@ -668,6 +668,16 @@ </li> + <li > + Give BSF Sampler access to JMeter Properties via "props" object + </li> + + + <li > + Add Jexl as a supported BSF Sampler language + </li> + + </ul> <h4 > Non-functional changes @@ -3070,6 +3080,7 @@ Bug 39533 - StatCalculator added wrong items </li> + <li > Bug 39599 - ConcurrentModificationException Modified: jakarta/jmeter/trunk/docs/usermanual/component_reference.html URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/usermanual/component_reference.html?rev=655852&r1=655851&r2=655852&view=diff ============================================================================== --- jakarta/jmeter/trunk/docs/usermanual/component_reference.html (original) +++ jakarta/jmeter/trunk/docs/usermanual/component_reference.html Tue May 13 06:19:59 2008 @@ -2927,6 +2927,27 @@ </p> + + <p > + By default, JMeter supports the following languages: + </p> + + + <ul > + + + <li > + javascript + </li> + + + <li > + jexl (JMeter version 2.3.2 and later) + </li> + + + </ul> + <p><b>Control Panel</b></p> <div align="center"><img width='396' height='217' src="../images/screenshots/bsfsampler.png"></div> @@ -3032,6 +3053,11 @@ </li> + <li > + props - JMeter Properties - e.g. props.get("START.HMS"); props.put("PROP1","1234"); + </li> + + </ul> <p > @@ -10403,7 +10429,6 @@ Use a value of zero to indicate JMeter should choose a match at random. </li> - <li > A positive number N means to select the nth match. Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=655852&r1=655851&r2=655852&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original) +++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Tue May 13 06:19:59 2008 @@ -87,7 +87,7 @@ bind=Thread Bind browse=Browse... bsf_sampler_title=BSF Sampler -bsf_script=Script to run (variables: log, Label, FileName, Parameters, args[], SampleResult, ctx, vars) +bsf_script=Script to run (variables: log, Label, FileName, Parameters, args[], SampleResult, ctx, vars, props) bsf_script_file=Script file to run bsf_script_language=Scripting language\: bsf_script_parameters=Parameters to pass to script/file\: Modified: jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/BSFSamplerGui.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/BSFSamplerGui.java?rev=655852&r1=655851&r2=655852&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/BSFSamplerGui.java (original) +++ jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/BSFSamplerGui.java Tue May 13 06:19:59 2008 @@ -141,7 +141,10 @@ JLabel label = new JLabel(JMeterUtils.getResString("bsf_script_language")); // $NON-NLS-1$ Properties p = JMeterUtils.loadProperties("org/apache/bsf/Languages.properties"); // $NON-NLS-1$ + // We have added Jexl in BSFSampler. + p.put("jexl", ""); // $NON-NLS-1$ Set keySet = p.keySet(); + // TODO - perhaps weed out ones which don't exist? String [] items = (String[]) keySet.toArray(new String[]{}); Arrays.sort(items); Modified: jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java?rev=655852&r1=655851&r2=655852&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java (original) +++ jakarta/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java Tue May 13 06:19:59 2008 @@ -19,6 +19,7 @@ package org.apache.jmeter.protocol.java.sampler; import java.io.FileInputStream; +import java.util.Properties; import org.apache.bsf.BSFEngine; import org.apache.bsf.BSFException; @@ -30,6 +31,7 @@ import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; +import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; @@ -53,6 +55,9 @@ //- JMX file attributes public BSFSampler() { + BSFManager.registerScriptingEngine("jexl", //$NON-NLS-1$ + "org.apache.commons.jexl.bsf.JexlEngine", //$NON-NLS-1$ + new String[]{"jexl"}); //$NON-NLS-1$ } public String getFilename() { @@ -120,6 +125,7 @@ JMeterContext jmctx = JMeterContextService.getContext(); JMeterVariables vars = jmctx.getVariables(); + Properties props = JMeterUtils.getJMeterProperties(); res.sampleStart(); try { @@ -140,6 +146,7 @@ // Add variables for access to context and variables mgr.declareBean("ctx", jmctx, jmctx.getClass()); // $NON-NLS-1$ mgr.declareBean("vars", vars, vars.getClass()); // $NON-NLS-1$ + mgr.declareBean("props", props, props.getClass()); // $NON-NLS-1$ // N.B. some engines (e.g. Javascript) cannot handle certain declareBean() calls // after the engine has been initialised, so create the engine last @@ -171,9 +178,10 @@ } finally { res.sampleEnd(); IOUtils.closeQuietly(is); - if (bsfEngine != null) { - bsfEngine.terminate(); - } +// Will be done by mgr.terminate() anyway +// if (bsfEngine != null) { +// bsfEngine.terminate(); +// } mgr.terminate(); } Modified: jakarta/jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=655852&r1=655851&r2=655852&view=diff ============================================================================== --- jakarta/jmeter/trunk/xdocs/changes.xml (original) +++ jakarta/jmeter/trunk/xdocs/changes.xml Tue May 13 06:19:59 2008 @@ -200,6 +200,8 @@ <li>Allow use of special name LAST to mean the last test run; applies to -t, -l, -j flags</li> <li>Bug 44418/42178 - CSV Dataset file handling improvements</li> <li>Give BeanShell, Javascript and Jexl functions access to JMeter properties via the "props" object</li> +<li>Give BSF Sampler access to JMeter Properties via "props" object</li> +<li>Add Jexl as a supported BSF Sampler language</li> </ul> <h4>Non-functional changes</h4> Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=655852&r1=655851&r2=655852&view=diff ============================================================================== --- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original) +++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Tue May 13 06:19:59 2008 @@ -906,6 +906,11 @@ website for details of the languages supported. You may need to download the appropriate jars for the language; they should be put in the JMeter <b>lib</b> directory. </p> + <p>By default, JMeter supports the following languages:</p> + <ul> + <li>javascript</li> + <li>jexl (JMeter version 2.3.2 and later)</li> + </ul> </description> <properties> <property name="Name" required="No">Descriptive name for this controller that is shown in the tree.</property> @@ -932,6 +937,7 @@ <li>SampleResult - pointer to the current SampleResult</li> <li>ctx - JMeterContext</li> <li>vars - JMeterVariables - e.g. vars.get("VAR1"); vars.put("VAR2","value"); vars.remove("VAR3"); vars.putObject("OBJ1",new Object());</li> +<li>props - JMeter Properties - e.g. props.get("START.HMS"); props.put("PROP1","1234");</li> </ul> <p> The SampleResult ResponseData is set from the return value of the script. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]