Le 06/11/2012 18:08, [email protected] a ecrit :
Author: pmouawad
Date: Tue Nov 6 18:08:13 2012
New Revision: 1406257
URL: http://svn.apache.org/viewvc?rev=1406257&view=rev
Log:
Bug 54106 - JSR223TestElement should check for file existence when a filename
is set instead of using Text Area content
Bugzilla Id: 54106
Modified:
jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java
jmeter/trunk/xdocs/changes.xml
Modified: jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java?rev=1406257&r1=1406256&r2=1406257&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java
(original)
+++ jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java Tue Nov
6 18:08:13 2012
@@ -36,6 +36,7 @@ import javax.script.ScriptException;
import org.apache.commons.collections.map.LRUMap;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.testelement.AbstractTestElement;
@@ -171,42 +172,48 @@ public abstract class JSR223TestElement
// Hack as in bsh-2.0b5.jar BshScriptEngine implements Compilable but
throws new Error
boolean supportsCompilable = scriptEngine instanceof Compilable
&&
!(scriptEngine.getClass().getName().equals("bsh.engine.BshScriptEngine"));
- if (scriptFile.exists()) {
- BufferedReader fileReader = null;
- try {
- if(supportsCompilable) {
- String cacheKey =
- getScriptLanguage()+"#"+
- scriptFile.getAbsolutePath()+"#"+
- scriptFile.lastModified();
- CompiledScript compiledScript =
- compiledScriptsCache.get(cacheKey);
- if(compiledScript==null) {
- synchronized (compiledScriptsCache) {
- compiledScript =
- compiledScriptsCache.get(cacheKey);
- if(compiledScript==null) {
- // TODO Charset ?
- fileReader = new BufferedReader(new
FileReader(scriptFile),
- (int)scriptFile.length());
For example:
+ if (!StringUtils.isEmpty(getFilename())) {
^^^ ok
+ if(scriptFile.exists()&& scriptFile.canRead()) {
^^^ not ok
Please, take care to formatting the code: one space between if and (
http://wiki.apache.org/jmeter/JMeterEclipse
+ BufferedReader fileReader = null;
+ try {
+ if(supportsCompilable) {
+ String cacheKey =
+ getScriptLanguage()+"#"+
+ scriptFile.getAbsolutePath()+"#"+
+ scriptFile.lastModified();
+ CompiledScript compiledScript =
+ compiledScriptsCache.get(cacheKey);
+ if(compiledScript==null) {
+ synchronized (compiledScriptsCache) {
compiledScript =
- ((Compilable)
scriptEngine).compile(fileReader);
- compiledScriptsCache.put(cacheKey,
compiledScript);
+ compiledScriptsCache.get(cacheKey);
+ if(compiledScript==null) {
+ // TODO Charset ?
+ fileReader = new BufferedReader(new
FileReader(scriptFile),
+ (int)scriptFile.length());
+ compiledScript =
+ ((Compilable)
scriptEngine).compile(fileReader);
+ compiledScriptsCache.put(cacheKey,
compiledScript);
+ }
}
}
+ return compiledScript.eval(bindings);
+ } else {
+ // TODO Charset ?
+ fileReader = new BufferedReader(new
FileReader(scriptFile),
+ (int)scriptFile.length());
+ return scriptEngine.eval(fileReader, bindings);
}
- return compiledScript.eval(bindings);
- } else {
- // TODO Charset ?
- fileReader = new BufferedReader(new FileReader(scriptFile),
- (int)scriptFile.length());
- return scriptEngine.eval(fileReader, bindings);
+ } finally {
+ IOUtils.closeQuietly(fileReader);
}
- } finally {
- IOUtils.closeQuietly(fileReader);
+ } else {
+ throw new ScriptException("Script file
'"+scriptFile.getAbsolutePath()+"' does not exist or is unreadable for
element:"+getName());
}
- } else {
+ } else if(!StringUtils.isEmpty(getScript())){
return scriptEngine.eval(getScript(), bindings);
+ } else {
+ throw new ScriptException("Both script file and script text are empty
for element:"+getName());
}
}
Modified: jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1406257&r1=1406256&r2=1406257&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Tue Nov 6 18:08:13 2012
@@ -90,6 +90,7 @@ This does not affect JMeter operation.
map which held the PreparedStatement for SQL queries. This limitation provoked a
bug<bugzilla>53995</bugzilla>.
It has been removed so now size of these 2 maps is not limited anymore. This change
changes behaviour as starting from this version no PreparedStatement will be closed
during the test.</p>
+<p>Starting with this version JSR223 Test Elements that have an invalid filename
(not existing or unreadable) will make test fail instead of making the element silently
work</p>
<!-- =================== Bug fixes =================== -->
<h2>Bug fixes</h2>
@@ -146,6 +147,7 @@ and right angle bracket (>) in search
<h3>Other samplers</h3>
<ul>
<li><bugzilla>54004</bugzilla> - Webservice Sampler : Allow adding headers to
request with Header Manager</li>
+<li><bugzilla>54106</bugzilla> - JSR223TestElement should check for file existence
when a filename is set instead of using Text Area content</li>
</ul>
<h3>Controllers</h3>