0
votes

I am new to groovy with Jmeter. Am trying to get the timestamp of 12:00 am GMT from a groovy script and am converting it into Epoc timer

code snippet

use(groovy.time.TimeCategory) {
    daytime = new Date()
    daytime.set(hourOfDay: 0, minute: 0, second: 0)
    time=daytime.getTime()
    log.info(time)

}

when I run this code on groovy Editor online I got a response I expected Response from above script: 1554249600472

When I run the same script using JSR223 sampler in Jmeter am getting the below error response

2019-04-03 10:54:06,597 ERROR o.a.j.m.JSR223PreProcessor: Problem in JSR223 script, JSR223 PreProcessor javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.use() is applicable for argument types: (java.lang.Class, Script20$_run_closure1) values: [class groovy.time.TimeCategory, Script20$_run_closure1@6aaee2b9] Possible solutions: use(java.lang.Class, groovy.lang.Closure), use(java.util.List, groovy.lang.Closure), use([Ljava.lang.Object;), grep(), any(), dump() at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:324) ~[groovy-all-2.4.15.jar:2.4.15] at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72) ~[groovy-all-2.4.15.jar:2.4.15] at javax.script.CompiledScript.eval(Unknown Source) ~[?:1.8.0_201] at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:221) ~[ApacheJMeter_core.jar:5.0 r1840935] at org.apache.jmeter.modifiers.JSR223PreProcessor.process(JSR223PreProcessor.java:44) [ApacheJMeter_components.jar:5.0 r1840935] at org.apache.jmeter.threads.JMeterThread.runPreProcessors(JMeterThread.java:935) [ApacheJMeter_core.jar:5.0 r1840935] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:537) [ApacheJMeter_core.jar:5.0 r1840935] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.0 r1840935] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.0 r1840935] at java.lang.Thread.run(Unknown Source) [?:1.8.0_201] Caused by: groovy.lang.MissingMethodException: No signature of method: org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.use() is applicable for argument types: (java.lang.Class, Script20$_run_closure1) values: [class groovy.time.TimeCategory, Script20$_run_closure1@6aaee2b9] Possible solutions: use(java.lang.Class, groovy.lang.Closure), use(java.util.List, groovy.lang.Closure), use([Ljava.lang.Object;), grep(), any(), dump() at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.callGlobal(GroovyScriptEngineImpl.java:403) ~[groovy-all-2.4.15.jar:2.4.15] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.access$100(GroovyScriptEngineImpl.java:94) ~[groovy-all-2.4.15.jar:2.4.15] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl$3.invokeMethod(GroovyScriptEngineImpl.java:307) ~[groovy-all-2.4.15.jar:2.4.15] at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68) ~[groovy-all-2.4.15.jar:2.4.15] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) ~[groovy-all-2.4.15.jar:2.4.15] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) ~[groovy-all-2.4.15.jar:2.4.15] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:177) ~[groovy-all-2.4.15.jar:2.4.15] at Script20.run(Script20.groovy:1) ~[?:?] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:321) ~[groovy-all-2.4.15.jar:2.4.15]

... 9 more

2
you don't need use(...){...} at all. just keep what you have inside {}daggett
Hi @daggett thank you I tried the below code, but am observing the response still { use groovy.time.TimeCategory daytime = new Date() daytime.set(hourOfDay: 0, minute: 0, second: 0) time=daytime.getTime() log.info(time) } Error Observed as belowkeshav kashyap
2019-04-04 10:13:20,562 ERROR o.a.j.m.JSR223PreProcessor: Problem in JSR223 script, JSR223 PreProcessor javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script29.groovy: 1: Ambiguous expression could be either a parameterless closure expression or an isolated open code block; solution: Add an explicit closure parameter list, e.g. {it -> ...}, or force it to be treated as an open block by giving it a label, e.g. L:{...} @ line 1, column 1. { ^ 1 errorkeshav kashyap

2 Answers

0
votes

i don't know why use does not work for you (could be groovy version or something else)

however you don't need it to clear time:

def daytime = new Date()
daytime.clearTime()                     //clear the time
log.info( daytime.getTime() as String ) //print time as milliseconds
0
votes

Thank you, People, for your kind and quick responses, typecasting of the Output worked. below is the code snippet that gave me the successful response

use(groovy.time.TimeCategory) {
   def  daytime = new Date()
    daytime.set(hourOfDay: 0, minute: 0, second: 0)
    starttime=daytime+5.hour+30.minute
    time=starttime.getTime()
    log.info(time as String) 
   }