You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2008/05/13 15:19:59 UTC

svn commit: r655852 - in /jakarta/jmeter/trunk: docs/ docs/usermanual/ src/core/org/apache/jmeter/resources/ src/protocol/java/org/apache/jmeter/protocol/java/control/gui/ src/protocol/java/org/apache/jmeter/protocol/java/sampler/ xdocs/ xdocs/usermanual/

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: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org