[
https://issues.apache.org/jira/browse/DERBY-6702?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Myrna van Lunteren updated DERBY-6702:
--------------------------------------
Attachment: DERBY-6702_tst2.diff
Thanks Knut for the review.
Here is a new patch. It does use an alarm to print out some details if we hit a
problem in generateSeed, although it's not looking for the InternalError
specifically.
It also attempts to gather more information, in the else case, but
alternatively I could leave that alone and just let the assert happen, even if
it is illogical to try to compare 'OK' with an SQLState...
I tested this by temporarily modifying the EncryptionManager.generateSeed to
throw the following exception:
throw new InternalError ("unexpected CryptoAPI failure generating seed");
At that point, the test will now throw an alarm.
In my experiment, the test will then fail in the
assertConnectionUsingDataSource method. It is possible this has not been
reached in the regular test runs because the test was bailing out - if so, this
can be further adjusted if there are more failures.
Patch ready for review.
> test failure in NSSecurityMechanismTest; The expected SQL state must be five
> characters long
> --------------------------------------------------------------------------------------------
>
> Key: DERBY-6702
> URL: https://issues.apache.org/jira/browse/DERBY-6702
> Project: Derby
> Issue Type: Bug
> Components: Test
> Affects Versions: 10.12.0.0
> Reporter: Myrna van Lunteren
> Attachments: DERBY-6702_tst.diff, DERBY-6702_tst2.diff
>
>
> Saw this in a nightly run against trunk (10.12.0.0 alpha - (1617392)) with
> jdk 1.8 (not reported on my public page):
> 1)
> testNetworkServerSecurityMechanism(org.apache.derbyTesting.functionTests.tests.derbynet.NSSecurityMechanismTest)junit.framework.AssertionFailedError:
> The expected SQL state must be five characters long
> at
> org.apache.derbyTesting.junit.BaseJDBCTestCase.assertSQLState(BaseJDBCTestCase.java:873)
> at
> org.apache.derbyTesting.junit.BaseJDBCTestCase.assertSQLState(BaseJDBCTestCase.java:940)
> at
> org.apache.derbyTesting.functionTests.tests.derbynet.NSSecurityMechanismTest.assertConnectionUsingDriverManager(NSSecurityMechanismTest.java:581)
> at
> org.apache.derbyTesting.functionTests.tests.derbynet.NSSecurityMechanismTest.assertConnectionsUsingDriverManager(NSSecurityMechanismTest.java:437)
> at
> org.apache.derbyTesting.functionTests.tests.derbynet.NSSecurityMechanismTest.testNetworkServerSecurityMechanism(NSSecurityMechanismTest.java:291)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at
> org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:118)
> at
> org.apache.derbyTesting.junit.BaseJDBCTestCase.runBareOverridable(BaseJDBCTestCase.java:440)
> at
> org.apache.derbyTesting.junit.BaseJDBCTestCase.runBare(BaseJDBCTestCase.java:457)
> at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> at junit.extensions.TestSetup.run(TestSetup.java:25)
> at
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> at junit.extensions.TestSetup.run(TestSetup.java:25)
> Caused by: java.sql.SQLException: Java exception: 'Unexpected CryptoAPI
> failure generating seed: java.lang.InternalError'.
> at
> org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
> at org.apache.derby.client.am.SqlException.getSQLException(Unknown
> Source)
> at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
> at java.sql.DriverManager.getConnection(DriverManager.java:664)
> at java.sql.DriverManager.getConnection(DriverManager.java:270)
> at
> org.apache.derbyTesting.functionTests.tests.derbynet.NSSecurityMechanismTest.assertConnectionUsingDriverManager(NSSecurityMechanismTest.java:541)
> ... 37 more
> Caused by: ERROR XJ001: Java exception: 'Unexpected CryptoAPI failure
> generating seed: java.lang.InternalError'.
> at org.apache.derby.client.net.NetConnection.flowConnect(Unknown Source)
> at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
> at
> org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(Unknown
> Source)
> ... 41 more
> Caused by: java.lang.InternalError: Unexpected CryptoAPI failure generating
> seed
> at
> sun.security.provider.NativeSeedGenerator.getSeedBytes(NativeSeedGenerator.java:62)
> at
> sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:144)
> at
> sun.security.provider.SecureRandom.engineGenerateSeed(SecureRandom.java:128)
> at java.security.SecureRandom.generateSeed(SecureRandom.java:522)
> at org.apache.derby.client.am.EncryptionManager.generateSeed(Unknown
> Source)
> at
> org.apache.derby.client.net.NetConnection.initializeClientSeed(Unknown Source)
> at
> org.apache.derby.client.net.NetConnection.flowUSRSSBPWDconnect(Unknown Source)
> ... 44 more
> This test passed with this jvm on August 6 (with trunk at revision 1616382),
> but also failed on August 8 (with trunk at revision 1616916).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)