1

I am having problems running groovy scripts under Jmeter. Can someone advise if I need to enable/tweak something for groovy to execute.

*Jmeter version = 5.2.1

Groovy = 2.4.16 / Groovy Scripting Engine 2.0

Jar = /lib/groovy-all-2.4.16.Jar*

I have been following an online example so I know this script should work.

I have placed the following script under JSR223 Sampler:

import groovy.io.FileType String folderPath = "data-management" new File(folderPath).eachfile (FileType.FILES) { file -> /* Delete file if file name contains .dat */ if (file.name.contains('.dat')) file.delete() } 

Sampler Result gives:

Response code:500 Response message:javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.io.File.eachfile() is applicable for argument types: (groovy.io.FileType, Script2$_run_closure1) values: [FILES, Script2$_run_closure1@17b02a] Possible solutions: eachFile(groovy.io.FileType, groovy.lang.Closure), eachFile(groovy.lang.Closure), eachLine(int, groovy.lang.Closure), eachLine(java.lang.String, groovy.lang.Closure), eachLine(groovy.lang.Closure), isFile() 

Extract from Logs:

2020-08-19 17:49:15,917 INFO o.a.j.t.JMeterThread: Thread started: tearDown Thread Group 1-1 2020-08-19 17:49:15,951 ERROR o.a.j.p.j.s.JSR223Sampler: **Problem in JSR223 script JSR223 Sampler**, message: javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.io.File.eachfile() is applicable for argument types: (groovy.io.FileType, Script2$_run_closure1) values: [FILES, Script2$_run_closure1@17b02a] Possible solutions: eachFile(groovy.io.FileType, groovy.lang.Closure), eachFile(groovy.lang.Closure), eachLine(int, groovy.lang.Closure), eachLine(java.lang.String, groovy.lang.Closure), eachLine(groovy.lang.Closure), isFile() javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.io.File.eachfile() is applicable for argument types: (groovy.io.FileType, Script2$_run_closure1) values: [FILES, Script2$_run_closure1@17b02a] Possible solutions: eachFile(groovy.io.FileType, groovy.lang.Closure), eachFile(groovy.lang.Closure), eachLine(int, groovy.lang.Closure), eachLine(java.lang.String, groovy.lang.Closure), eachLine(groovy.lang.Closure), isFile() at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:324) ~[groovy-all-2.4.16.jar:2.4.16] at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72) ~[groovy-all-2.4.16.jar:2.4.16] at javax.script.CompiledScript.eval(CompiledScript.java:92) ~[?:1.8.0_241] at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:223) ~[ApacheJMeter_core.jar:5.2.1] at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:71) [ApacheJMeter_java.jar:5.2.1] at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:627) [ApacheJMeter_core.jar:5.2.1] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:551) [ApacheJMeter_core.jar:5.2.1] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490) [ApacheJMeter_core.jar:5.2.1] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257) [ApacheJMeter_core.jar:5.2.1] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_241] Caused by: groovy.lang.MissingMethodException: No signature of method: java.io.File.eachfile() is applicable for argument types: (groovy.io.FileType, Script2$_run_closure1) values: [FILES, Script2$_run_closure1@17b02a] Possible solutions: eachFile(groovy.io.FileType, groovy.lang.Closure), eachFile(groovy.lang.Closure), eachLine(int, groovy.lang.Closure), eachLine(java.lang.String, groovy.lang.Closure), eachLine(groovy.lang.Closure), isFile() at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:71) ~[groovy-all-2.4.16.jar:2.4.16] at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:48) ~[groovy-all-2.4.16.jar:2.4.16] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[groovy-all-2.4.16.jar:2.4.16] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) ~[groovy-all-2.4.16.jar:2.4.16] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136) ~[groovy-all-2.4.16.jar:2.4.16] at Script2.run(Script2.groovy:4) ~[?:?] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:321) ~[groovy-all-2.4.16.jar:2.4.16] ... 9 more 2020-08-19 17:49:15,955 INFO o.a.j.t.JMeterThread: Thread is done: tearDown Thread Group 1-1 2020-08-19 17:49:15,955 INFO o.a.j.t.JMeterThread: Thread finished: tearDown Thread Group 1-1 

Kind regards

Raja

1 Answer 1

1

Groovy is a case sensitive language.

So

eachfile

Must be:

eachFile

See:

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.