[ 
https://issues.apache.org/jira/browse/DERBY-5663?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13242440#comment-13242440
 ] 

Kathey Marsden commented on DERBY-5663:
---------------------------------------

Thanks Mamta for explaining why the instance is used more than once.  I think 
from a practical perspective it is good to have it work both ways.

Looking at SystemPropertyTestSetup, I think your change to remove the line 
setting newValues to null and inititializing odValues to new Properties() will 
work.  This will leave the instance in the correct state for the second 
iteration as the initialization where newValues has the new values that we want 
and oldValues is empty and ready to be populated when setProperties() is called 
by setup(). 

Perhaps a more intuitive fix would be to move the initialization of oldValues 
to setup() rather than the constructor  or tearDown() and add a comment there 
with the bug number, indicating oldValues needs to be initialized for each 
iteration if the instance is reused. 

Thanks for fixing this up!




                
> Getting NPE when trying to set derby.language.logStatementText property to 
> true inside a junit suite.
> -----------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5663
>                 URL: https://issues.apache.org/jira/browse/DERBY-5663
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.9.0.0
>            Reporter: Mamta A. Satoor
>            Assignee: Mamta A. Satoor
>              Labels: derby_triage10_9
>         Attachments: DERBY5663_patch1.txt, DERBY5663_patch2.txt
>
>
> Derby has a large data suite which runs LobLimitsTest with small data size, 
> large data size and with embedded and network server configurations. The 
> large data suite is run as follows
> time java  -Dderby.tests.trace=true -Dderby.infolog.append=true 
> junit.textui.TestRunner 
> org.apache.derbyTesting.functionTests.tests.largedata._Suite > runall.out 2>&1
> I made a simple change to the suite to log statement text as shown in the 
> attached patch(DERBY5663_patch1.txt). This causes the large data suite to run 
> into NPE (NPE can be seen in runall.out) as shown below. Not sure what I am 
> doing wrong while trying to set the property, which results in NPE.
> .
> (emb)largedata.Derby5624Test.testDERBY_5624 used 411473 ms .
> (emb)largedata.LobLimitsTest.test_01_Blob used 1555 ms .
> (emb)largedata.LobLimitsTest.test_02_BlobNegative used 42 ms .
> (emb)largedata.LobLimitsTest.test_03_Clob1 used 1436 ms .
> (emb)largedata.LobLimitsTest.test_04_Clob2 used 1707 ms .
> (emb)largedata.LobLimitsTest.test_05_ClobNegative used 967 ms E.
> (emb)largedata.LobLimitsTest.test_01_Blob used 2929139 ms .
> (emb)largedata.LobLimitsTest.test_02_BlobNegative used 154 ms .
> (emb)largedata.LobLimitsTest.test_03_Clob1 used 2854121 ms .
> (emb)largedata.LobLimitsTest.test_04_Clob2 used 656137 ms .
> (emb)largedata.LobLimitsTest.test_05_ClobNegative used 331288 ms EF
> Time: 7,589.168
> There were 2 errors:
> 1) LobLimitsTestjava.lang.NullPointerException
>       at 
> org.apache.derbyTesting.junit.SystemPropertyTestSetup.setProperties(SystemPropertyTestSetup.java:116)
>       at 
> org.apache.derbyTesting.junit.SystemPropertyTestSetup.setUp(SystemPropertyTestSetup.java:87)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:18)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
> 2) LobLimitsTestjava.sql.SQLNonTransientConnectionException: DERBY SQL error: 
> SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: org.apache.derby.jdbc.EmbeddedDriver 
> is not registered with the JDBC driver manager
>       at 
> org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:71)
>       at 
> org.apache.derby.client.am.SqlException.getSQLException(SqlException.java:364)
>       at org.apache.derby.jdbc.ClientDriver.connect(ClientDriver.java:166)
>       at java.sql.DriverManager.getConnection(DriverManager.java:322)
>       at java.sql.DriverManager.getConnection(DriverManager.java:297)
>       at 
> org.apache.derbyTesting.junit.DriverManagerConnector.openConnection(DriverManagerConnector.java:100)
>       at 
> org.apache.derbyTesting.junit.DriverManagerConnector.openConnection(DriverManagerConnector.java:67)
>       at 
> org.apache.derbyTesting.junit.DriverManagerConnector.openConnection(DriverManagerConnector.java:43)
>       at 
> org.apache.derbyTesting.junit.TestConfiguration.openDefaultConnection(TestConfiguration.java:1633)
>       at 
> org.apache.derbyTesting.junit.BaseJDBCTestSetup.getConnection(BaseJDBCTestSetup.java:72)
>       at 
> org.apache.derbyTesting.junit.CleanDatabaseTestSetup.setUp(CleanDatabaseTestSetup.java:104)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:18)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
> Caused by: org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: 
> -1, SQLSTATE: 08006, SQLERRMC: org.apache.derby.jdbc.EmbeddedDriver is not 
> registered with the JDBC driver manager
>       at 
> org.apache.derby.client.am.Connection.completeSqlca(Connection.java:2125)
>       at 
> org.apache.derby.client.net.NetConnectionReply.parseRdbAccessFailed(NetConnectionReply.java:538)
>       at 
> org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(NetConnectionReply.java:431)
>       at 
> org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(NetConnectionReply.java:294)
>       at 
> org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(NetConnectionReply.java:121)
>       at 
> org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(NetConnection.java:826)
>       at 
> org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(NetConnection.java:762)
>       at 
> org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(NetConnection.java:591)
>       at 
> org.apache.derby.client.net.NetConnection.flowConnect(NetConnection.java:406)
>       at 
> org.apache.derby.client.net.NetConnection.<init>(NetConnection.java:220)
>       at 
> org.apache.derby.client.net.NetConnection40.<init>(NetConnection40.java:74)
>       at 
> org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConnection(ClientJDBCObjectFactoryImpl40.java:269)
>       at org.apache.derby.jdbc.ClientDriver.connect(ClientDriver.java:157)
>       ... 43 more
> There was 1 failure:
> 1) LobLimitsTestjunit.framework.ComparisonFailure: Engine shutdown 
> expected:<XJ015> but was:<08001>
>       at 
> org.apache.derbyTesting.junit.BaseJDBCTestCase.assertSQLState(BaseJDBCTestCase.java:790)
>       at 
> org.apache.derbyTesting.junit.TestConfiguration.shutdownEngine(TestConfiguration.java:1751)
>       at 
> org.apache.derbyTesting.junit.SystemPropertyTestSetup.tearDown(SystemPropertyTestSetup.java:108)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:20)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
> Caused by: java.sql.SQLException: No suitable driver
>       at java.sql.DriverManager.getConnection(DriverManager.java:330)
>       at java.sql.DriverManager.getConnection(DriverManager.java:297)
>       at 
> org.apache.derbyTesting.junit.DriverManagerConnector.getConnectionByAttributes(DriverManagerConnector.java:163)
>       at 
> org.apache.derbyTesting.junit.DriverManagerConnector.shutEngine(DriverManagerConnector.java:140)
>       at 
> org.apache.derbyTesting.junit.TestConfiguration.shutdownEngine(TestConfiguration.java:1748)
>       ... 31 more
> FAILURES!!!
> Tests run: 11,  Failures: 1,  Errors: 2

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to