} catch(Exception exc) {
                 LOGGER.warn("", exc);
             }
-            LOGGER.info("Thread DataSourceTester terminated {} for {}", this.getName(), ds.getDbConnectionName());
+            if(ds != null)
+                LOGGER.info("Thread DataSourceTester terminated {} for {}", this.getName(), ds.getDbConnectionName());
         }
 
     }
 
         return null;
     }
 
-    @Override
-    public long getInterval() {
-        return 1000;
-    }
-
-    @Override
-    public long getInitialDelay() {
-        return 1000;
-    }
-
-    @Override
-    public long getExpectedCompletionTime() {
-        return 50;
-    }
-
-    @Override
-    public void setExpectedCompletionTime(long value) {
-
-    }
-
-    @Override
-    public void setInterval(long value) {
-
-    }
-
-    @Override
-    public void setInitialDelay(long value) {
-
-    }
-
-    @Override
-    public long getUnprocessedFailoverThreshold() {
-        return 3;
-    }
-
-    @Override
-    public void setUnprocessedFailoverThreshold(long value) {
-
-    }
-
-    public int compareTo(CachedDataSource ods)
-    {
-        return 0;
-    }
-
     @Override
     public Logger getParentLogger() throws SQLFeatureNotSupportedException {
-        // TODO Auto-generated method stub
         return null;
     }
 
 
 
     public java.util.logging.Logger getParentLogger()
         throws SQLFeatureNotSupportedException {
-        // TODO Auto-generated method stub
         return null;
     }
 
 
--- /dev/null
+package org.onap.ccsdk.sli.core.dblib;
+
+import static org.junit.Assert.*;
+
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.Properties;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.ccsdk.sli.core.dblib.config.BaseDBConfiguration;
+import org.onap.ccsdk.sli.core.dblib.config.JDBCConfiguration;
+import org.onap.ccsdk.sli.core.dblib.jdbc.JdbcDBCachedDataSource;
+import org.slf4j.LoggerFactory;
+
+public class CachedDataSourceTest {
+
+    private static final Properties props = new Properties();
+
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+        props.setProperty("org.onap.ccsdk.sli.dbtype", "jdbc");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.hosts", "localhost");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.url", "jdbc:mysql://dbhost:3306/test");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.driver", "org.mariadb.jdbc.Driver");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.database", "test");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.user", "dbuser");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.password", "passw0rd");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.connection.name", "testdb01");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.connection.timeout", "50");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.request.timeout", "100");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.limit.init", "10");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.limit.min", "10");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.limit.max", "20");
+        props.setProperty("org.onap.dblib.connection.recovery", "false");
+    }
+
+    @Test
+    public void testCachedDataSource() {
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new JdbcDBCachedDataSource(config);
+        assertNotNull(ds);
+    }
+
+    @Test
+    public void testConfigure() {
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+
+        CachedDataSource ds = new JdbcDBCachedDataSource(config);
+        assertNotNull(ds.configure(config));
+    }
+
+    @Test
+    public void testSetInitialDelay() {
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new JdbcDBCachedDataSource(config);
+        ds.setInitialDelay(1000L);
+        assertTrue(ds.getInitialDelay() == 1000L);
+    }
+
+    @Test
+    public void testSetInterval() {
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new JdbcDBCachedDataSource(config);
+        ds.setInterval(1000L);
+        assertTrue(ds.getInterval() == 1000L);
+    }
+
+    @Test
+    public void testSetExpectedCompletionTime() {
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new JdbcDBCachedDataSource(config);
+        ds.setExpectedCompletionTime(100L);
+        assertTrue(ds.getExpectedCompletionTime() == 100L);
+    }
+
+    @Test
+    public void testSetUnprocessedFailoverThreshold() {
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new JdbcDBCachedDataSource(config);
+        ds.setUnprocessedFailoverThreshold(100L);
+        assertTrue(ds.getUnprocessedFailoverThreshold() == 100L);
+    }
+
+    @Test
+    public void testGetParentLogger() {
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new JdbcDBCachedDataSource(config);
+        try {
+            assertNull(ds.getParentLogger());
+        } catch (SQLFeatureNotSupportedException e) {
+            LoggerFactory.getLogger(CachedDataSourceTest.class).warn("Test Failure", e);
+        }
+    }
+}
\ No newline at end of file
 
