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

Knut Anders Hatlen commented on DERBY-974:
------------------------------------------

Rather than hard-coding the host name and the database name, I think you can 
wrap the test case in a DatabaseChangeSetup via 
TestConfiguration.singleUseDatabaseDecorator(). This will automatically 
generate a unique database name and do cleanup afterwards. Then you can get the 
JDBC URL by calling TestConfiguration.getCurrent().getJDBCUrl(). With this 
approach, it is also easier to make the test run in both embedded mode and 
client/server mode, so you don't need special code in suite().

Wouldn't it be better to skip this catch block? If the test fails, it would 
probably be more interesting to see the actual error message and its stack 
trace, so I think it is better just to let the exception propagate up to the 
caller.
+        } catch (SQLNonTransientConnectionException e){
+            fail("Connecting with a Properties object with "+
+                 "default values does not work");
+        } finally {

Does this test belong in the JDBC 4 suite? I don't see that it is testing any 
functionality specific to JDBC 4. Perhaps jdbcapi/DriverTest is a better place? 
In fact, it looks like DriverTest already has what you need to pass in a 
Properties object to getConnection(). See DriverTest.assertConnect().

> ClientDriver can lose some connection properties
> ------------------------------------------------
>
>                 Key: DERBY-974
>                 URL: https://issues.apache.org/jira/browse/DERBY-974
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions: 10.1.2.1, 10.1.3.1, 10.4.0.0
>         Environment: Linux, Sun JRE 1.5
>            Reporter: Michael Hackett
>            Assignee: Jørgen Løland
>            Priority: Minor
>         Attachments: ClientDriver.java-diff, derby-974-1.diff, 
> derby-974-1.stat, PropertiesTest.java
>
>
> Internally, the ClientDriver class's appendDatabaseAttributes() method uses 
> keys() on the connection properties to get a list of the property names. 
> However, this misses any properties in the default set. The correct method 
> for a Properties object is propertyNames(). This will return the same type of 
> object as keys(), but will include all properties.
> (It is unfortunate that Sun chose to make Properties a subclass of Hashtable, 
> instead of giving Properties a Hashtable, as the former exposes too much 
> implementation.)
> The fix is to simply replace calls to keys() on all Property objects to use 
> propertyNames(). A quick search revealed that this is not the only place in 
> the code base where this is done, so a more thorough scan should be made.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to