You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2013/04/25 00:04:11 UTC

svn commit: r1471720 - in /jena/Experimental/jena-jdbc: jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/ jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/metadata/ jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc...

Author: rvesse
Date: Wed Apr 24 22:04:10 2013
New Revision: 1471720

URL: http://svn.apache.org/r1471720
Log:
More metadata tests

Added:
    jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/
    jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/TestRemoteConnectionMetadata.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/
    jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java
Modified:
    jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/AbstractDatabaseMetadataTests.java
    jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/TestMetaResultSet.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/metadata/TestDatasetConnectionMetadata.java

Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/AbstractDatabaseMetadataTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/AbstractDatabaseMetadataTests.java?rev=1471720&r1=1471719&r2=1471720&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/AbstractDatabaseMetadataTests.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/AbstractDatabaseMetadataTests.java Wed Apr 24 22:04:10 2013
@@ -18,9 +18,11 @@
 
 package org.apache.jena.jdbc.metadata.results;
 
+import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.List;
 
 import org.apache.jena.jdbc.connections.JenaConnection;
 import org.apache.log4j.BasicConfigurator;
@@ -41,6 +43,14 @@ public abstract class AbstractDatabaseMe
 
     protected abstract JenaConnection getConnection() throws SQLException;
 
+    protected abstract List<Integer> getSupportedTransactionLevels();
+
+    /**
+     * JDBC transaction levels
+     */
+    private static int[] TRANSACTION_LEVELS = new int[] { Connection.TRANSACTION_NONE, Connection.TRANSACTION_READ_COMMITTED,
+            Connection.TRANSACTION_READ_UNCOMMITTED, Connection.TRANSACTION_REPEATABLE_READ, Connection.TRANSACTION_SERIALIZABLE };
+
     static {
         // Init Log4j
         BasicConfigurator.resetConfiguration();
@@ -52,7 +62,9 @@ public abstract class AbstractDatabaseMe
     }
 
     /**
-     * Get type info and check the nullable column (regression for an issue encountered during debugging)
+     * Get type info and check the nullable column (regression for an issue
+     * encountered during debugging)
+     * 
      * @throws SQLException
      */
     @Test
@@ -72,4 +84,30 @@ public abstract class AbstractDatabaseMe
         conn.close();
         Assert.assertTrue(typeInfo.isClosed());
     }
