@Override
  protected void tearDown() throws Exception {
    // stop pool
    pool.stopPool();
    pool = null;

    // drop test databases
    DBUtils.dropDB(TEST_DB1_NAME);
    DBUtils.dropDB(TEST_DB2_NAME);

    // restore default database name
    otherDbUtils.setDbDatabaseName(null);
    defaultDbUtils.setDbDatabaseName(null);
    defaultDbUtils = otherDbUtils = null;

    super.tearDown();
  }
  @Override
  protected void setUp() throws Exception {
    super.setUp(DEFAULT, TEST_CUSTOMER);

    // get pool instance
    pool = ConnectionPool.getInstance();

    // Set up test database names
    defaultDbUtils = DBConnectionUtils.getInstance(DEFAULT);
    otherDbUtils = DBConnectionUtils.getInstance(OTHER_APP_NAME);

    TEST_DB1_NAME = defaultDbUtils.getDbDatabaseName() + TEST_DB1_SUFFIX;
    TEST_DB2_NAME = otherDbUtils.getDbDatabaseName() + TEST_DB2_SUFFIX;

    defaultDbUtils.setDbDatabaseName(TEST_DB1_NAME);
    otherDbUtils.setDbDatabaseName(TEST_DB2_NAME);

    // drop test databases (if they exist)
    DBUtils.dropDB(TEST_DB1_NAME);
    DBUtils.dropDB(TEST_DB2_NAME);

    // create test databases
    DBUtils.createDB(TEST_DB1_NAME);
    DBUtils.createDB(TEST_DB2_NAME);
  }