Fixed On Tue, Nov 6, 2012 at 8:08 PM, Milamber <[email protected]> wrote:
> > > 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<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<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<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<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> >> >> >> >> > -- Cordialement. Philippe Mouawad.
