db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From myrn...@apache.org
Subject svn commit: r1627671 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/jdbc/ testing/org/apache/derbyTesting/functionTests/tests/memorydb/
Date Thu, 25 Sep 2014 21:26:13 GMT
Author: myrnavl
Date: Thu Sep 25 21:26:12 2014
New Revision: 1627671

URL: http://svn.apache.org/r1627671
Log:
DERBY-6662; DatabaseMetaData.usesLocalFiles() returns true for in-memory databases
   Making the usesLocalFiles and usesLocalFilePerTable method return false if it's a memory
database and add a test.

Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/Derby6662Test.java
  (with props)
Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedDatabaseMetaData.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/_Suite.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedDatabaseMetaData.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedDatabaseMetaData.java?rev=1627671&r1=1627670&r2=1627671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedDatabaseMetaData.java
(original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedDatabaseMetaData.java
Thu Sep 25 21:26:12 2014
@@ -331,7 +331,10 @@ public class EmbedDatabaseMetaData exten
      * @return true if so
      */
 	public boolean usesLocalFiles() {
-		return true;
+        if (url.contains("memory"))
+            return false;
+        else
+            return true;
 	}
 
     /**
@@ -340,7 +343,10 @@ public class EmbedDatabaseMetaData exten
      * @return true if the database uses a local file for each table
      */
 	public boolean usesLocalFilePerTable() {
-		return true;
+        if (url.contains("memory"))
+            return false;
+        else
+            return true;
 	}
 
     /**

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/Derby6662Test.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/Derby6662Test.java?rev=1627671&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/Derby6662Test.java
(added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/Derby6662Test.java
Thu Sep 25 21:26:12 2014
@@ -0,0 +1,118 @@
+/*
+   Derby - Class org.apache.derbyTesting.functionTests.tests.memorydb.Derby6662Test
+
+   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.derbyTesting.functionTests.tests.memorydb;
+
+import junit.framework.Test;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import org.apache.derbyTesting.junit.BaseJDBCTestCase;
+import org.apache.derbyTesting.junit.TestConfiguration;
+
+public class Derby6662Test extends BaseJDBCTestCase {
+    
+    public Derby6662Test(String name) { super(name); }
+    
+    public static Test suite() {
+      return TestConfiguration.defaultSuite(Derby6662Test.class);
+    }
+    
+    /** Dispose of objects after testing. */
+    protected void tearDown() throws Exception
+    {
+      super.tearDown();
+    }
+    
+    public void testDatabaseMetaDataCalls() throws SQLException
+    {
+        DatabaseMetaData dmd = getDMD();
+        assertFalse(dmd.usesLocalFilePerTable());
+        assertFalse(dmd.usesLocalFiles());
+    }
+    
+    private DatabaseMetaData getDMD() throws SQLException
+    {
+        return obtainConnection().getMetaData();
+    }
+    
+    /**
+     * Obtains a connection to an in-memory database.
+     *
+     * @return A connection to an in-memory database.
+     * @throws SQLException if obtaining the connection fails
+     */
+    private Connection obtainConnection()
+          throws SQLException {
+      try {
+          if (usingDerbyNetClient()) {
+              Class.forName("org.apache.derby.jdbc.ClientDriver");
+          } else {
+              Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+          }
+      } catch (Exception e) {
+          SQLException sqle =  new SQLException(e.getMessage());
+          sqle.initCause(e);
+          throw sqle;
+      }
+      StringBuffer sb = constructUrl().append(";create=true");
+      return DriverManager.getConnection(sb.toString());
+    }
+    
+    /**
+     * Drops the database used by the test.
+     *
+     * @throws SQLException if dropping the database fails
+     */
+    private void dropInMemoryDb() throws SQLException {
+        StringBuffer sb = constructUrl().append(";drop=true");
+        try {
+            DriverManager.getConnection(sb.toString());
+            fail("Dropping database should have raised exception.");
+        } catch (SQLException sqle) {
+            assertSQLState("08006", sqle);
+        }
+    }
+    
+    /**
+     * Constructs the default URL for the in-memory test database.
+     *
+     * @return A database URL (without any connection attributes).
+     */
+    private StringBuffer constructUrl() {
+        StringBuffer sb = new StringBuffer("jdbc:derby:");
+        if (usingEmbedded()) {
+            sb.append("memory:");
+        } else {
+            // This is a hack. Change this when proper support for the in-memory
+            // back end has been implemented.
+            sb.append("//");
+            sb.append(TestConfiguration.getCurrent().getHostName());
+            sb.append(':');
+            sb.append(TestConfiguration.getCurrent().getPort());
+            sb.append('/');
+            sb.append("memory:");
+        }
+        sb.append("MogTestDb");
+        return sb;
+    }
+}

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/Derby6662Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/_Suite.java?rev=1627671&r1=1627670&r2=1627671&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/_Suite.java
(original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/memorydb/_Suite.java
Thu Sep 25 21:26:12 2014
@@ -46,6 +46,7 @@ public class _Suite extends BaseTestCase
         // Tests are not yet compatible with JSR169 / JavaME
         if (!JDBC.vmSupportsJSR169()) {
             suite.addTest(BasicInMemoryDbTest.suite());
+            suite.addTest(Derby6662Test.suite());
             suite.addTest(MogTest.suite());
         }
         return suite;



Mime
View raw message