+
+    /**
+     * Tests that reported transaction support is correct
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void metadata_transaction_support() throws SQLException {
+        JenaConnection conn = this.getConnection();
+        DatabaseMetaData metadata = conn.getMetaData();
+
+        List<Integer> supportedLevels = this.getSupportedTransactionLevels();
+
+        // Expect transactions to report as supported if some supported levels
+        // are returned and either:
+        // 1 - There is more than one supported level
+        // 2 - There is one supported level which is not TRANSACTION_NONE
+        boolean expectedSupport = supportedLevels.size() > 0
+                && (supportedLevels.size() != 1 || (supportedLevels.size() == 1 && !supportedLevels.get(0).equals(
+                        Connection.TRANSACTION_NONE)));
+        Assert.assertEquals(expectedSupport, metadata.supportsTransactions());
+
+        for (int level : TRANSACTION_LEVELS) {
+            Assert.assertEquals(supportedLevels.contains(level), metadata.supportsTransactionIsolationLevel(level));
+        }
+    }
 }

Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/TestMetaResultSet.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/TestMetaResultSet.java?rev=1471720&r1=1471719&r2=1471720&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/TestMetaResultSet.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/metadata/results/TestMetaResultSet.java Wed Apr 24 22:04:10 2013
@@ -42,452 +42,607 @@ import org.junit.Test;
 
 /**
  * Tests for the {@link MetaResultSet}
- *
+ * 
  */
 public class TestMetaResultSet {
-    
+
     /**
      * Check empty meta result set
+     * 
      * @throws SQLException
      */
     @Test
     public void empty_meta_result_set_01() throws SQLException {
         MetaResultSet results = new MetaResultSet(new ColumnInfo[0]);
-        
-        //Check results metadata
+
+        // Check results metadata
         ResultSetMetaData metadata = results.getMetaData();
         Assert.assertEquals(0, metadata.getColumnCount());
-        
-        //Check results
+
+        // Check results
         Assert.assertTrue(results.isBeforeFirst());
         Assert.assertFalse(results.next());
         Assert.assertTrue(results.isAfterLast());
-        
+
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Check empty meta result set with a single column
+     * 
      * @throws SQLException
      */
     @Test
     public void empty_meta_result_set_02() throws SQLException {
         MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new StringColumn("Test", ResultSetMetaData.columnNullable) });
-        
-        //Check results metadata
+
+        // Check results metadata
         ResultSetMetaData metadata = results.getMetaData();
         Assert.assertEquals(1, metadata.getColumnCount());
-        
-        //Check results
+
+        // Check results
         Assert.assertTrue(results.isBeforeFirst());
         Assert.assertFalse(results.next());
         Assert.assertTrue(results.isAfterLast());
-        
+
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Trying to create a meta result set with bad data is an error
+     * 
      * @throws SQLException
      */
-    @Test(expected=SQLException.class)
+    @Test(expected = SQLException.class)
     public void meta_result_set_bad_01() throws SQLException {
         // Every row must have the correct number of columns
-        new MetaResultSet(new ColumnInfo[] { new StringColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { } });
+        new MetaResultSet(new ColumnInfo[] { new StringColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { {} });
+    }
+
+    private MetaResultSet createMetaResultSet(int rows) throws SQLException {
+        ColumnInfo[] columns = new ColumnInfo[] { new IntegerColumn("Test", ResultSetMetaData.columnNoNulls, true) };
+        Object[][] rowData = new Object[rows][1];
+        for (int i = 0; i < rowData.length; i++) {
+            rowData[i][0] = (i + 1);
+        }
+        return new MetaResultSet(columns, rowData);
+    }
+
+    /**
+     * Test movement within meta results
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void meta_result_set_movement_01() throws SQLException {
+        MetaResultSet results = createMetaResultSet(0);
+        Assert.assertTrue(results.isBeforeFirst());
+        Assert.assertFalse(results.next());
+        Assert.assertTrue(results.isAfterLast());
+
+        results.close();
+        Assert.assertTrue(results.isClosed());
+    }
+
+    /**
+     * Test movement within meta results
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void meta_result_set_movement_02() throws SQLException {
+        MetaResultSet results = createMetaResultSet(1);
+        Assert.assertTrue(results.isBeforeFirst());
+
+        // Move forwards
+        Assert.assertTrue(results.next());
+        Assert.assertTrue(results.isFirst());
+        Assert.assertFalse(results.isBeforeFirst());
+        Assert.assertTrue(results.isLast());
+        Assert.assertFalse(results.isAfterLast());
+
+        // Move to end
+        Assert.assertFalse(results.next());
+        Assert.assertTrue(results.isAfterLast());
+
+        results.close();
+        Assert.assertTrue(results.isClosed());
+    }
+
+    /**
+     * Test movement within meta results
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void meta_result_set_movement_03() throws SQLException {
+        MetaResultSet results = createMetaResultSet(1);
+        Assert.assertTrue(results.isBeforeFirst());
+
+        // Move forwards
+        Assert.assertTrue(results.next());
+        Assert.assertTrue(results.isFirst());
+        Assert.assertFalse(results.isBeforeFirst());
+        Assert.assertTrue(results.isLast());
+        Assert.assertFalse(results.isAfterLast());
+
+        // Move to end
+        Assert.assertFalse(results.next());
+        Assert.assertTrue(results.isAfterLast());
+        
+        // Move backwards
+        Assert.assertTrue(results.previous());
+        Assert.assertTrue(results.isFirst());
+        Assert.assertFalse(results.isBeforeFirst());
+        Assert.assertTrue(results.isLast());
+        Assert.assertFalse(results.isAfterLast());
+        
+        results.close();
+        Assert.assertTrue(results.isClosed());
+    }
+    
+    /**
+     * Test movement within meta results
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void meta_result_set_movement_04() throws SQLException {
+        MetaResultSet results = createMetaResultSet(1);
+        Assert.assertTrue(results.isBeforeFirst());
+
+        // Move to absolute row
+        Assert.assertTrue(results.absolute(1));
+        Assert.assertTrue(results.isFirst());
+        Assert.assertFalse(results.isBeforeFirst());
+        Assert.assertTrue(results.isLast());
+        Assert.assertFalse(results.isAfterLast());
+
+        // Move to end
+        Assert.assertFalse(results.next());
+        Assert.assertTrue(results.isAfterLast());
+
+        results.close();
+        Assert.assertTrue(results.isClosed());
     }
-       
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_string_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new StringColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { "value" } });
-        
+        MetaResultSet results = new MetaResultSet(
+                new ColumnInfo[] { new StringColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { "value" } });
+
         Assert.assertTrue(results.next());
         String value = results.getString(1);
         Assert.assertEquals("value", value);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_string_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new StringColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(
+                new ColumnInfo[] { new StringColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         String value = results.getString(1);
         Assert.assertEquals(null, value);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_boolean_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new BooleanColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { true } });
-        
+        MetaResultSet results = new MetaResultSet(
+                new ColumnInfo[] { new BooleanColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { true } });
+
         Assert.assertTrue(results.next());
         Assert.assertTrue(results.getBoolean(1));
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_boolean_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new BooleanColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(
+                new ColumnInfo[] { new BooleanColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         Assert.assertFalse(results.getBoolean(1));
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_byte_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ByteColumn("Test", ResultSetMetaData.columnNullable, true) }, new Object[][] { { (byte)0x10 } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ByteColumn("Test", ResultSetMetaData.columnNullable,
+                true) }, new Object[][] { { (byte) 0x10 } });
+
         Assert.assertTrue(results.next());
         byte value = results.getByte(1);
         Assert.assertEquals(0x10, value);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_byte_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ByteColumn("Test", ResultSetMetaData.columnNullable, true) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ByteColumn("Test", ResultSetMetaData.columnNullable,
+                true) }, new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         byte value = results.getByte(1);
         Assert.assertEquals(0x0, value);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @SuppressWarnings("deprecation")
     @Test
     public void meta_result_set_date_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new DateColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { new Date(2013, 4, 24) } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new DateColumn("Test", ResultSetMetaData.columnNullable) },
+                new Object[][] { { new Date(2013, 4, 24) } });
+
         Assert.assertTrue(results.next());
         Date value = results.getDate(1);
         Assert.assertEquals(new Date(2013, 4, 24), value);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_date_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new DateColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new DateColumn("Test", ResultSetMetaData.columnNullable) },
+                new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         Date value = results.getDate(1);
         Assert.assertEquals(null, value);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_time_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new TimeColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { new Time(0) } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new TimeColumn("Test", ResultSetMetaData.columnNullable) },
+                new Object[][] { { new Time(0) } });
+
         Assert.assertTrue(results.next());
         Time value = results.getTime(1);
         Assert.assertEquals(new Time(0), value);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_time_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new TimeColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new TimeColumn("Test", ResultSetMetaData.columnNullable) },
+                new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         Time value = results.getTime(1);
         Assert.assertEquals(null, value);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_decimal_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new DecimalColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { new BigDecimal("123.4") } });
-        
+        MetaResultSet results = new MetaResultSet(
+                new ColumnInfo[] { new DecimalColumn("Test", ResultSetMetaData.columnNullable) },
+                new Object[][] { { new BigDecimal("123.4") } });
+
         Assert.assertTrue(results.next());
         BigDecimal value = results.getBigDecimal(1);
         Assert.assertEquals(new BigDecimal("123.4"), value);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_decimal_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new DecimalColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(
+                new ColumnInfo[] { new DecimalColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         BigDecimal value = results.getBigDecimal(1);
         Assert.assertEquals(null, value);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_double_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new DoubleColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { 0.123d } });
-        
+        MetaResultSet results = new MetaResultSet(
+                new ColumnInfo[] { new DoubleColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { 0.123d } });
+
         Assert.assertTrue(results.next());
         double value = results.getDouble(1);
         Assert.assertEquals(0.123d, value, 0d);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_double_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ByteColumn("Test", ResultSetMetaData.columnNullable, true) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ByteColumn("Test", ResultSetMetaData.columnNullable,
+                true) }, new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         double value = results.getDouble(1);
         Assert.assertEquals(0d, value, 0d);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_float_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new FloatColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { 0.123f } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new FloatColumn("Test", ResultSetMetaData.columnNullable) },
+                new Object[][] { { 0.123f } });
+
         Assert.assertTrue(results.next());
         float value = results.getFloat(1);
         Assert.assertEquals(0.123f, value, 0f);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_float_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new FloatColumn("Test", ResultSetMetaData.columnNullable) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new FloatColumn("Test", ResultSetMetaData.columnNullable) },
+                new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         float value = results.getFloat(1);
         Assert.assertEquals(0f, value, 0f);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_integer_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new IntegerColumn("Test", ResultSetMetaData.columnNullable, true) }, new Object[][] { { 1234 } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new IntegerColumn("Test", ResultSetMetaData.columnNullable,
+                true) }, new Object[][] { { 1234 } });
+
         Assert.assertTrue(results.next());
         int value = results.getInt(1);
         Assert.assertEquals(1234, value);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_integer_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new IntegerColumn("Test", ResultSetMetaData.columnNullable, true) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new IntegerColumn("Test", ResultSetMetaData.columnNullable,
+                true) }, new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         int value = results.getInt(1);
         Assert.assertEquals(0, value);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_long_integer_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new LongIntegerColumn("Test", ResultSetMetaData.columnNullable, true) }, new Object[][] { { 1234l } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new LongIntegerColumn("Test",
+                ResultSetMetaData.columnNullable, true) }, new Object[][] { { 1234l } });
+
         Assert.assertTrue(results.next());
         long value = results.getLong(1);
         Assert.assertEquals(1234, value);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_long_integer_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new LongIntegerColumn("Test", ResultSetMetaData.columnNullable, true) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new LongIntegerColumn("Test",
+                ResultSetMetaData.columnNullable, true) }, new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         long value = results.getLong(1);
         Assert.assertEquals(0, value);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_short_integer_01() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ShortIntegerColumn("Test", ResultSetMetaData.columnNullable, true) }, new Object[][] { { (short)1234 } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ShortIntegerColumn("Test",
+                ResultSetMetaData.columnNullable, true) }, new Object[][] { { (short) 1234 } });
+
         Assert.assertTrue(results.next());
         short value = results.getShort(1);
-        Assert.assertEquals((short)1234, value);
+        Assert.assertEquals((short) 1234, value);
         Assert.assertFalse(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());
     }
-    
+
     /**
      * Test retrieving meta column values
+     * 
      * @throws SQLException
      */
     @Test
     public void meta_result_set_short_integer_02() throws SQLException {
-        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ShortIntegerColumn("Test", ResultSetMetaData.columnNullable, true) }, new Object[][] { { null } });
-        
+        MetaResultSet results = new MetaResultSet(new ColumnInfo[] { new ShortIntegerColumn("Test",
+                ResultSetMetaData.columnNullable, true) }, new Object[][] { { null } });
+
         Assert.assertTrue(results.next());
         short value = results.getShort(1);
-        Assert.assertEquals((short)0, value);
+        Assert.assertEquals((short) 0, value);
         Assert.assertTrue(results.wasNull());
-        
+
         Assert.assertFalse(results.next());
         results.close();
         Assert.assertTrue(results.isClosed());

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/metadata/TestDatasetConnectionMetadata.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/metadata/TestDatasetConnectionMetadata.java?rev=1471720&r1=1471719&r2=1471720&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/metadata/TestDatasetConnectionMetadata.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-mem/src/test/java/org/apache/jena/jdbc/mem/metadata/TestDatasetConnectionMetadata.java Wed Apr 24 22:04:10 2013
@@ -18,7 +18,10 @@
 
 package org.apache.jena.jdbc.mem.metadata;
 
+import java.sql.Connection;
 import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.jena.jdbc.JdbcCompatibility;
 import org.apache.jena.jdbc.connections.JenaConnection;
@@ -39,4 +42,11 @@ public class TestDatasetConnectionMetada
                 JenaConnection.DEFAULT_AUTO_COMMIT, JenaConnection.DEFAULT_ISOLATION_LEVEL, JdbcCompatibility.DEFAULT);
     }
 
