Extending Zorka lib

27 views
Skip to first unread message

Samraj Subramaniam

unread,
Apr 26, 2016, 12:51:14 PM4/26/16
to Zorka Users
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.

Samraj Subramaniam

unread,
Apr 27, 2016, 6:20:02 AM4/27/16
to Zorka Users
Solved the problem. It was so stupid from my side. If we want to use a method in Spy onSubmit or onReturn, it should be of the type SpyProcessor. Impletemented a class that implements SpyProcessor and added a method in SpyLib class like below

public SpyProcessor logDuration( String text, String startTime, String endTime )
Reply all
Reply to author
Forward
0 new messages