From 8fe20ff7e9cb864b118ec650a854873de19abbac Mon Sep 17 00:00:00 2001 From: ra0077 Date: Thu, 4 Aug 2016 23:12:59 +0200 Subject: [PATCH 1/4] Bug59945_DefaultGroovyEngineToJSR223ElementsV2 Hi, If the script language has not been chosen on the GUI, I propose to add a WARN message into the log to inform that the script will be interpreted as a groovy script It's avoid message like "ERROR - jmeter.protocol.java.sampler.JSR223Sampler: Problem in JSR223 script Echantillon JSR223, message:javax.script.ScriptException: Cannot find engine named: '', ensure you set language field in JSR223 Test Element:Echantillon JSR223" and allow to execute the script Antonio --- .../org/apache/jmeter/util/JSR223TestElement.java | 11 +++++++++-- .../org/apache/jmeter/util/ScriptingTestElement.java | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/core/org/apache/jmeter/util/JSR223TestElement.java b/src/core/org/apache/jmeter/util/JSR223TestElement.java index 896581fd41d..236bc9a03e1 100644 --- a/src/core/org/apache/jmeter/util/JSR223TestElement.java +++ b/src/core/org/apache/jmeter/util/JSR223TestElement.java @@ -66,6 +66,8 @@ public static ScriptEngineManager getInstance() { } private static final long serialVersionUID = 233L; + + private static final Logger log = LoggingManager.getLoggerForClass(); /** If not empty then script in ScriptText will be compiled and cached */ private String cacheKey = ""; @@ -86,11 +88,16 @@ public JSR223TestElement() { } protected ScriptEngine getScriptEngine() throws ScriptException { - final String lang = getScriptLanguage(); + String lang = getScriptLanguage(); + + if (lang.isEmpty()) { + lang = defaultScriptLanguage; + log.warn("Script language has not been chosen on the UI, the script will be interpreted as a groovy script"); + } ScriptEngine scriptEngine = getInstance().getEngineByName(lang); if (scriptEngine == null) { - throw new ScriptException("Cannot find engine named: '"+lang+"', ensure you set language field in JSR223 Test Element:"+getName()); + throw new ScriptException("Cannot find engine named: '"+lang+"', ensure you set language field in JSR223 Test Element: "+getName()); } return scriptEngine; diff --git a/src/core/org/apache/jmeter/util/ScriptingTestElement.java b/src/core/org/apache/jmeter/util/ScriptingTestElement.java index 45d7387a5b4..76d7d704662 100644 --- a/src/core/org/apache/jmeter/util/ScriptingTestElement.java +++ b/src/core/org/apache/jmeter/util/ScriptingTestElement.java @@ -36,6 +36,8 @@ public abstract class ScriptingTestElement extends AbstractTestElement { private String script = ""; // script (if file not provided) protected String scriptLanguage = ""; // BSF/JSR223 language to use + + protected String defaultScriptLanguage = "groovy"; // if no language is chosen in GUI //-- For TestBean implementations only public ScriptingTestElement() { From 8c8c4d0bd8831c678ea3a8bade506fcc446cb995 Mon Sep 17 00:00:00 2001 From: ra0077 Date: Fri, 5 Aug 2016 14:31:01 +0200 Subject: [PATCH 2/4] Hi, I have modified the patch to: have better/useful warning message transform defaultScriptLanguage string in final static string Antonio --- src/core/org/apache/jmeter/util/JSR223TestElement.java | 2 +- src/core/org/apache/jmeter/util/ScriptingTestElement.java | 2 +- xdocs/changes.xml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/org/apache/jmeter/util/JSR223TestElement.java b/src/core/org/apache/jmeter/util/JSR223TestElement.java index 236bc9a03e1..eb3801c2365 100644 --- a/src/core/org/apache/jmeter/util/JSR223TestElement.java +++ b/src/core/org/apache/jmeter/util/JSR223TestElement.java @@ -92,7 +92,7 @@ protected ScriptEngine getScriptEngine() throws ScriptException { if (lang.isEmpty()) { lang = defaultScriptLanguage; - log.warn("Script language has not been chosen on the UI, the script will be interpreted as a groovy script"); + log.warn("Script language has not been chosen on the UI: "+getName()+", the script will be interpreted as a groovy script"); } ScriptEngine scriptEngine = getInstance().getEngineByName(lang); diff --git a/src/core/org/apache/jmeter/util/ScriptingTestElement.java b/src/core/org/apache/jmeter/util/ScriptingTestElement.java index 76d7d704662..91afc1197b1 100644 --- a/src/core/org/apache/jmeter/util/ScriptingTestElement.java +++ b/src/core/org/apache/jmeter/util/ScriptingTestElement.java @@ -37,7 +37,7 @@ public abstract class ScriptingTestElement extends AbstractTestElement { protected String scriptLanguage = ""; // BSF/JSR223 language to use - protected String defaultScriptLanguage = "groovy"; // if no language is chosen in GUI + protected final static String defaultScriptLanguage = "groovy"; // if no language is chosen in GUI //-- For TestBean implementations only public ScriptingTestElement() { diff --git a/xdocs/changes.xml b/xdocs/changes.xml index 06dad2b8073..1c8eee2004c 100644 --- a/xdocs/changes.xml +++ b/xdocs/changes.xml @@ -117,6 +117,7 @@ Summary Non-functional changes From 3d4a1650da0bb0604336628df012859c0fc1c058 Mon Sep 17 00:00:00 2001 From: ra0077 Date: Fri, 5 Aug 2016 16:38:25 +0200 Subject: [PATCH 3/4] Take account of advices --- src/core/org/apache/jmeter/util/JSR223TestElement.java | 5 +++-- src/core/org/apache/jmeter/util/ScriptingTestElement.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/org/apache/jmeter/util/JSR223TestElement.java b/src/core/org/apache/jmeter/util/JSR223TestElement.java index eb3801c2365..c067df4a31a 100644 --- a/src/core/org/apache/jmeter/util/JSR223TestElement.java +++ b/src/core/org/apache/jmeter/util/JSR223TestElement.java @@ -90,8 +90,9 @@ public JSR223TestElement() { protected ScriptEngine getScriptEngine() throws ScriptException { String lang = getScriptLanguage(); - if (lang.isEmpty()) { - lang = defaultScriptLanguage; + if (StringUtils.isEmpty(lang)) { + lang = DEFAULT_SCRIPT_LANGUAGE; + setScriptLanguage(lang); log.warn("Script language has not been chosen on the UI: "+getName()+", the script will be interpreted as a groovy script"); } diff --git a/src/core/org/apache/jmeter/util/ScriptingTestElement.java b/src/core/org/apache/jmeter/util/ScriptingTestElement.java index 91afc1197b1..b578b4822ff 100644 --- a/src/core/org/apache/jmeter/util/ScriptingTestElement.java +++ b/src/core/org/apache/jmeter/util/ScriptingTestElement.java @@ -37,7 +37,7 @@ public abstract class ScriptingTestElement extends AbstractTestElement { protected String scriptLanguage = ""; // BSF/JSR223 language to use - protected final static String defaultScriptLanguage = "groovy"; // if no language is chosen in GUI + protected final static String DEFAULT_SCRIPT_LANGUAGE = "groovy"; // if no language is chosen in GUI //-- For TestBean implementations only public ScriptingTestElement() { From 69e27bd2d78072978cc1ad3468fbf10a427d5b2b Mon Sep 17 00:00:00 2001 From: ra0077 Date: Thu, 22 Sep 2016 14:58:22 +0200 Subject: [PATCH 4/4] Remove log message as discuted in PR and like "CSS/JQuery Extractor" --- src/core/org/apache/jmeter/util/JSR223TestElement.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/org/apache/jmeter/util/JSR223TestElement.java b/src/core/org/apache/jmeter/util/JSR223TestElement.java index c067df4a31a..aaf818e7376 100644 --- a/src/core/org/apache/jmeter/util/JSR223TestElement.java +++ b/src/core/org/apache/jmeter/util/JSR223TestElement.java @@ -93,7 +93,6 @@ protected ScriptEngine getScriptEngine() throws ScriptException { if (StringUtils.isEmpty(lang)) { lang = DEFAULT_SCRIPT_LANGUAGE; setScriptLanguage(lang); - log.warn("Script language has not been chosen on the UI: "+getName()+", the script will be interpreted as a groovy script"); } ScriptEngine scriptEngine = getInstance().getEngineByName(lang);