+    @Override
+    protected List<Integer> getSupportedTransactionLevels() {
+        List<Integer> levels = new ArrayList<Integer>();
+        levels.add(Connection.TRANSACTION_NONE);
+        return levels;
+    }
+
 }

Added: jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/TestRemoteConnectionMetadata.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/TestRemoteConnectionMetadata.java?rev=1471720&view=auto
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/TestRemoteConnectionMetadata.java (added)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-remote/src/test/java/org/apache/jena/jdbc/remote/metadata/TestRemoteConnectionMetadata.java Wed Apr 24 22:04:10 2013
@@ -0,0 +1,79 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package org.apache.jena.jdbc.remote.metadata;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.jena.fuseki.BaseServerTest;
+import org.apache.jena.fuseki.ServerTest;
+import org.apache.jena.jdbc.JdbcCompatibility;
+import org.apache.jena.jdbc.connections.JenaConnection;
+import org.apache.jena.jdbc.metadata.results.AbstractDatabaseMetadataTests;
+import org.apache.jena.jdbc.remote.connections.RemoteEndpointConnection;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+/**
+ * Tests for database metadata for {@link RemoteEndpointConnection} instances
+ *
+ */
+public class TestRemoteConnectionMetadata extends AbstractDatabaseMetadataTests {
+
+    /**
+     * Setup for the tests by allocating a Fuseki instance to work with
+     */
+    @BeforeClass
+    public static void setup() {
+        ServerTest.allocServer();
+    }
+    
+    /**
+     * Clean up after each test by resetting the Fuseki instance
+     */
+    @After
+    public void cleanupTest() {
+        ServerTest.resetServer();
+    }
+    
+    /**
+     * Clean up after tests by de-allocating the Fuseki instance
+     */
+    @AfterClass
+    public static void cleanup() {
+        ServerTest.freeServer();
+    }
+
+    @Override
+    protected JenaConnection getConnection() throws SQLException {
+        return new RemoteEndpointConnection(BaseServerTest.serviceQuery, BaseServerTest.serviceUpdate, JenaConnection.DEFAULT_HOLDABILITY, JdbcCompatibility.DEFAULT);
+    }
+
+    @Override
+    protected List<Integer> getSupportedTransactionLevels() {
+        List<Integer> levels = new ArrayList<Integer>();
+        levels.add(Connection.TRANSACTION_NONE);
+        return levels;
+    }
+
+}

Added: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java?rev=1471720&view=auto
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java (added)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java Wed Apr 24 22:04:10 2013
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.jdbc.tdb.metadata;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.jena.jdbc.JdbcCompatibility;
+import org.apache.jena.jdbc.connections.JenaConnection;
+import org.apache.jena.jdbc.metadata.results.AbstractDatabaseMetadataTests;
+import org.apache.jena.jdbc.tdb.connections.TDBConnection;
+
+import com.hp.hpl.jena.tdb.TDBFactory;
+
+/**
+ * Tests database metadata for TDB connections
+ * @author rvesse
+ *
+ */
+public class TestTdbConnectionMetadata extends AbstractDatabaseMetadataTests {
+
+    @Override
+    protected JenaConnection getConnection() throws SQLException {
+        return new TDBConnection(TDBFactory.createDataset(), JenaConnection.DEFAULT_HOLDABILITY,
+                JenaConnection.DEFAULT_AUTO_COMMIT, JdbcCompatibility.DEFAULT);
+    }
+
+    @Override
+    protected List<Integer> getSupportedTransactionLevels() {
+        List<Integer> levels = new ArrayList<Integer>();
+        levels.add(Connection.TRANSACTION_SERIALIZABLE);
+        return levels;
+    }
+
+}