This post was updated on .
저번에 문의에 대한 빠른 답변이 감사해서
또 찾게 되었습니다. 이번에는 스크립트 작성에 대해 문의를 드리려고 합니다. 지금 TCP Socket 서버 test를 하려고 하는데, socket connection이 실패하게 되면 에러 카운트를 올려서 결과 리포트에 보이게 하고 싶습니다 참고 스크립트 소스-------------------------------------------------------------- try: sock.connect((HOST, PORT)) except socket.error, msg: sys.stderr.write("[ERROR] %s\n" % msg[1]) grinder.statistics.forLastTest.success = 0 ------------------------------------------------------------------------------ 위의 API를 사용하면 될 줄 알았는데, connection refused가 발생하게 해서 스크립트 검증을 했더니 아래와 같은 에러를 출력하였습니다. 참고 스크립트 에러-------------------------------------------------------------------------------------- 013-03-11 01:11:21,697 ERROR Aborted run: Java exception calling TestRunner net.grinder.scriptengine.jython.JythonScriptExecutionException: Java exception calling TestRunner grinder.statistics.forLastTest.success = 0 File "${NGRINDER_HOME}\script\kimdals\Test_TCP.py", line 41, in __call__ grinder.statistics.forLastTest.success = 0 File "${NGRINDER_HOME}\script\kimdals\Test_TCP.py", line 41, in __call__ net.grinder.script.InvalidContextException: No tests have been performed by this thread. at net.grinder.engine.process.ScriptStatisticsImplementation.getForLastTest(ScriptStatisticsImplementation.java:130) ~[grinder-core-3.9.1.jar:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_07] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_07] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_07] at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_07] at org.python.core.PyBeanProperty._doget(PyBeanProperty.java:33) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyObject._doget(PyObject.java:1072) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyObject.__get__(PyObject.java:3674) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyObject.object___findattr__(PyObject.java:3706) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyObject.object___getattribute__(PyObject.java:3690) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyObject$object___getattribute___exposer.__call__(Unknown Source) ~[jython-standalone-2.5.3.jar:na] at org.python.core.Deriveds.__findattr_ex__(Deriveds.java:59) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyObjectDerived.__findattr_ex__(PyObjectDerived.java:983) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyObject.__getattr__(PyObject.java:923) ~[jython-standalone-2.5.3.jar:na] at org.python.pycode._pyx1.__call__$3(${NGRINDER_HOME}\script\kimdals\Test_TCP.py:79) ~ na:na] at org.python.pycode._pyx1.call_function(${NGRINDER_HOME}\script\kimdals\Test_TCP.py) ~[na:na] at org.python.core.PyTableCode.call(PyTableCode.java:165) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyBaseCode.call(PyBaseCode.java:301) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyBaseCode.call(PyBaseCode.java:194) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyFunction.__call__(PyFunction.java:387) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyMethod.instancemethod___call__(PyMethod.java:220) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyMethod.__call__(PyMethod.java:211) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyMethod.__call__(PyMethod.java:206) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyObject.invoke(PyObject.java:3555) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyInstance.instance___call__(PyInstance.java:351) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyInstance.__call__(PyInstance.java:342) ~[jython-standalone-2.5.3.jar:na] at org.python.core.PyObject.__call__(PyObject.java:371) ~[jython-standalone-2.5.3.jar:na] at net.grinder.scriptengine.jython.JythonScriptEngine$JythonWorkerRunnable.run(JythonScriptEngine.java:250) ~[grinder-core-3.9.1.jar:na] at net.grinder.engine.process.GrinderThread.run(GrinderThread.java:118) ~[grinder-core-3.9.1.jar:na] at java.lang.Thread.run(Thread.java:722) [na:1.7.0_07] ------------------------------------------------------------------------------------------------------- 아 말이 두서없이 길었는데, 요점은 결과 리포트에 에러를 체크할 수 있는 API가 무엇이 있는지 궁금합니다. |
Administrator
|
forLastTest 는 현재 쓰레드가 바인딩된 테스트가 한개 이상 실행되었을 때만 동작합니다.
위 경우는 socket 을 Test(1, "wow").record(socket) 라고 하셔서 instrument 된 socket 으로 작업을 하시거나 아니면 def doTest(socket) socket.. # 여기에서 소켓 호출을 하시고.. Test(1, "wow").record(doTest) class TestRunner : def __call__(self) : try : doTest(Socket(host, port)) except : # 여기서 lastTest.success 를 체크하세요. 이렇게 하시면 될 겁니다. |
아~정말 감사합니다!
늦은 시간에 댓글도 달아주시고! 도움이 많이 되고 있습니다~ 아래와 같은 방식을 사용하여 에러처리가 되는 것을 확인했습니다 |
Free forum by Nabble | Edit this page |