Re: JDBC test script error" The result of 'TestRunner()' is not callable"
Marc Holden <[email protected]> Wed, 14 Oct 2015 13:52:39 +0000
| Newsgroups | gmane.comp.java.grinder.user |
|---|---|
| Message-ID | <CADV_OVWCF0AZh6tHZ9kTa-oAptC25DUZiT8Xo_BZaDrhxY4gsQ@mail.gmail.com> |
--===============8470204658598269378== Content-Type: multipart/alternative; boundary=001a113ecb50b9879f052210e0d0 --001a113ecb50b9879f052210e0d0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable It is hard to say why you are seeing such a low TPS value. That may be how the system performs, especially when 200 threads executing the same query from the same address hit the same table at virtually the same time. Make sure you look at some of the other statistics. Personally, I focus on mean test time, mean time to first byte and standard deviation in addition to TPS, as these provide a good indication of how the system is performing. On Wed, Oct 14, 2015 at 9:27 AM Gang Yan <[email protected]> wrote: > Thank you reply: > > > > I modify test script and run normal. But test result TPS only 1.32. (run > 200 threads). Test log not error . > > > > > > Test script: > > > > *# The sorting tes supports a configurable array length.* > > *# It runs the JavaTest.sort method of the JavaTest class.* > > > > *from net.grinder.script.Grinder import grinder* > > *from net.grinder.script import Test* > > *from datetime import datetime* > > *from datetime import timedelta* > > *from java.sql import DriverManager* > > *from oracle.jdbc import OracleDriver* > > > > *########################################* > > *#* > > *# main body of test script starts here* > > *#* > > *########################################* > > > > *# Get the propeties to access test configuration information* > > *properties =3D grinder.getProperties()* > > > > *# The description is a property (instead of a hardcoded string in this > script)* > > *#test =3D Test(1, properties.get("javatest.description"))* > > *test =3D Test(2, properties.get("javatest.description"))* > > > > *# select the method for which to collect information* > > *# test.record(WriteMulitpleLittleFile.write)* > > > > *# initialize data for compressing* > > *# fileName =3D properties.get("javatest.fileToCompress")* > > *# grinder.logger.info <http://grinder.logger.info>("data file to compres= s > is " + fileName)* > > *# JavaTest.initializeCompression(fileName)* > > > > *# If the run mode is runOnce, the TestRunner class will* > > *# run once. Otherwise, if the run mode is continuous,* > > *# the TestRunner class will run the test for at least* > > *# the specified duration (but possibly longer)* > > *runMode =3D properties.get("javatest.runMode")* > > *#WriteMulitpleLittleFile.setParameters(dir, fileSize...)* > > *if runMode =3D=3D "continuous":* > > * # figure out how long to run the test* > > * m =3D int(properties.getProperty("javatest.durationMinutes", "0"))* > > * h =3D int(properties.getProperty("javatest.durationHours", "0"))* > > * d =3D int(properties.getProperty("javatest.durationDays", "0"))* > > * duration =3D timedelta(minutes=3Dm,hours=3Dh,days=3Dd)* > > * grinder.logger.info <http://grinder.logger.info>("run mode is > continuous, duration is " + str(duration))* > > *elif runMode =3D=3D "runOnce":* > > * grinder.logger.info <http://grinder.logger.info>("run mode is run > once")* > > * duration =3D timedelta(minutes=3D0)* > > *else:* > > * grinder.logger.info <http://grinder.logger.info>("run mode not set or > not recongized, default to run once")* > > * duration =3D timedelta(minutes=3D0)* > > > > *########################################* > > *#* > > *# The TestRunner class is used by The Grinder to perform the test* > > *#* > > *########################################* > > > > *#test1 =3D Test(1, "Database insert")* > > *test2 =3D Test(2, "Database query")* > > > > *# Load the Oracle JDBC driver.* > > *DriverManager.registerDriver(OracleDriver())* > > > > *def getConnection():* > > * return DriverManager.getConnection(* > > * "jdbc:oracle:thin:@unpgv4410.us.oracle.com:1521:orcl", > "PBPUBLIC", "PBPUBLIC")* > > > > *def ensureClosed(object):* > > * try: object.close()* > > * except: pass* > > > > *# One time initialisation that cleans out old data.* > > *connection =3D getConnection()* > > *statement =3D connection.createStatement()* > > > > *ensureClosed(statement)* > > *ensureClosed(connection)* > > > > *class TestRunner:* > > * def __call__(self):* > > * endTime =3D datetime.now() + duration* > > * notDone =3D True* > > * while notDone:* > > * notDone =3D datetime.now() < endTime* > > > > * connection =3D None* > > * insertStatement =3D None* > > * queryStatement =3D None* > > > > * try:* > > * connection =3D getConnection()* > > * queryStatement =3D connection.createStatement()* > > *# insertStatement =3D connection.createStatement()* > > *# test1.record(insertStatement)* > > *# insertStatement.execute("insert into grinder_test values(%d, > %d)" %* > > *# (grinder.threadNumber, > grinder.runNumber))* > > > > * test2.record(queryStatement)* > > * queryStatement.execute("select * from employee")* > > > > * finally:* > > *# ensureClosed(insertStatement)* > > * ensureClosed(queryStatement)* > > * ensureClosed(connection)* > > > > *From:* Marc Holden [mailto:[email protected]] > *Sent:* 2015=E5=B9=B410=E6=9C=8814=E6=97=A5 21:06 > *To:* grinder-use > *Subject:* Re: [Grinder-use] JDBC test script error" The result of > 'TestRunner()' is not callable" > > > > Hi Gang, > > > > You need to uncomment out the __call__ method definition (line 189). > Grinder uses that method as the entry point for the worker processes. > > > > -Marc > > > > On Wed, Oct 14, 2015 at 6:57 AM Gang Yan <[email protected]> wrote: > > Hi all : > > > > I use JDBC.py script run performance testing . grinder log info: > > > > 2015-10-14 18:42:40,132 ERROR com-0 thread-24: aborting thread - {}The > result of 'TestRunner()' is not callable > > net.grinder.scriptengine.jython.JythonScriptExecutionException: The resul= t > of 'TestRunner()' is not callable > > at > net.grinder.scriptengine.jython.JythonScriptEngine.createWorkerRunnable(J= ythonScriptEngine.java:183) > ~[grinder-core-3.11.jar:na] > > at > net.grinder.engine.process.GrinderProcess$ThreadStarterImplementation$2.c= reate(GrinderProcess.java:784) > ~[grinder-core-3.11.jar:na] > > at > net.grinder.engine.process.GrinderThread.run(GrinderThread.java:90) > ~[grinder-core-3.11.jar:na] > > at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45] > > 2015-10-14 18:42:40,132 ERROR com-0 thread-3: aborting thread - {}The > result of 'TestRunner()' is not callable > > net.grinder.scriptengine.jython.JythonScriptExecutionException: The resul= t > of 'TestRunner()' is not callable > > at > net.grinder.scriptengine.jython.JythonScriptEngine.createWorkerRunnable(J= ythonScriptEngine.java:183) > ~[grinder-core-3.11.jar:na] > > at > net.grinder.engine.process.GrinderProcess$ThreadStarterImplementation$2.c= reate(GrinderProcess.java:784) > ~[grinder-core-3.11.jar:na] > > at > net.grinder.engine.process.GrinderThread.run(GrinderThread.java:90) > ~[grinder-core-3.11.jar:na] > > at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45] > > > > I modify script, but still error. Please help check it. > > > > I test script : > > > > # The sorting tes supports a configurable array length. > > # It runs the JavaTest.sort method of the JavaTest class. > > > > from net.grinder.script.Grinder import grinder > > from net.grinder.script import Test > > from datetime import datetime > > from datetime import timedelta > > from java.sql import DriverManager > > from oracle.jdbc import OracleDriver > > > > ######################################## > > # > > # main body of test script starts here > > # > > ######################################## > > > > # Get the propeties to access test configuration information > > properties =3D grinder.getProperties() > > > > # The description is a property (instead of a hardcoded string in this > script) > > #test =3D Test(1, properties.get("javatest.description")) > > test =3D Test(2, properties.get("javatest.description")) > > > > # select the method for which to collect information > > # test.record(WriteMulitpleLittleFile.write) > > > > # initialize data for compressing > > # fileName =3D properties.get("javatest.fileToCompress") > > # grinder.logger.info("data file to compress is " + fileName) > > # JavaTest.initializeCompression(fileName) > > > > # If the run mode is runOnce, the TestRunner class will > > # run once. Otherwise, if the run mode is continuous, > > # the TestRunner class will run the test for at least > > # the specified duration (but possibly longer) > > runMode =3D properties.get("javatest.runMode") > > #WriteMulitpleLittleFile.setParameters(dir, fileSize...) > > if runMode =3D=3D "continuous": > > # figure out how long to run the test > > m =3D int(properties.getProperty("javatest.durationMinutes", "0")) > > h =3D int(properties.getProperty("javatest.durationHours", "0")) > > d =3D int(properties.getProperty("javatest.durationDays", "0")) > > duration =3D timedelta(minutes=3Dm,hours=3Dh,days=3Dd) > > grinder.logger.info("run mode is continuous, duration is " + > str(duration)) > > elif runMode =3D=3D "runOnce": > > grinder.logger.info("run mode is run once") > > duration =3D timedelta(minutes=3D0) > > else: > > grinder.logger.info("run mode not set or not recongized, default to run > once") > > duration =3D timedelta(minutes=3D0) > > > > ######################################## > > # > > # The TestRunner class is used by The Grinder to perform the test > > # > > ######################################## > > > > #test1 =3D Test(1, "Database insert") > > test2 =3D Test(2, "Database query") > > > > # Load the Oracle JDBC driver. > > DriverManager.registerDriver(OracleDriver()) > > > > def getConnection(): > > return DriverManager.getConnection( > > "jdbc:oracle:thin:@den00bvr.us.oracle.com:1521:orcl", "PBPUBLIC", > "PBPUBLIC") > > > > def ensureClosed(object): > > try: object.close() > > except: pass > > > > # One time initialisation that cleans out old data. > > connection =3D getConnection() > > statement =3D connection.createStatement() > > > > #try: statement.execute("drop table grinder_test1126") > > #except: pass > > > > #statement.execute("create table grinder_test1126(thread number, run > number)") > > > > ensureClosed(statement) > > ensureClosed(connection) > > > > class TestRunner: > > def __init__(self): > > # tid =3D grinder.threadNumber > > > > # if (grinder.threadNumber % 2 =3D=3D 0): > > # Even threadNumber > > # Do insertStatement > > # else: > > # Odd threadNumber > > # Do queryStatement > > > > # def __call__(self): > > # self.testRunner() > > > > endTime =3D datetime.now() + duration > > notDone =3D True > > while notDone: > > connection =3D None > > insertStatement =3D None > > queryStatement =3D None > > notDone =3D datetime.now() < endTime > > > > try: > > connection =3D getConnection() > > # insertStatement =3D connection.createStatement() > > queryStatement =3D connection.createStatement() > > > > # test1.record(insertStatement) > > # insertStatement.execute("insert into grinder_test1126 > values(%d, %d)" % > > # (grinder.threadNumber, > grinder.runNumber)) > > > > test2.record(queryStatement) > > queryStatement.execute("select * from employee") > > > > finally: > > # ensureClosed(insertStatement) > > ensureClosed(queryStatement) > > ensureClosed(connection) > > > > > -------------------------------------------------------------------------= ----- > _______________________________________________ > grinder-use mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/grinder-use > > > -------------------------------------------------------------------------= ----- > _______________________________________________ > grinder-use mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/grinder-use > --001a113ecb50b9879f052210e0d0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">It is hard to say why you are seeing such a low TPS value.= =C2=A0 That may be how the system performs, especially when 200 threads exe= cuting the same query from the same address hit the same table at virtually= the same time.=C2=A0 Make sure you look at some of the other statistics.= =C2=A0 Personally, I focus on mean test time, mean time to first byte =C2= =A0and standard deviation in addition to TPS, as these provide a good indic= ation of how the system is performing.=C2=A0</div><br><div class=3D"gmail_q= uote"><div dir=3D"ltr">On Wed, Oct 14, 2015 at 9:27 AM Gang Yan <<a href= =3D"mailto:[email protected]">[email protected]</a>> wrote:<br></div= ><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1= px #ccc solid;padding-left:1ex"><div lang=3D"ZH-CN" link=3D"blue" vlink=3D"= purple"><div><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size= :10.5pt;font-family:"Calibri","sans-serif";color:#1f497= d">Thank you reply:<u></u><u></u></span></p><p class=3D"MsoNormal"><span la= ng=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&quo= t;sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></span></p><p class= =3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&= quot;Calibri","sans-serif";color:#1f497d">I modify test scri= pt and run normal. But test result TPS =C2=A0only 1.32. (run 200 threads). = Test log not error .<u></u><u></u></span></p><p class=3D"MsoNormal"><span l= ang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&qu= ot;sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></span></p><p class= =3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&= quot;Calibri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></= u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size= :10.5pt;font-family:"Calibri","sans-serif";color:#1f497= d">Test script:<u></u><u></u></span></p></div></div><div lang=3D"ZH-CN" lin= k=3D"blue" vlink=3D"purple"><div><p class=3D"MsoNormal"><span lang=3D"EN-US= " style=3D"font-size:10.5pt;font-family:"Calibri","sans-seri= f";color:#1f497d"><u></u>=C2=A0<u></u></span></p><p class=3D"MsoNormal= "><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calib= ri","sans-serif";color:#1f497d"># The sorting tes=C2=A0 supp= orts a configurable array length.<u></u><u></u></span></b></p><p class=3D"M= soNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&qu= ot;Calibri","sans-serif";color:#1f497d"># It runs the JavaTe= st.sort method of the JavaTest class.<u></u><u></u></span></b></p><p class= =3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-famil= y:"Calibri","sans-serif";color:#1f497d"><u></u>=C2=A0<u= ></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D= "font-size:10.5pt;font-family:"Calibri","sans-serif";co= lor:#1f497d">from net.grinder.script.Grinder import grinder<u></u><u></u></= span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-s= ize:10.5pt;font-family:"Calibri","sans-serif";color:#1f= 497d">from net.grinder.script import Test<u></u><u></u></span></b></p><p cl= ass=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fa= mily:"Calibri","sans-serif";color:#1f497d">from datetim= e import datetime<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><sp= an lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri"= ,"sans-serif";color:#1f497d">from datetime import timedelta<u></u= ><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">from java.sql import DriverManager<u></u><u></u></span></b>= </p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5p= t;font-family:"Calibri","sans-serif";color:#1f497d">fro= m oracle.jdbc import OracleDriver<u></u><u></u></span></b></p><p class=3D"M= soNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&qu= ot;Calibri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></u>= </span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font= -size:10.5pt;font-family:"Calibri","sans-serif";color:#= 1f497d">########################################<u></u><u></u></span></b></= p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;= font-family:"Calibri","sans-serif";color:#1f497d">#<u><= /u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" sty= le=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&quo= t;;color:#1f497d"># main body of test script starts here<u></u><u></u></spa= n></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size= :10.5pt;font-family:"Calibri","sans-serif";color:#1f497= d">#<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d">########################################<u></u><u= ></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D= "font-size:10.5pt;font-family:"Calibri","sans-serif";co= lor:#1f497d"><u></u>=C2=A0<u></u></span></b></p><p class=3D"MsoNormal"><b><= span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri&quo= t;,"sans-serif";color:#1f497d"># Get the propeties to access test= configuration information<u></u><u></u></span></b></p><p class=3D"MsoNorma= l"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Cali= bri","sans-serif";color:#1f497d">properties =3D grinder.getP= roperties()<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lan= g=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= ;sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></span></b></p><p clas= s=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fami= ly:"Calibri","sans-serif";color:#1f497d"># The descript= ion is a property (instead of a hardcoded string in this script)<u></u><u><= /u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"f= ont-size:10.5pt;font-family:"Calibri","sans-serif";colo= r:#1f497d">#test =3D Test(1, properties.get("javatest.description"= ;))<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-= US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-se= rif";color:#1f497d">test =3D Test(2, properties.get("javatest.des= cription"))<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><spa= n lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",= "sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></span></b></p><p= class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font= -family:"Calibri","sans-serif";color:#1f497d"># select = the method for which to collect information<u></u><u></u></span></b></p><p = class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-= family:"Calibri","sans-serif";color:#1f497d"># test.rec= ord(WriteMulitpleLittleFile.write)<u></u><u></u></span></b></p><p class=3D"= MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&q= uot;Calibri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></u= ></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"fon= t-size:10.5pt;font-family:"Calibri","sans-serif";color:= #1f497d"># initialize data for compressing<u></u><u></u></span></b></p><p c= lass=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-f= amily:"Calibri","sans-serif";color:#1f497d"># fileName = =3D properties.get("javatest.fileToCompress")<u></u><u></u></span= ></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:= 10.5pt;font-family:"Calibri","sans-serif";color:#1f497d= "># <a href=3D"http://grinder.logger.info" target=3D"_blank">grinder.logger= .info</a>("data file to compress is " + fileName)<u></u><u></u></= span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-s= ize:10.5pt;font-family:"Calibri","sans-serif";color:#1f= 497d"># JavaTest.initializeCompression(fileName)<u></u><u></u></span></b></= p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;= font-family:"Calibri","sans-serif";color:#1f497d"><u></= u>=C2=A0<u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US= " style=3D"font-size:10.5pt;font-family:"Calibri","sans-seri= f";color:#1f497d"># If the run mode is runOnce, the TestRunner class w= ill<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-= US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-se= rif";color:#1f497d"># run once.=C2=A0 Otherwise, if the run mode is co= ntinuous,<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d"># the TestRunner class will run the test fo= r at least<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d"># the specified duration (but possibly long= er)<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-= US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-se= rif";color:#1f497d">runMode =3D properties.get("javatest.runMode&= quot;)<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"= EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","sans= -serif";color:#1f497d">#WriteMulitpleLittleFile.setParameters(dir, fil= eSize...)<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d">if runMode =3D=3D "continuous":<u= ></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" s= tyle=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&q= uot;;color:#1f497d">=C2=A0 # figure out how long to run the test<u></u><u><= /u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"f= ont-size:10.5pt;font-family:"Calibri","sans-serif";colo= r:#1f497d">=C2=A0 m =3D int(properties.getProperty("javatest.durationM= inutes", "0"))<u></u><u></u></span></b></p><p class=3D"MsoNo= rmal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"C= alibri","sans-serif";color:#1f497d">=C2=A0 h =3D int(propert= ies.getProperty("javatest.durationHours", "0"))<u></u><= u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">=C2=A0 d =3D int(properties.getProperty("javatest.dura= tionDays", "0"))<u></u><u></u></span></b></p><p class=3D"Mso= Normal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"= ;Calibri","sans-serif";color:#1f497d">=C2=A0 duration =3D ti= medelta(minutes=3Dm,hours=3Dh,days=3Dd)<u></u><u></u></span></b></p><p clas= s=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fami= ly:"Calibri","sans-serif";color:#1f497d">=C2=A0 <a href= =3D"http://grinder.logger.info" target=3D"_blank">grinder.logger.info</a>(&= quot;run mode is continuous, duration is " + str(duration))<u></u><u><= /u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"f= ont-size:10.5pt;font-family:"Calibri","sans-serif";colo= r:#1f497d">elif runMode =3D=3D "runOnce":<u></u><u></u></span></b= ></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5= pt;font-family:"Calibri","sans-serif";color:#1f497d">= =C2=A0 <a href=3D"http://grinder.logger.info" target=3D"_blank">grinder.log= ger.info</a>("run mode is run once")<u></u><u></u></span></b></p>= <p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;fo= nt-family:"Calibri","sans-serif";color:#1f497d">=C2=A0 = duration =3D timedelta(minutes=3D0)<u></u><u></u></span></b></p><p class=3D= "MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&= quot;Calibri","sans-serif";color:#1f497d">else:<u></u><u></u= ></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"fon= t-size:10.5pt;font-family:"Calibri","sans-serif";color:= #1f497d">=C2=A0 <a href=3D"http://grinder.logger.info" target=3D"_blank">gr= inder.logger.info</a>("run mode not set or not recongized, default to = run once")<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span= lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&= quot;sans-serif";color:#1f497d">=C2=A0 duration =3D timedelta(minutes= =3D0)<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"E= N-US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-= serif";color:#1f497d"><u></u>=C2=A0<u></u></span></b></p><p class=3D"M= soNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&qu= ot;Calibri","sans-serif";color:#1f497d">####################= ####################<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b>= <span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri&qu= ot;,"sans-serif";color:#1f497d">#<u></u><u></u></span></b></p><p = class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-= family:"Calibri","sans-serif";color:#1f497d"># The Test= Runner class is used by The Grinder to perform the test<u></u><u></u></span= ></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:= 10.5pt;font-family:"Calibri","sans-serif";color:#1f497d= ">#<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-= US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-se= rif";color:#1f497d">########################################<u></u><u>= </u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"= font-size:10.5pt;font-family:"Calibri","sans-serif";col= or:#1f497d"><u></u>=C2=A0<u></u></span></b></p><p class=3D"MsoNormal"><b><s= pan lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri"= ;,"sans-serif";color:#1f497d">#test1 =3D Test(1, "Database i= nsert")<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span la= ng=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&quo= t;sans-serif";color:#1f497d">test2 =3D Test(2, "Database query&qu= ot;)<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d"><u></u>=C2=A0<u></u></span></b></p><p class=3D"Ms= oNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&quo= t;Calibri","sans-serif";color:#1f497d"># Load the Oracle JDB= C driver.<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d">DriverManager.registerDriver(OracleDriver()= )<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US= " style=3D"font-size:10.5pt;font-family:"Calibri","sans-seri= f";color:#1f497d"><u></u>=C2=A0<u></u></span></b></p><p class=3D"MsoNo= rmal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"C= alibri","sans-serif";color:#1f497d">def getConnection():<u><= /u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" sty= le=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&quo= t;;color:#1f497d">=C2=A0=C2=A0=C2=A0 return DriverManager.getConnection(<u>= </u><u></u></span></b></p></div></div><div lang=3D"ZH-CN" link=3D"blue" vli= nk=3D"purple"><div><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"= font-size:10.5pt;font-family:"Calibri","sans-serif";col= or:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "jdbc:oracle:th= in:@unpgv4410.us.oracle.com:1521:orcl", "PBPUBLIC", "PB= PUBLIC")<u></u><u></u></span></b></p></div></div><div lang=3D"ZH-CN" l= ink=3D"blue" vlink=3D"purple"><div><p class=3D"MsoNormal"><b><span lang=3D"= EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","sans= -serif";color:#1f497d"><u></u>=C2=A0<u></u></span></b></p><p class=3D"= MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&q= uot;Calibri","sans-serif";color:#1f497d">def ensureClosed(ob= ject):<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"= EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","sans= -serif";color:#1f497d">=C2=A0=C2=A0=C2=A0 try: object.close()<u></u><u= ></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D= "font-size:10.5pt;font-family:"Calibri","sans-serif";co= lor:#1f497d">=C2=A0=C2=A0=C2=A0 except: pass<u></u><u></u></span></b></p><p= class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font= -family:"Calibri","sans-serif";color:#1f497d"><u></u>= =C2=A0<u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" = style=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&= quot;;color:#1f497d"># One time initialisation that cleans out old data.<u>= </u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" st= yle=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&qu= ot;;color:#1f497d">connection =3D getConnection()<u></u><u></u></span></b><= /p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt= ;font-family:"Calibri","sans-serif";color:#1f497d">stat= ement =3D connection.createStatement()<u></u><u></u></span></b></p><p class= =3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-famil= y:"Calibri","sans-serif";color:#1f497d"><u></u>=C2=A0<u= ></u></span></b></p></div></div><div lang=3D"ZH-CN" link=3D"blue" vlink=3D"= purple"><div><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-s= ize:10.5pt;font-family:"Calibri","sans-serif";color:#1f= 497d">ensureClosed(statement)<u></u><u></u></span></b></p><p class=3D"MsoNo= rmal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"C= alibri","sans-serif";color:#1f497d">ensureClosed(connection)= <u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US"= style=3D"font-size:10.5pt;font-family:"Calibri","sans-serif= ";color:#1f497d"><u></u>=C2=A0<u></u></span></b></p><p class=3D"MsoNor= mal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Ca= libri","sans-serif";color:#1f497d">class TestRunner:<u></u><= u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">=C2=A0=C2=A0 def __call__(self):<u></u><u></u></span></b></= p></div></div><div lang=3D"ZH-CN" link=3D"blue" vlink=3D"purple"><div><p cl= ass=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fa= mily:"Calibri","sans-serif";color:#1f497d">=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 endTime =3D datetime.now() + duration<= u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" = style=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&= quot;;color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 notDo= ne =3D True<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lan= g=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= ;sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 while notDone:<u></u><u></u></span></b></p></div></div><div lang=3D"= ZH-CN" link=3D"blue" vlink=3D"purple"><div><p class=3D"MsoNormal"><b><span = lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&q= uot;sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 notDone =3D datetime.now() < endTime<u></u><u></u>= </span></b></p></div></div><div lang=3D"ZH-CN" link=3D"blue" vlink=3D"purpl= e"><div><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:1= 0.5pt;font-family:"Calibri","sans-serif";color:#1f497d"= ><u></u>=C2=A0<u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D= "EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","san= s-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 connection =3D None<u></u><u></u></span></b></p><p class=3D"MsoNormal">= <b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri= ","sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 insertStatement =3D None<u></u><u></u></span></b></p><p = class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-= family:"Calibri","sans-serif";color:#1f497d">=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 queryStatement =3D None<u></u><u></= u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"fo= nt-size:10.5pt;font-family:"Calibri","sans-serif";color= :#1f497d"><u></u>=C2=A0<u></u></span></b></p></div></div><div lang=3D"ZH-CN= " link=3D"blue" vlink=3D"purple"><div><p class=3D"MsoNormal"><b><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 try:<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lan= g=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= ;sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 connection =3D getConnection()<u></u><u></u></span= ></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:= 10.5pt;font-family:"Calibri","sans-serif";color:#1f497d= ">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 queryS= tatement =3D connection.createStatement()<u></u><u></u></span></b></p><p cl= ass=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fa= mily:"Calibri","sans-serif";color:#1f497d">#=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 insertStatement =3D con= nection.createStatement()<u></u><u></u></span></b></p><p class=3D"MsoNormal= "><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calib= ri","sans-serif";color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 test1.record(insertStatement)<u></u><u></= u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"fo= nt-size:10.5pt;font-family:"Calibri","sans-serif";color= :#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ins= ertStatement.execute("insert into grinder_test values(%d, %d)" %<= u></u><u></u></span></b></p></div></div><div lang=3D"ZH-CN" link=3D"blue" v= link=3D"purple"><div><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (g= rinder.threadNumber, grinder.runNumber))<u></u><u></u></span></b></p><p cla= ss=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fam= ily:"Calibri","sans-serif";color:#1f497d"><u></u>=C2=A0= <u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 test2.record(queryStatement)<u></u><u></u></span></b></p><p class= =3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-famil= y:"Calibri","sans-serif";color:#1f497d">=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 queryStatement.execute(= "select * from employee")<u></u><u></u></span></b></p><p class=3D= "MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&= quot;Calibri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></= u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"fo= nt-size:10.5pt;font-family:"Calibri","sans-serif";color= :#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 finally:<u></u><= u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 ensureClosed(insertStatement)<u></u><u></u></span></b></p><p class=3D"M= soNormal"><b><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&qu= ot;Calibri","sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ensureClosed(queryStatemen= t)<u></u><u></u></span></b></p><p class=3D"MsoNormal"><b><span lang=3D"EN-U= S" style=3D"font-size:10.5pt;font-family:"Calibri","sans-ser= if";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 ensureClosed(connection)<u></u><u></u></span></b></p><p cla= ss=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family= :"Calibri","sans-serif";color:#1f497d"><u></u>=C2=A0<u>= </u></span></p></div></div><div lang=3D"ZH-CN" link=3D"blue" vlink=3D"purpl= e"><div><div style=3D"border:none;border-top:solid #b5c4df 1.0pt;padding:3.= 0pt 0cm 0cm 0cm"><p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"fo= nt-size:10.0pt;font-family:"Tahoma","sans-serif"">From:= </span></b><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:"= ;Tahoma","sans-serif""> Marc Holden [mailto:<a href=3D"mailt= o:[email protected]" target=3D"_blank">[email protected]</a>] <br><b>= Sent:</b> 2015</span><span style=3D"font-size:10.0pt">=E5=B9=B4</span><span= lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:"Tahoma",&q= uot;sans-serif"">10</span><span style=3D"font-size:10.0pt">=E6=9C=88</= span><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:"Tahom= a","sans-serif"">14</span><span style=3D"font-size:10.0pt">= =E6=97=A5</span><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:= "Tahoma","sans-serif""> 21:06<br><b>To:</b> grinder-use= <br><b>Subject:</b> Re: [Grinder-use] JDBC test script error" The resu= lt of 'TestRunner()' is not callable"<u></u><u></u></span></p>= </div></div></div><div lang=3D"ZH-CN" link=3D"blue" vlink=3D"purple"><div><= p class=3D"MsoNormal"><span lang=3D"EN-US"><u></u>=C2=A0<u></u></span></p><= div><p class=3D"MsoNormal"><span lang=3D"EN-US">Hi Gang,<u></u><u></u></spa= n></p><div><p class=3D"MsoNormal"><span lang=3D"EN-US"><u></u>=C2=A0<u></u>= </span></p></div><div><p class=3D"MsoNormal"><span lang=3D"EN-US">You need = to uncomment out the __call__ method definition (line 189).=C2=A0 Grinder u= ses that method as the entry point for the worker processes.<u></u><u></u><= /span></p></div><div><p class=3D"MsoNormal"><span lang=3D"EN-US"><u></u>=C2= =A0<u></u></span></p></div><div><p class=3D"MsoNormal"><span lang=3D"EN-US"= >-Marc<u></u><u></u></span></p></div></div><p class=3D"MsoNormal"><span lan= g=3D"EN-US"><u></u>=C2=A0<u></u></span></p><div><div><p class=3D"MsoNormal"= ><span lang=3D"EN-US">On Wed, Oct 14, 2015 at 6:57 AM Gang Yan <<a href= =3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>&g= t; wrote:<u></u><u></u></span></p></div><blockquote style=3D"border:none;bo= rder-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;m= argin-right:0cm"><div><div><div><div><p class=3D"MsoNormal"><span lang=3D"E= N-US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-= serif";color:#1f497d">Hi all :</span><span lang=3D"EN-US"><u></u><u></= u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size= :10.5pt;font-family:"Calibri","sans-serif";color:#1f497= d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"M= soNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"= Calibri","sans-serif";color:#1f497d">I use JDBC.py script ru= n=C2=A0 performance testing . grinder log info:</span><span lang=3D"EN-US">= <u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></u></span></p>= <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-= family:"Calibri","sans-serif";color:#1f497d">2015-10-14= 18:42:40,132 ERROR com-0 thread-24: aborting thread - {}The result of '= ;TestRunner()' is not callable</span><span lang=3D"EN-US"><u></u><u></u= ></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:= 10.5pt;font-family:"Calibri","sans-serif";color:#1f497d= ">net.grinder.scriptengine.jython.JythonScriptExecutionException: The resul= t of 'TestRunner()' is not callable</span><span lang=3D"EN-US"><u><= /u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"f= ont-size:10.5pt;font-family:"Calibri","sans-serif";colo= r:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at net.grinder.script= engine.jython.JythonScriptEngine.createWorkerRunnable(JythonScriptEngine.ja= va:183) ~[grinder-core-3.11.jar:na]</span><span lang=3D"EN-US"><u></u><u></= u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size= :10.5pt;font-family:"Calibri","sans-serif";color:#1f497= d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at net.grinder.engine.process= .GrinderProcess$ThreadStarterImplementation$2.create(GrinderProcess.java:78= 4) ~[grinder-core-3.11.jar:na]</span><span lang=3D"EN-US"><u></u><u></u></s= pan></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5= pt;font-family:"Calibri","sans-serif";color:#1f497d">= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at net.grinder.engine.process.Gr= inderThread.run(GrinderThread.java:90) ~[grinder-core-3.11.jar:na]</span><s= pan lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span la= ng=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&quo= t;sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]</span><span lang= =3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d">2015-10-14 18:42:40,132 ERROR com-0 thread-3: abo= rting thread - {}The result of 'TestRunner()' is not callable</span= ><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span= lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&= quot;sans-serif";color:#1f497d">net.grinder.scriptengine.jython.Jython= ScriptExecutionException: The result of 'TestRunner()' is not calla= ble</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNorm= al"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibr= i","sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 at net.grinder.scriptengine.jython.JythonScriptEngine.creat= eWorkerRunnable(JythonScriptEngine.java:183) ~[grinder-core-3.11.jar:na]</s= pan><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><s= pan lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri"= ;,"sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 at net.grinder.engine.process.GrinderProcess$ThreadStarterImpleme= ntation$2.create(GrinderProcess.java:784) ~[grinder-core-3.11.jar:na]</span= ><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span= lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&= quot;sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 at net.grinder.engine.process.GrinderThread.run(GrinderThread.java:9= 0) ~[grinder-core-3.11.jar:na]</span><span lang=3D"EN-US"><u></u><u></u></s= pan></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5= pt;font-family:"Calibri","sans-serif";color:#1f497d">= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at java.lang.Thread.run(Thread.j= ava:744) [na:1.7.0_45]</span><span lang=3D"EN-US"><u></u><u></u></span></p>= <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-= family:"Calibri","sans-serif";color:#1f497d">=C2=A0</sp= an><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><sp= an lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri"= ,"sans-serif";color:#1f497d">I modify script, but still =C2=A0err= or. Please help check it.</span><span lang=3D"EN-US"><u></u><u></u></span><= /p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;fo= nt-family:"Calibri","sans-serif";color:#1f497d">=C2=A0<= /span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal">= <span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri&qu= ot;,"sans-serif";color:#1f497d">I =C2=A0test script :</span><span= lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u><u= ></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-s= ize:10.5pt;font-family:"Calibri","sans-serif";color:#1f= 497d"># The sorting tes=C2=A0 supports a configurable array length.</span><= span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span l= ang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&qu= ot;sans-serif";color:#1f497d"># It runs the JavaTest.sort method of th= e JavaTest class.</span><span lang=3D"EN-US"><u></u><u></u></span></p><p cl= ass=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-famil= y:"Calibri","sans-serif";color:#1f497d">=C2=A0</span><s= pan lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span la= ng=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&quo= t;sans-serif";color:#1f497d">from net.grinder.script.Grinder import gr= inder</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNo= rmal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Cali= bri","sans-serif";color:#1f497d">from net.grinder.script imp= ort Test</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"Ms= oNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"C= alibri","sans-serif";color:#1f497d">from datetime import dat= etime</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNo= rmal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Cali= bri","sans-serif";color:#1f497d">from datetime import timede= lta</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNorm= al"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibr= i","sans-serif";color:#1f497d">from java.sql import DriverMa= nager</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNo= rmal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Cali= bri","sans-serif";color:#1f497d">from oracle.jdbc import Ora= cleDriver</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"M= soNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"= Calibri","sans-serif";color:#1f497d">=C2=A0</span><span lang= =3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d">########################################</span><s= pan lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span la= ng=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&quo= t;sans-serif";color:#1f497d">#</span><span lang=3D"EN-US"><u></u><u></= u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size= :10.5pt;font-family:"Calibri","sans-serif";color:#1f497= d"># main body of test script starts here</span><span lang=3D"EN-US"><u></u= ><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"fon= t-size:10.5pt;font-family:"Calibri","sans-serif";color:= #1f497d">#</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"= MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"= ;Calibri","sans-serif";color:#1f497d">######################= ##################</span><span lang=3D"EN-US"><u></u><u></u></span></p><p c= lass=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fami= ly:"Calibri","sans-serif";color:#1f497d">=C2=A0</span><= span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span l= ang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&qu= ot;sans-serif";color:#1f497d"># Get the propeties to access test confi= guration information</span><span lang=3D"EN-US"><u></u><u></u></span></p><p= class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fa= mily:"Calibri","sans-serif";color:#1f497d">properties = =3D grinder.getProperties()</span><span lang=3D"EN-US"><u></u><u></u></span= ></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;= font-family:"Calibri","sans-serif";color:#1f497d">=C2= =A0</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNorm= al"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibr= i","sans-serif";color:#1f497d"># The description is a proper= ty (instead of a hardcoded string in this script)</span><span lang=3D"EN-US= "><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" styl= e=3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;;color:#1f497d">#test =3D Test(1, properties.get("javatest.descriptio= n"))</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"M= soNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"= Calibri","sans-serif";color:#1f497d">test =3D Test(2, proper= ties.get("javatest.description"))</span><span lang=3D"EN-US"><u><= /u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"f= ont-size:10.5pt;font-family:"Calibri","sans-serif";colo= r:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></u></span></p><p cl= ass=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-famil= y:"Calibri","sans-serif";color:#1f497d"># select the me= thod for which to collect information</span><span lang=3D"EN-US"><u></u><u>= </u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-si= ze:10.5pt;font-family:"Calibri","sans-serif";color:#1f4= 97d"># test.record(WriteMulitpleLittleFile.write)</span><span lang=3D"EN-US= "><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" styl= e=3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;;color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></u></span></p= ><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font= -family:"Calibri","sans-serif";color:#1f497d"># initial= ize data for compressing</span><span lang=3D"EN-US"><u></u><u></u></span></= p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;fon= t-family:"Calibri","sans-serif";color:#1f497d"># fileNa= me =3D properties.get("javatest.fileToCompress")</span><span lang= =3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d"># <a href=3D"http://grinder.logger.info" target= =3D"_blank">grinder.logger.info</a>("data file to compress is " += fileName)</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"= MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"= ;Calibri","sans-serif";color:#1f497d"># JavaTest.initializeC= ompression(fileName)</span><span lang=3D"EN-US"><u></u><u></u></span></p><p= class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fa= mily:"Calibri","sans-serif";color:#1f497d">=C2=A0</span= ><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span= lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&= quot;sans-serif";color:#1f497d"># If the run mode is runOnce, the Test= Runner class will</span><span lang=3D"EN-US"><u></u><u></u></span></p><p cl= ass=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-famil= y:"Calibri","sans-serif";color:#1f497d"># run once.=C2= =A0 Otherwise, if the run mode is continuous,</span><span lang=3D"EN-US"><u= ></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D= "font-size:10.5pt;font-family:"Calibri","sans-serif";co= lor:#1f497d"># the TestRunner class will run the test for at least</span><s= pan lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span la= ng=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&quo= t;sans-serif";color:#1f497d"># the specified duration (but possibly lo= nger)</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNo= rmal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Cali= bri","sans-serif";color:#1f497d">runMode =3D properties.get(= "javatest.runMode")</span><span lang=3D"EN-US"><u></u><u></u></sp= an></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5p= t;font-family:"Calibri","sans-serif";color:#1f497d">#Wr= iteMulitpleLittleFile.setParameters(dir, fileSize...)</span><span lang=3D"E= N-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" = style=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&= quot;;color:#1f497d">if runMode =3D=3D "continuous":</span><span = lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d">=C2=A0 # figure out how long to run the tes= t</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal= "><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri&= quot;,"sans-serif";color:#1f497d">=C2=A0 m =3D int(properties.get= Property("javatest.durationMinutes", "0"))</span><span = lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d">=C2=A0 h =3D int(properties.getProperty(&qu= ot;javatest.durationHours", "0"))</span><span lang=3D"EN-US"= ><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">=C2=A0 d =3D int(properties.getProperty("javatest.dura= tionDays", "0"))</span><span lang=3D"EN-US"><u></u><u></u></= span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.= 5pt;font-family:"Calibri","sans-serif";color:#1f497d">= =C2=A0 duration =3D timedelta(minutes=3Dm,hours=3Dh,days=3Dd)</span><span l= ang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D= "EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","san= s-serif";color:#1f497d">=C2=A0 <a href=3D"http://grinder.logger.info" = target=3D"_blank">grinder.logger.info</a>("run mode is continuous, dur= ation is " + str(duration))</span><span lang=3D"EN-US"><u></u><u></u><= /span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10= .5pt;font-family:"Calibri","sans-serif";color:#1f497d">= elif runMode =3D=3D "runOnce":</span><span lang=3D"EN-US"><u></u>= <u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font= -size:10.5pt;font-family:"Calibri","sans-serif";color:#= 1f497d">=C2=A0 <a href=3D"http://grinder.logger.info" target=3D"_blank">gri= nder.logger.info</a>("run mode is run once")</span><span lang=3D"= EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US"= style=3D"font-size:10.5pt;font-family:"Calibri","sans-serif= ";color:#1f497d">=C2=A0 duration =3D timedelta(minutes=3D0)</span><spa= n lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d">else:</span><span lang=3D"EN-US"><u></u><u>= </u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-si= ze:10.5pt;font-family:"Calibri","sans-serif";color:#1f4= 97d">=C2=A0 <a href=3D"http://grinder.logger.info" target=3D"_blank">grinde= r.logger.info</a>("run mode not set or not recongized, default to run = once")</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D= "MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&quo= t;Calibri","sans-serif";color:#1f497d">=C2=A0 duration =3D t= imedelta(minutes=3D0)</span><span lang=3D"EN-US"><u></u><u></u></span></p><= p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-f= amily:"Calibri","sans-serif";color:#1f497d">=C2=A0</spa= n><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><spa= n lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",= "sans-serif";color:#1f497d">#####################################= ###</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNorm= al"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibr= i","sans-serif";color:#1f497d">#</span><span lang=3D"EN-US">= <u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d"># The TestRunner class is used by The Grinder to perform th= e test</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoN= ormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Cal= ibri","sans-serif";color:#1f497d">#</span><span lang=3D"EN-U= S"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" sty= le=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&quo= t;;color:#1f497d">########################################</span><span lang= =3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></u><= /span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10= .5pt;font-family:"Calibri","sans-serif";color:#1f497d">= #test1 =3D Test(1, "Database insert")</span><span lang=3D"EN-US">= <u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">test2 =3D Test(2, "Database query")</span><span l= ang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D= "EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","san= s-serif";color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></= u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size= :10.5pt;font-family:"Calibri","sans-serif";color:#1f497= d"># Load the Oracle JDBC driver.</span><span lang=3D"EN-US"><u></u><u></u>= </span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:1= 0.5pt;font-family:"Calibri","sans-serif";color:#1f497d"= >DriverManager.registerDriver(OracleDriver())</span><span lang=3D"EN-US"><u= ></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D= "font-size:10.5pt;font-family:"Calibri","sans-serif";co= lor:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></u></span></p><p = class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fam= ily:"Calibri","sans-serif";color:#1f497d">def getConnec= tion():</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"Mso= Normal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Ca= libri","sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0 return= DriverManager.getConnection(</span><span lang=3D"EN-US"><u></u><u></u></sp= an></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5p= t;font-family:"Calibri","sans-serif";color:#1f497d">=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "jdbc:oracle:thin:@den00bvr.us= .oracle.com:1521:orcl", "PBPUBLIC", "PBPUBLIC")</s= pan><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><s= pan lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri"= ;,"sans-serif";color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><= u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">def ensureClosed(object):</span><span lang=3D"EN-US"><u></u= ><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"fon= t-size:10.5pt;font-family:"Calibri","sans-serif";color:= #1f497d">=C2=A0=C2=A0=C2=A0 try: object.close()</span><span lang=3D"EN-US">= <u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">=C2=A0=C2=A0=C2=A0 except: pass</span><span lang=3D"EN-US">= <u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></u></span></p>= <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-= family:"Calibri","sans-serif";color:#1f497d"># One time= initialisation that cleans out old data.</span><span lang=3D"EN-US"><u></u= ><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"fon= t-size:10.5pt;font-family:"Calibri","sans-serif";color:= #1f497d">connection =3D getConnection()</span><span lang=3D"EN-US"><u></u><= u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-= size:10.5pt;font-family:"Calibri","sans-serif";color:#1= f497d">statement =3D connection.createStatement()</span><span lang=3D"EN-US= "><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" styl= e=3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;;color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></u></span></p= ><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font= -family:"Calibri","sans-serif";color:#1f497d">#try: sta= tement.execute("drop table grinder_test1126")</span><span lang=3D= "EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US= " style=3D"font-size:10.5pt;font-family:"Calibri","sans-seri= f";color:#1f497d">#except: pass</span><span lang=3D"EN-US"><u></u><u><= /u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-siz= e:10.5pt;font-family:"Calibri","sans-serif";color:#1f49= 7d">=C2=A0</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"= MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"= ;Calibri","sans-serif";color:#1f497d">#statement.execute(&qu= ot;create table grinder_test1126(thread number, run number)")</span><s= pan lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span la= ng=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri",&quo= t;sans-serif";color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u></u>= <u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font= -size:10.5pt;font-family:"Calibri","sans-serif";color:#= 1f497d">ensureClosed(statement)</span><span lang=3D"EN-US"><u></u><u></u></= span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.= 5pt;font-family:"Calibri","sans-serif";color:#1f497d">e= nsureClosed(connection)</span><span lang=3D"EN-US"><u></u><u></u></span></p= ><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font= -family:"Calibri","sans-serif";color:#1f497d">=C2=A0</s= pan><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><s= pan lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri"= ;,"sans-serif";color:#1f497d">class TestRunner:</span><span lang= =3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d">=C2=A0=C2=A0 def __init__(self):</span><span lang= =3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 tid = =3D grinder.threadNumber</span><span lang=3D"EN-US"><u></u><u></u></span></= p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;fon= t-family:"Calibri","sans-serif";color:#1f497d">=C2=A0</= span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><= span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri&quo= t;,"sans-serif";color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 if (grinder.threadNumber % 2 =3D=3D 0):</span><span lang=3D"EN-US= "><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" styl= e=3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;;color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 Even threadNumber</span><span lang=3D"EN-US"><u></u><u></u>= </span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:1= 0.5pt;font-family:"Calibri","sans-serif";color:#1f497d"= >#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = Do insertStatement</span><span lang=3D"EN-US"><u></u><u></u></span></p><p c= lass=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fami= ly:"Calibri","sans-serif";color:#1f497d">#=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else:</span><span lang=3D"EN-US"><u></u><u><= /u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-siz= e:10.5pt;font-family:"Calibri","sans-serif";color:#1f49= 7d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 Odd threadNumber</span><span lang=3D"EN-US"><u></u><u></u></span></p><p= class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fa= mily:"Calibri","sans-serif";color:#1f497d">#=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Do querySta= tement</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoN= ormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Cal= ibri","sans-serif";color:#1f497d">=C2=A0</span><span lang=3D= "EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US= " style=3D"font-size:10.5pt;font-family:"Calibri","sans-seri= f";color:#1f497d">#=C2=A0=C2=A0 def __call__(self):</span><span lang= =3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 self.testRu= nner()</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoN= ormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Cal= ibri","sans-serif";color:#1f497d">=C2=A0</span><span lang=3D= "EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US= " style=3D"font-size:10.5pt;font-family:"Calibri","sans-seri= f";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 endTime = =3D datetime.now() + duration</span><span lang=3D"EN-US"><u></u><u></u></sp= an></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5p= t;font-family:"Calibri","sans-serif";color:#1f497d">=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 notDone =3D True</span><span lang= =3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN= -US" style=3D"font-size:10.5pt;font-family:"Calibri","sans-s= erif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 while = notDone:</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"Ms= oNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"C= alibri","sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 connection =3D None</span><span lang=3D"EN-US"><u>= </u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"= font-size:10.5pt;font-family:"Calibri","sans-serif";col= or:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 insertStatemen= t =3D None</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"= MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"= ;Calibri","sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 queryStatement =3D None</span><span lang=3D"EN-= US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" st= yle=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&qu= ot;;color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 notDone= =3D datetime.now() < endTime</span><span lang=3D"EN-US"><u></u><u></u><= /span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10= .5pt;font-family:"Calibri","sans-serif";color:#1f497d">= =C2=A0</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoN= ormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Cal= ibri","sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 try:</span><span lang=3D"EN-US"><u></u><u></u></span></p= ><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font= -family:"Calibri","sans-serif";color:#1f497d">=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 connection =3D ge= tConnection()</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class= =3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:&= quot;Calibri","sans-serif";color:#1f497d">#=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 insertStatement =3D connectio= n.createStatement()</span><span lang=3D"EN-US"><u></u><u></u></span></p><p = class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-fam= ily:"Calibri","sans-serif";color:#1f497d">=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 queryStatement =3D c= onnection.createStatement()</span><span lang=3D"EN-US"><u></u><u></u></span= ></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;= font-family:"Calibri","sans-serif";color:#1f497d">=C2= =A0</span><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNorm= al"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibr= i","sans-serif";color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 test1.record(insertStatement)</span><span= lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 insertStatement.execute("insert into grinder_test11= 26 values(%d, %d)" %</span><span lang=3D"EN-US"><u></u><u></u></span><= /p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;fo= nt-family:"Calibri","sans-serif";color:#1f497d">#=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (grinder.threadNumber, gri= nder.runNumber))</span><span lang=3D"EN-US"><u></u><u></u></span></p><p cla= ss=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt;font-family= :"Calibri","sans-serif";color:#1f497d">=C2=A0</span><sp= an lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lan= g=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= ;sans-serif";color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 test2.record(queryStatement)</span><span lang=3D"E= N-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" = style=3D"font-size:10.5pt;font-family:"Calibri","sans-serif&= quot;;color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 queryStatement.execute("select * from employee")</sp= an><span lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><sp= an lang=3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri"= ,"sans-serif";color:#1f497d">=C2=A0</span><span lang=3D"EN-US"><u= ></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D= "font-size:10.5pt;font-family:"Calibri","sans-serif";co= lor:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 finally:</span><spa= n lang=3D"EN-US"><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang= =3D"EN-US" style=3D"font-size:10.5pt;font-family:"Calibri","= sans-serif";color:#1f497d">#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 ensureClosed(insertStatement)</span><span lang=3D"EN-US"= ><u></u><u></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style= =3D"font-size:10.5pt;font-family:"Calibri","sans-serif"= ;color:#1f497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 ensureClosed(queryStatement)</span><span lang=3D"EN-US"><u></u><u= ></u></span></p><p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-s= ize:10.5pt;font-family:"Calibri","sans-serif";color:#1f= 497d">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 en= sureClosed(connection)</span><span lang=3D"EN-US"><u></u><u></u></span></p>= </div><div><p class=3D"MsoNormal"><span lang=3D"EN-US">=C2=A0<u></u><u></u>= </span></p></div></div></div></div><p class=3D"MsoNormal"><span lang=3D"EN-= US">-----------------------------------------------------------------------= -------<br>_______________________________________________<br>grinder-use m= ailing list<br><a href=3D"mailto:[email protected]" target= =3D"_blank">[email protected]</a><br><a href=3D"https://lis= ts.sourceforge.net/lists/listinfo/grinder-use" target=3D"_blank">https://li= sts.sourceforge.net/lists/listinfo/grinder-use</a><u></u><u></u></span></p>= </blockquote></div></div></div>--------------------------------------------= ----------------------------------<br> _______________________________________________<br> grinder-use mailing list<br> <a href=3D"mailto:[email protected]" target=3D"_blank">grin= [email protected]</a><br> <a href=3D"https://lists.sourceforge.net/lists/listinfo/grinder-use" rel=3D= "noreferrer" target=3D"_blank">https://lists.sourceforge.net/lists/listinfo= /grinder-use</a><br> </blockquote></div> --001a113ecb50b9879f052210e0d0-- --===============8470204658598269378== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ --===============8470204658598269378== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ grinder-use mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/grinder-use --===============8470204658598269378==--