I want to use Zorka spy to capture method duration and put this statistics in a JMS queue which will be used for further processing the statistic. I tried to introduced a method called logDuration in ZorkaLib.java that will put method statistics into JMS queue
The signature of the method is as follows
public void logDuration( String text, String startTime, String endTime )
So that I can use this logDuration in bsh scripts. My script looks like this
spy.add(spy.instance("REPORT_ENCRYPTION_REQUESTS")
.onEnter(spy.fetchArg("INTOKEN", 1),spy.fetchTime("STARTTIME"), spy.zorkaLog("INFO", "SKP", "Invoking crypto services to get the token: ${INTOKEN}. Stefan"))
.onReturn(spy.fetchTime("ENDTIME"))
.onSubmit(zorka.logDuration("Crypto execution :", "STARTTIME","ENDTIME"), spy.tdiff("STARTTIME", "ENDTIME","EXETIME"), spy.zorkaLog("INFO","SKP", "Execution time of encrypt : ${EXETIME}"))
.include(spy.byMethod("com.skp.spkreports.service.CryptoREST", "changePassword")));
When I try to execute the above script, I get the following exception
2016-04-26 16:46:04 DEBUG ZorkaBshAgent Error executing script encrypt.bsh [com.jitlogic.zorka.deps.bsh.EvalError: Sourced file: /opt/camunda/jboss/server/jboss-as-7.2.0.Final/zorka-1.0.15/scripts/encrypt.bsh : Undefined argument: zorka .logDuration ( "Crypto execution :" , "STARTTIME" , "ENDTIME" ) : at Line: 4 : in file: /opt/camunda/jboss/server/jboss-as-7.2.0.Final/zorka-1.0.15/scripts/encrypt.bsh : ( zorka .logDuration ( "Crypto execution :" , "STARTTIME" , "ENDTIME" ) , spy .tdiff ( "STARTTIME" , "ENDTIME" , "EXETIME" ) , spy .zorkaLog ( "INFO" , "SKP" , "Execution time of encrypt : ${EXETIME}" ) )
]
com.jitlogic.zorka.deps.bsh.EvalError: Sourced file: /opt/camunda/jboss/server/jboss-as-7.2.0.Final/zorka-1.0.15/scripts/encrypt.bsh : Undefined argument: zorka .logDuration ( "Crypto execution :" , "STARTTIME" , "ENDTIME" ) : at Line: 4 : in file: /opt/camunda/jboss/server/jboss-as-7.2.0.Final/zorka-1.0.15/scripts/encrypt.bsh : ( zorka .logDuration ( "Crypto execution :" , "STARTTIME" , "ENDTIME" ) , spy .tdiff ( "STARTTIME" , "ENDTIME" , "EXETIME" ) , spy .zorkaLog ( "INFO" , "SKP" , "Execution time of encrypt : ${EXETIME}" ) )
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.getArguments(BshEvaluatingVisitor.java:361)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.doName(BshEvaluatingVisitor.java:1640)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.doSuffix(BshEvaluatingVisitor.java:1595)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.evalPrimaryExpr(BshEvaluatingVisitor.java:1502)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.visit(BshEvaluatingVisitor.java:1540)
at com.jitlogic.zorka.deps.bsh.ast.BSHPrimaryExpression.accept(BSHPrimaryExpression.java:36)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.getArguments(BshEvaluatingVisitor.java:359)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.visit(BshEvaluatingVisitor.java:1423)
at com.jitlogic.zorka.deps.bsh.ast.BSHMethodInvocation.accept(BSHMethodInvocation.java:46)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.evalPrimaryExpr(BshEvaluatingVisitor.java:1521)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.visit(BshEvaluatingVisitor.java:1540)
at com.jitlogic.zorka.deps.bsh.ast.BSHPrimaryExpression.accept(BSHPrimaryExpression.java:36)
at com.jitlogic.zorka.deps.bsh.Interpreter.eval(Interpreter.java:663)
at com.jitlogic.zorka.deps.bsh.Interpreter.source(Interpreter.java:583)
at com.jitlogic.zorka.deps.bsh.Interpreter.source(Interpreter.java:596)
at com.jitlogic.zorka.core.ZorkaBshAgent.loadScript(ZorkaBshAgent.java:166)
at com.jitlogic.zorka.core.ZorkaLib.loadScript(ZorkaLib.java:502)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.jitlogic.zorka.deps.bsh.Reflect.invokeMethod(Reflect.java:140)
at com.jitlogic.zorka.deps.bsh.Reflect.invokeObjectMethod(Reflect.java:73)
at com.jitlogic.zorka.deps.bsh.Name.invokeMethod(Name.java:848)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.visit(BshEvaluatingVisitor.java:1429)
at com.jitlogic.zorka.deps.bsh.ast.BSHMethodInvocation.accept(BSHMethodInvocation.java:46)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.evalPrimaryExpr(BshEvaluatingVisitor.java:1521)
at com.jitlogic.zorka.deps.bsh.interpreter.BshEvaluatingVisitor.visit(BshEvaluatingVisitor.java:1540)
at com.jitlogic.zorka.deps.bsh.ast.BSHPrimaryExpression.accept(BSHPrimaryExpression.java:36)
at com.jitlogic.zorka.deps.bsh.Interpreter.eval(Interpreter.java:663)
at com.jitlogic.zorka.deps.bsh.Interpreter.eval(Interpreter.java:757)
at com.jitlogic.zorka.deps.bsh.Interpreter.eval(Interpreter.java:746)
at com.jitlogic.zorka.core.ZorkaBshAgent.eval(ZorkaBshAgent.java:138)
at com.jitlogic.zorka.core.ZorkaBshWorker$1.call(ZorkaBshWorker.java:87)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
2016-04-26 16:46:04 DEBUG ZabbixRequestHandler OK [t=18ms] 'zorka.loadScript("encrypt.bsh")' -> 'Error: Sourced file: /opt/camunda/jboss/server/jboss-as-7.2.0.Final/zorka-1.0.15/scripts/encrypt.bsh : Undefined argument: zorka .logDuration ( "Crypto execution :" , "STARTTIME" , "ENDTIME" ) : at Line: 4 : in file: /opt/camunda/jboss/server/jboss-as-7.2.0.Final/zorka-1.0.15/scripts/encrypt.bsh : ( zorka .logDuration ( "Crypto execution :" , "STARTTIME" , "ENDTIME" ) , spy .tdiff ( "STARTTIME" , "ENDTIME" , "EXETIME" ) , spy .zorkaLog ( "INFO" , "SKP" , "Execution time of encrypt : ${EXETIME}" ) )
'
Can you please help me to resolve this problem?
Thank you.