Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt2014-07-18 04:57:57 +0000
committerJoakim Erdfelt2014-07-18 04:57:57 +0000
commite9a77b6ac76f10e9caca3cee0d76a443df05ae3d (patch)
tree99f5071ad0b52812dbfc8898df05c8d53c5e117c
parenta09d05ee9d2cb38131e68db6bb018d5cd9f5d449 (diff)
downloadorg.eclipse.jetty.project-e9a77b6ac76f10e9caca3cee0d76a443df05ae3d.tar.gz
org.eclipse.jetty.project-e9a77b6ac76f10e9caca3cee0d76a443df05ae3d.tar.xz
org.eclipse.jetty.project-e9a77b6ac76f10e9caca3cee0d76a443df05ae3d.zip
Work with derby internal caching of "derby.system.home" system property.
+ Turns out, changing "derby.system.home" is unreliable. + Using 'directory' based jdbc urls for derby to avoid finding content in the classloader too. + Use a common derby "System Home" for all tests. + Segregate all database creation into own, test-specific, database.
-rw-r--r--tests/test-loginservice/src/test/java/org/eclipse/jetty/DataSourceLoginServiceTest.java10
-rw-r--r--tests/test-loginservice/src/test/java/org/eclipse/jetty/DatabaseLoginServiceTestServer.java17
-rw-r--r--tests/test-loginservice/src/test/java/org/eclipse/jetty/JdbcLoginServiceTest.java7
3 files changed, 19 insertions, 15 deletions
diff --git a/tests/test-loginservice/src/test/java/org/eclipse/jetty/DataSourceLoginServiceTest.java b/tests/test-loginservice/src/test/java/org/eclipse/jetty/DataSourceLoginServiceTest.java
index c768be9b29..b635cb5980 100644
--- a/tests/test-loginservice/src/test/java/org/eclipse/jetty/DataSourceLoginServiceTest.java
+++ b/tests/test-loginservice/src/test/java/org/eclipse/jetty/DataSourceLoginServiceTest.java
@@ -73,13 +73,8 @@ public class DataSourceLoginServiceTest
out.write(_content.getBytes("utf-8"));
out.close();
- _dbRoot = new File(_docRoot, "derby");
- String dbPath = _dbRoot.getAbsolutePath();
- System.setProperty("derby.system.home", dbPath);
- FS.ensureEmpty(_dbRoot);
-
File scriptFile = MavenTestingUtils.getTestResourceFile("createdb.sql");
- DatabaseLoginServiceTestServer.createDB(dbPath, scriptFile, "jdbc:derby:dstest;create=true");
+ _dbRoot = DatabaseLoginServiceTestServer.createDB(scriptFile,"dstest");
_testServer = new DatabaseLoginServiceTestServer();
_testServer.setResourceBase(_docRoot.getAbsolutePath());
@@ -120,8 +115,7 @@ public class DataSourceLoginServiceTest
//create a datasource
EmbeddedDataSource ds = new EmbeddedDataSource();
- File db = new File (_dbRoot, "dstest");
- ds.setDatabaseName(db.getAbsolutePath());
+ ds.setDatabaseName(_dbRoot.getAbsolutePath());
org.eclipse.jetty.plus.jndi.Resource binding = new org.eclipse.jetty.plus.jndi.Resource(null, "dstest",
ds);
assertThat("Created binding for dstest", binding, notNullValue());
diff --git a/tests/test-loginservice/src/test/java/org/eclipse/jetty/DatabaseLoginServiceTestServer.java b/tests/test-loginservice/src/test/java/org/eclipse/jetty/DatabaseLoginServiceTestServer.java
index b54e887cef..322e407c65 100644
--- a/tests/test-loginservice/src/test/java/org/eclipse/jetty/DatabaseLoginServiceTestServer.java
+++ b/tests/test-loginservice/src/test/java/org/eclipse/jetty/DatabaseLoginServiceTestServer.java
@@ -54,6 +54,7 @@ import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.toolchain.test.FS;
+import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.eclipse.jetty.util.IO;
import org.eclipse.jetty.util.Loader;
import org.eclipse.jetty.util.security.Constraint;
@@ -70,10 +71,20 @@ public class DatabaseLoginServiceTestServer
protected LoginService _loginService;
protected String _resourceBase;
protected TestHandler _handler;
+ private static File commonDerbySystemHome;
protected static String _requestContent;
- protected static void createDB(String homeDir, File scriptFile, String dbUrl) throws Exception
+ protected static File createDB(File scriptFile, String dbName) throws Exception
{
+ if(commonDerbySystemHome == null)
+ {
+ commonDerbySystemHome = MavenTestingUtils.getTargetTestingDir("derby-system-common");
+ FS.ensureEmpty(commonDerbySystemHome);
+ System.setProperty("derby.system.home", commonDerbySystemHome.getAbsolutePath());
+ }
+
+ String dbUrl = "jdbc:derby:directory:" + dbName + ";create=true";
+
try (FileInputStream fileStream = new FileInputStream(scriptFile))
{
Loader.loadClass(fileStream.getClass(), "org.apache.derby.jdbc.EmbeddedDriver").newInstance();
@@ -83,6 +94,10 @@ public class DatabaseLoginServiceTestServer
int result = ij.runScript(connection, fileStream, "UTF-8", out, "UTF-8");
assertThat("runScript result",result, is(0));
+
+ File dbRoot = new File(commonDerbySystemHome, dbName);
+ assertThat("exists: " + dbRoot, dbRoot.exists(), is(true));
+ return dbRoot;
}
}
diff --git a/tests/test-loginservice/src/test/java/org/eclipse/jetty/JdbcLoginServiceTest.java b/tests/test-loginservice/src/test/java/org/eclipse/jetty/JdbcLoginServiceTest.java
index 9daff655b7..8ff5aa8d52 100644
--- a/tests/test-loginservice/src/test/java/org/eclipse/jetty/JdbcLoginServiceTest.java
+++ b/tests/test-loginservice/src/test/java/org/eclipse/jetty/JdbcLoginServiceTest.java
@@ -81,14 +81,9 @@ public class JdbcLoginServiceTest
{
out.write(_content.getBytes("utf-8"));
}
-
- File dbRoot = new File(_docRoot, "derby");
- String dbPath = dbRoot.getAbsolutePath();
- System.setProperty("derby.system.home", dbPath);
- FS.ensureEmpty(dbRoot);
File scriptFile = MavenTestingUtils.getTestResourceFile("createdb.sql");
- DatabaseLoginServiceTestServer.createDB(dbPath, scriptFile, "jdbc:derby:jdbcrealm;create=true");
+ DatabaseLoginServiceTestServer.createDB(scriptFile,"jdbcrealm");
File jdbcRealmFile = MavenTestingUtils.getTestResourceFile("jdbcrealm.properties");

Back to the top