Re: Initialization of object once per thread
Philip Aston <[email protected]> Wed, 15 Apr 2015 19:24:01 +0100
| Newsgroups | gmane.comp.java.grinder.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --===============0778897499551893056== Content-Type: multipart/alternative; boundary="------------010502060907080906040301" This is a multi-part message in MIME format. --------------010502060907080906040301 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi Darren, This really belongs on grinder-use - grinder-development is for the development of the grinder and has fewer subscribers. Anyway, its hard to say exactly because I don't know what CreateAppPerf does. The full stack trace from the output log would help. The difference between code executed at the top level and that executed from TestRunner.__init__() or __call__() is that the former is not executed in a worker thread, so can't itself call instrumented code. I suspect that's the problem. You could try moving the "createAppTest.record(createAppPerf.createApp)" line to TestRunner.__init__(). Calling record multiple times for the same Test and target is essentially a no-op. - Phil On 15/04/15 16:28, Darren Ball wrote: > This is exactly what I am getting along with the script, any insight > as to why the object is not available inside of the __call__ method > would be great. > > > 2015-04-15 15:25:14,768 INFO i-ccfd793a-1 thread-0: starting, will do > 1 run > 2015-04-15 15:25:14,768 INFO i-ccfd793a-1 : start time is > 1429111514767 ms since Epoch > 2015-04-15 15:25:14,851 ERROR i-ccfd793a-1 thread-0 [ run-0 ]: aborted > run - Java exception calling TestRunner > net.grinder.scriptengine.jython.JythonScriptExecutionException: Java > exception calling TestRunner > createAppPerf.createApp(1,100) > File "/home/grinder/./i-ccfd793a-file-store/current/createapp.py", > line 13, in __call__ > java.lang.NullPointerException: null > > The script: > > from net.grinder.script import Test > from net.grinder.script.Grinder import grinder > from com.myapp.api.controllers.perf.app import CreateAppPerf > > createAppTest =3D Test(1, "Create APP 1 Table 100 Fields") > createAppPerf =3D CreateAppPerf() > createAppPerf.initialize() > createAppTest.record(createAppPerf.createApp) > > > class TestRunner: > def __call__(self): > createAppPerf.createApp(1,100) > > > On Wed, Apr 15, 2015 at 11:05 AM, Darren Ball <[email protected] > <mailto:[email protected]>> wrote: > > Hi All, > > I recently found the following example online: > > If you want one instance for all worker threads in a process, > call it > from the top level of your script. > > > from mypackage import MyTest > > myTest =3D MyTest() > myTest.init() > > class TestRunner: > def __call__(self): > # use myTest > > I have this exact code with onle the MyTest object being the > differentiator, and in the call I get a null pointer exception. > > > from net.grinder.script import Test > from net.grinder.script.Grinder import grinder > from com.myapp.api.controllers.perf.app import CreateAppPerf > > createAppPerf =3D CreateAppPerf() > createAppPerf.initialize() > > createAppTest =3D Test(1, "Create APP 1 Table 100 Fields") > createAppTest.record(createAppPerf.createApp) > > class TestRunner: > def __call__(self): > createAppPerf.createApp(1,100) > > > > Moving the createAppPerf.initialize() to the __init__ method > works, but this is not what I would like. I would to initialize > only once. > > Any suggestions as how to do this so that createAppPerf is not > null in __call__? > > > Thanks, > Darren > --------------010502060907080906040301 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> </head> <body bgcolor="#FFFFFF" text="#000000"> <div class="moz-cite-prefix">Hi Darren,<br> <br> This really belongs on grinder-use - grinder-development is for the development of the grinder and has fewer subscribers.<br> <br> Anyway, its hard to say exactly because I don't know what CreateAppPerf does. The full stack trace from the output log would help.<br> <br> The difference between code executed at the top level and that executed from TestRunner.__init__() or __call__() is that the former is not executed in a worker thread, so can't itself call instrumented code. I suspect that's the problem. You could try moving the "createAppTest.record(createAppPerf.createApp)" line to TestRunner.__init__(). Calling record multiple times for the same Test and target is essentially a no-op.<br> <br> - Phil<br> <br> <br> <br> On 15/04/15 16:28, Darren Ball wrote:<br> </div> <blockquote cite="mid:CA+YPNhdCkNg6yROFJBE57h1H7gYud331uvRmdMmb3enq+170pw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org" type="cite"> <div dir="ltr">This is exactly what I am getting along with the script, any insight as to why the object is not available inside of the __call__ method would be great. <div><br> <div><br> </div> <div> <div>2015-04-15 15:25:14,768 INFO i-ccfd793a-1 thread-0: starting, will do 1 run</div> <div>2015-04-15 15:25:14,768 INFO i-ccfd793a-1 : start time is 1429111514767 ms since Epoch</div> <div>2015-04-15 15:25:14,851 ERROR i-ccfd793a-1 thread-0 [ run-0 ]: aborted run - Java exception calling TestRunner</div> <div>net.grinder.scriptengine.jython.JythonScriptExecutionException: Java exception calling TestRunner</div> <div><span class="" style="white-space:pre"> </span>createAppPerf.createApp(1,100)</div> <div><span class="" style="white-space:pre"> </span>File "/home/grinder/./i-ccfd793a-file-store/current/createapp.py", line 13, in __call__</div> <div>java.lang.NullPointerException: null</div> </div> <div><br> </div> <div>The script:</div> <div><br> </div> <div> <div>from net.grinder.script import Test</div> <div>from net.grinder.script.Grinder import grinder</div> <div>from com.myapp.api.controllers.perf.app import CreateAppPerf</div> <div><br> </div> <div>createAppTest = Test(1, "Create APP 1 Table 100 Fields")</div> <div>createAppPerf = CreateAppPerf()</div> <div>createAppPerf.initialize()</div> <div>createAppTest.record(createAppPerf.createApp)</div> <div><br> </div> <div><br> </div> <div>class TestRunner:</div> <div> def __call__(self):</div> <div> createAppPerf.createApp(1,100)</div> </div> <div><br> </div> </div> </div> <div class="gmail_extra"><br> <div class="gmail_quote">On Wed, Apr 15, 2015 at 11:05 AM, Darren Ball <span dir="ltr"><<a moz-do-not-send="true" href="mailto:[email protected]" target="_blank">[email protected]</a>></span> wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div dir="ltr">Hi All,<br> <br> I recently found the following example online:<br> <br> <blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">If you want one instance for all worker threads in a process, call it<br> from the top level of your script.</blockquote> <br> <blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">from mypackage import MyTest<br> <br> myTest = MyTest()<br> myTest.init()<br> <br> class TestRunner:<br> def __call__(self):<br> # use myTest<br> <br> </blockquote> I have this exact code with onle the MyTest object being the differentiator, and in the call I get a null pointer exception. <div><br> </div> <div><br> <div> <div> <div>from net.grinder.script import Test</div> <div>from net.grinder.script.Grinder import grinder</div> <div>from com.myapp.api.controllers.perf.app import CreateAppPerf</div> <div><br> </div> <div>createAppPerf = CreateAppPerf()</div> <div>createAppPerf.initialize()</div> <div><br> </div> <div>createAppTest = Test(1, "Create APP 1 Table 100 Fields")</div> <div>createAppTest.record(createAppPerf.createApp)</div> <div><br> </div> <div>class TestRunner:</div> <div> def __call__(self):</div> <div> createAppPerf.createApp(1,100)</div> </div> </div> </div> <div><br> </div> <div><br> </div> <div><br> </div> <div>Moving the createAppPerf.initialize() to the __init__ method works, but this is not what I would like. I would to initialize only once.</div> <div><br> </div> <div>Any suggestions as how to do this so that createAppPerf is not null in __call__?</div> <div><br> </div> <div><br> </div> <div>Thanks,<br> Darren<br> </div> </div> </blockquote> </div> </div> </blockquote> <br> </body> </html> --------------010502060907080906040301-- --===============0778897499551893056== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT Develop your own process in accordance with the BPMN 2 standard Learn Process modeling best practices with Bonita BPM through live exercises http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF --===============0778897499551893056== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Grinder-development mailing list Grinder-development-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org https://lists.sourceforge.net/lists/listinfo/grinder-development --===============0778897499551893056==--