[ 
https://issues.apache.org/jira/browse/DERBY-6073?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Knut Anders Hatlen updated DERBY-6073:
--------------------------------------

    Attachment: derby-6073-03-aa-fixConnector.diff

I think the problem is in the test framework. ConnectionPoolDataSourceConnector 
calls setMaxStatements(2) on the data source before creating a connection. 
However, if that fails, it creates a new data source on which it calls 
setCreateDatabase("create"), and returns a connection created with this data 
source. The data source that creates the database does not have statement 
pooling enabled, and the test case will therefore not use statement pooling if 
the wombat database doesn't already exist before the test case is executed.

The attached patch (derby-6073-03-aa-fixConnector.diff) changes 
ConnectionPoolDataSourceConnector so that it also enables statement pooling on 
data sources that have the createDatabase attribute set. This makes 
StatementPoolingTest pass in my environment also if 
testPoolingEnabledByCheckingImplementationDetails() runs as the first test case.

Running the full regression test suite on the patch to see if it causes 
problems for other tests that use ConnectionPoolDataSourceConnector.
                
> Test ordering instability in StatementPoolingTest
> -------------------------------------------------
>
>                 Key: DERBY-6073
>                 URL: https://issues.apache.org/jira/browse/DERBY-6073
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.9.1.0, 10.10.0.0
>         Environment: Java 7, Java 8
>            Reporter: Rick Hillegas
>         Attachments: derby-6073-01-aa-fixTestCaseOrder.diff, 
> derby-6073-02-aa-java8tweak.diff, derby-6073-03-aa-fixConnector.diff, z.diff
>
>
> StatementPoolingTest.testPoolingEnabledByCheckingImplementationDetails() 
> assumes that the client-side statement cache will have been primed by a 
> previous test case, testCacheOverflow(). On Java 7 and Java 8 the test order 
> is not deterministic. If testPoolingEnabledByCheckingImplementationDetails() 
> is the first test case to run, then it fails with this error:
> org.apache.derbyTesting.functionTests.tests.jdbcapi.StatementPoolingTest.assertClassName(StatementPoolingTest.java:147)
>       at 
> org.apache.derbyTesting.functionTests.tests.jdbcapi.StatementPoolingTest.testPoolingEnabledByCheckingImplementationDetails(StatementPoolingTest.java:89)
> I will attach a patch which forces 
> testPoolingEnabledByCheckingImplementationDetails() to be first in the test 
> order. With this patch, StatementPoolingTest fails for me on Java 7 when run 
> on the 10.9 branch as well as on trunk.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to