You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2016/06/27 21:13:17 UTC
karaf git commit: [KARAF-4597] Avoid npe and exception logging in
main module tests
Repository: karaf
Updated Branches:
refs/heads/master feaf69e1b -> 79a8da425
[KARAF-4597] Avoid npe and exception logging in main module tests
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/79a8da42
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/79a8da42
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/79a8da42
Branch: refs/heads/master
Commit: 79a8da42599329a1d6d893a285281b16dfb0f4a5
Parents: feaf69e
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Mon Jun 27 23:12:42 2016 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Mon Jun 27 23:13:10 2016 +0200
----------------------------------------------------------------------
.../org/apache/karaf/main/InstanceHelper.java | 4 +-
.../apache/karaf/main/lock/DefaultJDBCLock.java | 41 +++++++++-----------
.../org/apache/karaf/main/MainLockingTest.java | 2 -
.../karaf/main/TimeoutShutdownActivator.java | 2 +-
.../karaf/main/lock/BaseJDBCLockTest.java | 7 ++--
.../karaf/main/lock/DefaultJDBCLockTest.java | 15 ++++++-
.../karaf/main/lock/DerbyJDBCLockTest.java | 12 ++++++
.../karaf/main/lock/MySQLJDBCLockTest.java | 12 ++++++
.../karaf/main/lock/OracleJDBCLockTest.java | 7 ++++
.../karaf/main/lock/PostgreSQLJDBCLockTest.java | 12 ++++++
10 files changed, 84 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/InstanceHelper.java b/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
index 309f1ad..8b9ebaa 100644
--- a/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
+++ b/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
@@ -152,7 +152,9 @@ public class InstanceHelper {
port = shutdownSocket.getLocalPort();
}
if (portFile != null) {
- Writer w = new OutputStreamWriter(new FileOutputStream(portFile));
+ File portF = new File(portFile);
+ portF.getParentFile().mkdirs();
+ Writer w = new OutputStreamWriter(new FileOutputStream(portF));
w.write(Integer.toString(port));
w.close();
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java b/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
index a6d5a29..1fe4fe9 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
@@ -152,30 +152,20 @@ public class DefaultJDBCLock implements Lock {
* @return true, if the table exists else false
*/
boolean schemaExist(String tableName) {
- ResultSet rs = null;
- boolean schemaExists = false;
try {
DatabaseMetaData metadata = getConnection().getMetaData();
- rs = metadata.getTables(null, null, tableName, new String[] {"TABLE"});
- schemaExists = rs.next();
- if (schemaExists == false) {
- // try table name in lower case
- rs = metadata.getTables(null, null, tableName.toLowerCase(), new String[] {"TABLE"});
- schemaExists = rs.next();
- }
- /*
- if (schemaExists == false) {
- // try table name in upper case
- rs = getConnection().getMetaData().getTables(null, null, tableName.toUpperCase(), new String[] {"TABLE"});
- schemaExists = rs.next();
- }
- */
+ return metadata != null && (checkTableExists(tableName.toLowerCase(), metadata) //
+ || checkTableExists(tableName.toLowerCase(), metadata));
} catch (Exception ignore) {
- LOG.log(Level.SEVERE, "Error testing for db table", ignore);
- } finally {
- closeSafely(rs);
+ return false;
+ //throw new RuntimeException("Error testing for db table", ignore);
+ }
+ }
+
+ private boolean checkTableExists(String tableName, DatabaseMetaData metadata) throws SQLException {
+ try (ResultSet rs = metadata.getTables(null, null, tableName, new String[] {"TABLE"})) {
+ return rs.next();
}
- return schemaExists;
}
/*
@@ -203,7 +193,7 @@ public class DefaultJDBCLock implements Lock {
lockAquired = preparedStatement.execute();
} catch (Exception e) {
// Do we want to display this message everytime???
- LOG.log(Level.WARNING, "Failed to acquire database lock", e);
+ log(Level.WARNING, "Failed to acquire database lock", e);
} finally {
closeSafely(preparedStatement);
}
@@ -222,13 +212,20 @@ public class DefaultJDBCLock implements Lock {
int rows = preparedStatement.executeUpdate();
lockUpdated = (rows == 1);
} catch (Exception e) {
- LOG.log(Level.WARNING, "Failed to update database lock", e);
+ log(Level.WARNING, "Failed to update database lock", e);
} finally {
closeSafely(preparedStatement);
}
return lockUpdated;
}
+
+ /**
+ * Can be overridden to suppress logs in tests
+ */
+ public void log(Level level, String msg, Exception e) {
+ LOG.log(level, msg, e);
+ }
/*
* (non-Javadoc)
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/test/java/org/apache/karaf/main/MainLockingTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/MainLockingTest.java b/main/src/test/java/org/apache/karaf/main/MainLockingTest.java
index 69c5d15..78d5a32 100644
--- a/main/src/test/java/org/apache/karaf/main/MainLockingTest.java
+++ b/main/src/test/java/org/apache/karaf/main/MainLockingTest.java
@@ -63,8 +63,6 @@ public class MainLockingTest {
bundle.start();
- Thread.sleep(2000);
-
FrameworkStartLevel sl = framework.adapt(FrameworkStartLevel.class);
MockLock lock = (MockLock) main.getLock();
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/test/java/org/apache/karaf/main/TimeoutShutdownActivator.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/TimeoutShutdownActivator.java b/main/src/test/java/org/apache/karaf/main/TimeoutShutdownActivator.java
index 2cfe07d..cd063dc 100644
--- a/main/src/test/java/org/apache/karaf/main/TimeoutShutdownActivator.java
+++ b/main/src/test/java/org/apache/karaf/main/TimeoutShutdownActivator.java
@@ -23,7 +23,7 @@ import org.osgi.framework.BundleContext;
public class TimeoutShutdownActivator implements BundleActivator {
- public static int TIMEOUT = 10000;
+ public static int TIMEOUT = 1000;
public void start(BundleContext context) throws Exception {
System.err.println("Starting timeout activator");
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
index d352bf1..d4d697e 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
@@ -68,7 +68,7 @@ public abstract class BaseJDBCLockTest {
@Before
public void setUp() throws Exception {
- connection = EasyMock.createMock(Connection.class);
+ connection = EasyMock.createNiceMock(Connection.class);
metaData = EasyMock.createMock(DatabaseMetaData.class);
resultSet = EasyMock.createMock(ResultSet.class);
preparedStatement = EasyMock.createMock(PreparedStatement.class);
@@ -88,12 +88,13 @@ public abstract class BaseJDBCLockTest {
public void initShouldCreateTheSchemaIfItNotExists() throws Exception {
expect(connection.isClosed()).andReturn(false);
connection.setAutoCommit(false);
- expect(connection.getMetaData()).andReturn(metaData);
+ expect(connection.getMetaData()).andReturn(metaData).anyTimes();
expect(metaData.getTables((String) isNull(), (String) isNull(), anyString(), aryEq(new String[]{"TABLE"}))).andReturn(resultSet);
expect(metaData.getTables((String) isNull(), (String) isNull(), anyString(), aryEq(new String[]{"TABLE"}))).andReturn(resultSet);
expect(resultSet.next()).andReturn(false);
expect(resultSet.next()).andReturn(false);
resultSet.close();
+ expectLastCall().atLeastOnce();
expect(connection.isClosed()).andReturn(false);
expect(connection.createStatement()).andReturn(statement);
expect(statement.execute("CREATE TABLE " + tableName + " (MOMENT " + momentDatatype + ", NODE " + nodeDatatype + ")" + createTableStmtSuffix)).andReturn(false);
@@ -115,7 +116,7 @@ public abstract class BaseJDBCLockTest {
expect(metaData.getTables((String) isNull(), (String) isNull(), anyString(), aryEq(new String[]{"TABLE"}))).andReturn(resultSet);
expect(resultSet.next()).andReturn(true);
resultSet.close();
-
+ expectLastCall().atLeastOnce();
replay(connection, metaData, statement, preparedStatement, resultSet);
lock = createLock(props);
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java
index 9a3451b..951c458 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java
@@ -21,6 +21,9 @@ package org.apache.karaf.main.lock;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.logging.Level;
+
import org.apache.felix.utils.properties.Properties;
import org.junit.Before;
@@ -54,15 +57,25 @@ public class DefaultJDBCLockTest extends BaseJDBCLockTest {
long getCurrentTimeMillis() {
return 1;
}
+
+ @Override
+ public void log(Level level, String msg, Exception e) {
+ // Suppress log
+ }
};
}
@Test
- public void createConnectionShouldConcatinateOptionsCorrect() {
+ public void createConnectionShouldConcatinateOptionsCorrect() throws SQLException {
props.put("karaf.lock.jdbc.url", this.url + ";dataEncryption=false");
lock = new DefaultJDBCLock(props) {
@Override
+ boolean schemaExists() {
+ return true;
+ }
+
+ @Override
Connection doCreateConnection(String driver, String url, String username, String password) {
assertEquals(this.driver, driver);
assertEquals(this.url + ";create=true", url);
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java
index b2bee85..fd96dcc 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java
@@ -21,6 +21,8 @@ package org.apache.karaf.main.lock;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
+import java.util.logging.Level;
+
import org.apache.felix.utils.properties.Properties;
import org.junit.Before;
@@ -54,6 +56,11 @@ public class DerbyJDBCLockTest extends BaseJDBCLockTest {
long getCurrentTimeMillis() {
return 1;
}
+
+ @Override
+ public void log(Level level, String msg, Exception e) {
+ // Suppress log
+ }
};
}
@@ -63,6 +70,11 @@ public class DerbyJDBCLockTest extends BaseJDBCLockTest {
lock = new DerbyJDBCLock(props) {
@Override
+ boolean schemaExists() {
+ return true;
+ }
+
+ @Override
Connection doCreateConnection(String driver, String url, String username, String password) {
assertEquals(this.driver, driver);
assertEquals(this.url + ";create=true", url);
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java
index c49d71d..f9daad1 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java
@@ -21,6 +21,8 @@ package org.apache.karaf.main.lock;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
+import java.util.logging.Level;
+
import org.apache.felix.utils.properties.Properties;
import org.junit.Before;
@@ -54,6 +56,11 @@ public class MySQLJDBCLockTest extends BaseJDBCLockTest {
long getCurrentTimeMillis() {
return 1;
}
+
+ @Override
+ public void log(Level level, String msg, Exception e) {
+ // Suppress log
+ }
};
}
@@ -63,6 +70,11 @@ public class MySQLJDBCLockTest extends BaseJDBCLockTest {
lock = new MySQLJDBCLock(props) {
@Override
+ boolean schemaExists() {
+ return true;
+ }
+
+ @Override
Connection doCreateConnection(String driver, String url, String username, String password) {
assertEquals(this.driver, driver);
assertEquals(this.url + "&createDatabaseIfNotExist=true", url);
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java
index 30b2400..1209464 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java
@@ -26,6 +26,8 @@ import static org.junit.Assert.*;
import java.sql.Connection;
import java.sql.SQLException;
+import java.util.logging.Level;
+
import org.apache.felix.utils.properties.Properties;
import org.junit.Before;
@@ -60,6 +62,11 @@ public class OracleJDBCLockTest extends BaseJDBCLockTest {
long getCurrentTimeMillis() {
return 1;
}
+
+ @Override
+ public void log(Level level, String msg, Exception e) {
+ // Suppress log
+ }
};
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/79a8da42/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java
index 6d4121f..079c7f1 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java
@@ -23,6 +23,8 @@ import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;
+import java.util.logging.Level;
+
import org.apache.felix.utils.properties.Properties;
import static org.easymock.EasyMock.*;
@@ -58,6 +60,11 @@ public class PostgreSQLJDBCLockTest extends BaseJDBCLockTest {
long getCurrentTimeMillis() {
return 1;
}
+
+ @Override
+ public void log(Level level, String msg, Exception e) {
+ // Suppress log
+ }
};
}
@@ -67,6 +74,11 @@ public class PostgreSQLJDBCLockTest extends BaseJDBCLockTest {
lock = new PostgreSQLJDBCLock(props) {
@Override
+ boolean schemaExists() {
+ return true;
+ }
+
+ @Override
Connection doCreateConnection(String driver, String url, String username, String password) {
assertEquals(this.driver, driver);
assertEquals(this.url, url);