Наблюдение за ошибкой при выполнении скрипта Groovy через пре-процессор JSR223 в Jmeter 5.0 - PullRequest
0 голосов
/ 03 апреля 2019

Я новичок в заводной с Jmeter. Я пытаюсь получить временную метку 12:00 по Гринвичу из отличного сценария и преобразовываю ее в таймер Epoc

фрагмент кода

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

}

когда я запускаю этот код в Groovy Editor онлайн, я получаю ожидаемый ответ Сценарий ответа сверху: 1554249600472

Когда я запускаю тот же сценарий с использованием сэмплера JSR223 в Jmeter, я получаю следующее сообщение об ошибке

2019-04-03 10: 54: 06,597 ОШИБКА o.a.j.m.JSR223PreProcessor: проблема в сценарии JSR223, препроцессоре JSR223 javax.script.ScriptException: groovy.lang.MissingMethodException: нет сигнатуры метода: org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.use () применим для типов аргументов: (java.lang.Class, Script20 $ _run_closure1) значения: [ класс groovy.time.TimeCategory, Script20 $ _run_closure1 @ 6aaee2b9] Возможные решения: use (java.lang.Class, groovy.lang.Closure), use (java.util.List, groovy.lang.Closure), use ([Ljava.lang.Object;), grep (), any ( ), дамп () 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 (Неизвестный источник) ~ [?: 1.8.0_201] в org.apache.jmeter.util.JSR223TestElement.processFileOrScript (JSR223TestElement.java:221) ~ [ApacheJMeter_core.jar: 5.0 r1840935] в org.apache.jmeter.modifiers.JSR223PreProcessor.process (JSR223PreProcessor.java:44) [ApacheJMeter_components.jar: 5.0 r1840935] в org.apache.jmeter.threads.JMeterThread.runPreProcessors (JMeterThread.java:935) [ApacheJMeter_core.jar: 5.0 r1840935] в org.apache.jmeter.threads.JMeterThread.executeSamplePackage (JMeterThread.java:537) [ApacheJMeter_core.jar: 5.0 r1840935] в org.apache.jmeter.threads.JMeterThread.processSampler (JMeterThread.java:486) [ApacheJMeter_core.jar: 5.0 r1840935] в org.apache.jmeter.threads.JMeterThread.run (JMeterThread.java:253) [ApacheJMeter_core.jar: 5.0 r1840935] at java.lang.Thread.run (неизвестный источник) [?: 1.8.0_201] Вызывается: groovy.lang.MissingMethodException: Нет подписи метода: org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.use () применимо для типов аргументов: (java.lang.Class, Script20 $ _run_closure1) значения: [класс groovy. time.TimeCategory, Script20 $ _run_closure1 @ 6aaee2b9] Возможные решения: use (java.lang.Class, groovy.lang.Closure), use (java.util.List, groovy.lang.Closure), use ([Ljava.lang.Object;), grep (), any ( ), дамп () at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.callGlobal (GroovyScriptEngineImpl.java:403) ~ [groovy-all-2.4.15.jar: 2.4.15] в 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] в org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent (PogoMetaClassSite.java:68) ~ [groovy-all-2.4.15.jar: 2.4.15] в org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent (CallSiteArray.java:51) ~ [groovy-all-2.4.15.jar: 2.4.15] в org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent (AbstractCallSite.java:157) ~ [groovy-all-2.4.15.jar: 2.4.15] в org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent (AbstractCallSite.java:177) ~ [groovy-all-2.4.15.jar: 2.4.15] на 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

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Спасибо, люди, за ваши добрые и быстрые ответы, приведение типов к выводу сработало.ниже приведен фрагмент кода, который дал мне успешный ответ

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) 
   }
0 голосов
/ 04 апреля 2019

я не знаю, почему use не работает для вас (это может быть отличная версия или что-то еще)

однако вам не нужно очищать время:

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