--- /dev/null
+package org.onap.ccsdk.sli.core.dblib;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+public class DBConfigExceptionTest {
+
+    @Test
+    public void testDBConfigExceptionException() {
+        assertNotNull(new DBConfigException("JUnit Test"));
+    }
+
+    @Test
+    public void testDBConfigExceptionString() {
+        assertNotNull(new DBConfigException(new Exception("JUnit Test")));
+    }
+
+}
 
--- /dev/null
+package org.onap.ccsdk.sli.core.dblib;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class DblibConfigurationExceptionTest {
+
+    @Test
+    public void testDblibConfigurationException() {
+        assertNotNull(new DblibConfigurationException());
+    }
+
+    @Test
+    public void testDblibConfigurationExceptionString() {
+        assertNotNull(new DblibConfigurationException("JUnit Test"));
+    }
+
+    @Test
+    public void testDblibConfigurationExceptionStringThrowable() {
+        assertNotNull(new DblibConfigurationException("JUnit Test", new Exception("JUnit Test")));
+    }
+
+}
 
--- /dev/null
+package org.onap.ccsdk.sli.core.dblib;
+
+import static org.junit.Assert.*;
+
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.Properties;
+
+import org.junit.Test;
+import org.onap.ccsdk.sli.core.dblib.config.BaseDBConfiguration;
+import org.onap.ccsdk.sli.core.dblib.config.JDBCConfiguration;
+import org.slf4j.LoggerFactory;
+
+public class TerminatingCachedDataSourceTest {
+
+    @Test
+    public void testTerminatingCachedDataSource() {
+        Properties props = new Properties();
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new TerminatingCachedDataSource(config);
+        assertNotNull(ds);
+    }
+
+    @Test
+    public void testConfigure() {
+        Properties props = new Properties();
+        props.setProperty("org.onap.ccsdk.sli.dbtype", "jdbc");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.hosts", "localhost");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.url", "jdbc:mysql://dbhost:3306/test");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.driver", "org.mariadb.jdbc.Driver");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.database", "test");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.user", "dbuser");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.password", "passw0rd");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.connection.name", "testdb01");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.connection.timeout", "50");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.request.timeout", "100");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.limit.init", "10");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.limit.min", "10");
+        props.setProperty("org.onap.ccsdk.sli.jdbc.limit.max", "20");
+        props.setProperty("org.onap.dblib.connection.recovery", "false");
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+
+        CachedDataSource ds = new TerminatingCachedDataSource(config);
+        assertNull(ds.configure(config));
+    }
+
+    @Test
+    public void testSetInitialDelay() {
+        Properties props = new Properties();
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new TerminatingCachedDataSource(config);
+        ds.setInitialDelay(1000L);
+        assertTrue(ds.getInitialDelay() == 1000L);
+    }
+
+    @Test
+    public void testSetInterval() {
+        Properties props = new Properties();
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new TerminatingCachedDataSource(config);
+        ds.setInterval(1000L);
+        assertTrue(ds.getInterval() == 1000L);
+    }
+
+    @Test
+    public void testSetExpectedCompletionTime() {
+        Properties props = new Properties();
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new TerminatingCachedDataSource(config);
+        ds.setExpectedCompletionTime(100L);
+        assertTrue(ds.getExpectedCompletionTime() == 100L);
+    }
+
+    @Test
+    public void testSetUnprocessedFailoverThreshold() {
+        Properties props = new Properties();
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new TerminatingCachedDataSource(config);
+        ds.setUnprocessedFailoverThreshold(100L);
+        assertTrue(ds.getUnprocessedFailoverThreshold() == 100L);
+    }
+
+    @Test
+    public void testGetParentLogger() {
+        Properties props = new Properties();
+        BaseDBConfiguration config = new JDBCConfiguration(props);
+        CachedDataSource ds = new TerminatingCachedDataSource(config);
+        ds.setInterval(100L);
+        try {
+            assertNull(ds.getParentLogger());
+        } catch (SQLFeatureNotSupportedException e) {
+            LoggerFactory.getLogger(TerminatingCachedDataSourceTest.class).warn("Test Failure", e);
+        }
+    }
+}
\ No newline at end of file