jmeter-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pmoua...@apache.org
Subject svn commit: r1406257 - in /jmeter/trunk: src/core/org/apache/jmeter/util/JSR223TestElement.java xdocs/changes.xml
Date Tue, 06 Nov 2012 18:08:14 GMT
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()); 
+        if (!StringUtils.isEmpty(getFilename())) {
+            if(scriptFile.exists() && scriptFile.canRead()) {
+                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 (&gt;) 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>



Mime
View raw message