Quantcast

Initialization of object once per thread

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Initialization of object once per thread

Darren Ball
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 = 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 = CreateAppPerf()
createAppPerf.initialize()

createAppTest = 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

------------------------------------------------------------------------------
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
_______________________________________________
Grinder-development mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/grinder-development
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Initialization of object once per thread

Darren Ball
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 = Test(1, "Create APP 1 Table 100 Fields")
createAppPerf = 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 <[hidden email]> 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 = 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 = CreateAppPerf()
createAppPerf.initialize()

createAppTest = 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


------------------------------------------------------------------------------
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
_______________________________________________
Grinder-development mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/grinder-development
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Initialization of object once per thread

Philip Aston-2
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 = Test(1, "Create APP 1 Table 100 Fields")
createAppPerf = 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 <[hidden email]> 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 = 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 = CreateAppPerf()
createAppPerf.initialize()

createAppTest = 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


------------------------------------------------------------------------------
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
_______________________________________________
Grinder-development mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/grinder-development
Loading...