private static DataSource createDataSource(final String name,
                                               final boolean unique,
                                               final AbstractDbConfig testDbConfig) {
        // Get a data source from a map to limit connections where connection details are common.
        LOGGER.debug("Creating datasource for name: {}, unique: {}, testDbConfig: {}", name, unique, testDbConfig);
        final DataSourceKey dataSourceKey = new DataSourceKey(testDbConfig, name, unique);
        return DATA_SOURCE_MAP.computeIfAbsent(dataSourceKey, k -> {
            LOGGER.debug("Creating new HikariConfig for name: {}", name);
            final HikariConfig hikariConfig = HikariUtil.createConfig(
                    k.getConfig(), null, null, null);
            return new HikariDataSource(hikariConfig);
        });
    }
@param dbConfig         The config to use
@param name             The name of the datasource, i.e. the module name
@param unique           True if we want our own dedicated connection pool
@param isSharedDatabase True if we want to re-use the DB between tests. We normally do
                        to save on the cost of running migrations, but not for
                        migration tests as for those we want a blank db.
stroom-test-common/src/main/java/stroom/test/common/util/db/DbTestUtil.java