Skip to content

Commit

Permalink
Unify Dev Services datasource names
Browse files Browse the repository at this point in the history
  • Loading branch information
newur committed May 5, 2022
1 parent 5deb51e commit 137fb26
Show file tree
Hide file tree
Showing 11 changed files with 71 additions and 28 deletions.
Expand Up @@ -16,6 +16,7 @@
import io.agroal.api.AgroalDataSource;
import io.agroal.api.configuration.AgroalConnectionPoolConfiguration;
import io.agroal.api.configuration.AgroalConnectionPoolConfiguration.ExceptionSorter;
import io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig;
import io.quarkus.test.QuarkusUnitTest;

public class DevServicesH2DatasourceTestCase {
Expand All @@ -40,7 +41,8 @@ public class DevServicesH2DatasourceTestCase {
public void testDatasource() throws Exception {
AgroalConnectionPoolConfiguration configuration = dataSource.getConfiguration().connectionPoolConfiguration();
assertTrue(configuration.connectionFactoryConfiguration().jdbcUrl().contains("jdbc:h2:"));
assertEquals("sa", configuration.connectionFactoryConfiguration().principal().getName());
assertEquals(DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME,
configuration.connectionFactoryConfiguration().principal().getName());
assertEquals(20, configuration.maxSize());
assertThat(configuration.exceptionSorter()).isInstanceOf(ExceptionSorter.emptyExceptionSorter().getClass());

Expand Down
Expand Up @@ -13,6 +13,7 @@

import io.agroal.api.AgroalDataSource;
import io.quarkus.agroal.DataSource;
import io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig;
import io.quarkus.test.QuarkusUnitTest;

public class MultipleDevServicesDataSourcesConfigTest {
Expand All @@ -38,12 +39,16 @@ public class MultipleDevServicesDataSourcesConfigTest {

@Test
public void testDataSourceInjection() throws SQLException {
testDataSource("default", defaultDataSource,
"jdbc:h2:tcp://localhost:" + extractPort(defaultDataSource) + "/mem:default;DB_CLOSE_DELAY=-1", "sa", 20);
testDataSource(DatabaseDefaultSetupConfig.DEFAULT_DATABASE_NAME, defaultDataSource,
"jdbc:h2:tcp://localhost:" + extractPort(defaultDataSource) + "/mem:"
+ DatabaseDefaultSetupConfig.DEFAULT_DATABASE_NAME + ";DB_CLOSE_DELAY=-1",
DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME, 20);
testDataSource("users", dataSource1,
"jdbc:h2:tcp://localhost:" + extractPort(dataSource1) + "/mem:users;DB_CLOSE_DELAY=-1", "sa", 20);
"jdbc:h2:tcp://localhost:" + extractPort(dataSource1) + "/mem:users;DB_CLOSE_DELAY=-1",
DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME, 20);
testDataSource("inventory", dataSource2,
"jdbc:h2:tcp://localhost:" + extractPort(dataSource2) + "/mem:inventory;DB_CLOSE_DELAY=-1", "sa", 20);
"jdbc:h2:tcp://localhost:" + extractPort(dataSource2) + "/mem:inventory;DB_CLOSE_DELAY=-1",
DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME, 20);
}

public int extractPort(AgroalDataSource ds) {
Expand Down
@@ -0,0 +1,13 @@
package io.quarkus.datasource.deployment.spi;

public final class DatabaseDefaultSetupConfig {

private DatabaseDefaultSetupConfig() {
}

public static final String DEFAULT_DATABASE_USERNAME = "quarkus";

// mssql container enforces a 'strong' password with min 8 chars, upper/lowercase, number or special char
public static final String DEFAULT_DATABASE_PASSWORD = "qu@rkus1";
public static final String DEFAULT_DATABASE_NAME = "quarkus";
}
@@ -1,5 +1,9 @@
package io.quarkus.devservices.db2.deployment;

import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_NAME;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_PASSWORD;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME;

import java.io.Closeable;
import java.io.IOException;
import java.time.Duration;
Expand Down Expand Up @@ -36,9 +40,9 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
QuarkusDb2Container container = new QuarkusDb2Container(imageName, fixedExposedPort,
!devServicesSharedNetworkBuildItem.isEmpty());
startupTimeout.ifPresent(container::withStartupTimeout);
container.withPassword(password.orElse("quarkus"))
.withUsername(username.orElse("quarkus"))
.withDatabaseName(datasourceName.orElse("default"));
container.withUsername(username.orElse(DEFAULT_DATABASE_USERNAME))
.withPassword(password.orElse(DEFAULT_DATABASE_PASSWORD))
.withDatabaseName(datasourceName.orElse(DEFAULT_DATABASE_NAME));
additionalJdbcUrlProperties.forEach(container::withUrlParam);
container.start();

Expand Down
@@ -1,5 +1,9 @@
package io.quarkus.devservices.h2.deployment;

import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_NAME;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_PASSWORD;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME;

import java.io.Closeable;
import java.io.IOException;
import java.sql.Connection;
Expand Down Expand Up @@ -49,12 +53,12 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
LOG.info("Dev Services for H2 started.");

String connectionUrl = "jdbc:h2:tcp://localhost:" + tcpServer.getPort() + "/mem:"
+ datasourceName.orElse("default")
+ datasourceName.orElse(DEFAULT_DATABASE_NAME)
+ ";DB_CLOSE_DELAY=-1" + additionalArgs.toString();
return new RunningDevServicesDatasource(null,
connectionUrl,
"sa",
"sa",
DEFAULT_DATABASE_USERNAME,
DEFAULT_DATABASE_PASSWORD,
new Closeable() {
@Override
public void close() throws IOException {
Expand All @@ -64,8 +68,8 @@ public void close() throws IOException {
//make sure the DB is removed on close
try (Connection connection = DriverManager.getConnection(
connectionUrl,
"sa",
"sa")) {
DEFAULT_DATABASE_USERNAME,
DEFAULT_DATABASE_PASSWORD)) {
try (Statement statement = connection.createStatement()) {
statement.execute("SET DB_CLOSE_DELAY 0");
}
Expand Down
@@ -1,5 +1,9 @@
package io.quarkus.devservices.mariadb.deployment;

import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_NAME;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_PASSWORD;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME;

import java.io.Closeable;
import java.io.IOException;
import java.time.Duration;
Expand Down Expand Up @@ -39,9 +43,9 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
QuarkusMariaDBContainer container = new QuarkusMariaDBContainer(imageName, fixedExposedPort,
!devServicesSharedNetworkBuildItem.isEmpty());
startupTimeout.ifPresent(container::withStartupTimeout);
container.withPassword(password.orElse("quarkus"))
.withUsername(username.orElse("quarkus"))
.withDatabaseName(datasourceName.orElse("default"));
container.withUsername(username.orElse(DEFAULT_DATABASE_USERNAME))
.withPassword(password.orElse(DEFAULT_DATABASE_PASSWORD))
.withDatabaseName(datasourceName.orElse(DEFAULT_DATABASE_NAME));

if (containerProperties.containsKey(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME)) {
container.withConfigurationOverride(containerProperties.get(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME));
Expand Down
@@ -1,5 +1,7 @@
package io.quarkus.devservices.mssql.deployment;

import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_PASSWORD;

import java.io.Closeable;
import java.io.IOException;
import java.time.Duration;
Expand Down Expand Up @@ -36,7 +38,7 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
QuarkusMSSQLServerContainer container = new QuarkusMSSQLServerContainer(imageName, fixedExposedPort,
!devServicesSharedNetworkBuildItem.isEmpty());
startupTimeout.ifPresent(container::withStartupTimeout);
container.withPassword(password.orElse("Quarkuspassword1"));
container.withPassword(password.orElse(DEFAULT_DATABASE_PASSWORD));
additionalJdbcUrlProperties.forEach(container::withUrlParam);
container.start();

Expand Down
@@ -1,5 +1,9 @@
package io.quarkus.devservices.mysql.deployment;

import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_NAME;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_PASSWORD;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME;

import java.io.Closeable;
import java.io.IOException;
import java.time.Duration;
Expand Down Expand Up @@ -38,9 +42,9 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
QuarkusMySQLContainer container = new QuarkusMySQLContainer(imageName, fixedExposedPort,
!devServicesSharedNetworkBuildItem.isEmpty());
startupTimeout.ifPresent(container::withStartupTimeout);
container.withPassword(password.orElse("quarkus"))
.withUsername(username.orElse("quarkus"))
.withDatabaseName(datasourceName.orElse("default"));
container.withUsername(username.orElse(DEFAULT_DATABASE_USERNAME))
.withPassword(password.orElse(DEFAULT_DATABASE_PASSWORD))
.withDatabaseName(datasourceName.orElse(DEFAULT_DATABASE_NAME));

if (containerProperties.containsKey(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME)) {
container.withConfigurationOverride(containerProperties.get(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME));
Expand Down
@@ -1,5 +1,9 @@
package io.quarkus.devservices.oracle.deployment;

import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_NAME;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_PASSWORD;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME;

import java.io.Closeable;
import java.io.IOException;
import java.time.Duration;
Expand All @@ -25,9 +29,6 @@ public class OracleDevServicesProcessor {
private static final Logger LOG = Logger.getLogger(OracleDevServicesProcessor.class);

public static final String IMAGE = "gvenzl/oracle-xe";
public static final String DEFAULT_DATABASE_USER = "quarkus";
public static final String DEFAULT_DATABASE_PASSWORD = "quarkus";
public static final String DEFAULT_DATABASE_NAME = "quarkusdb";
public static final int PORT = 1521;

@BuildStep
Expand All @@ -42,7 +43,7 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
QuarkusOracleServerContainer container = new QuarkusOracleServerContainer(imageName, fixedExposedPort,
!devServicesSharedNetworkBuildItem.isEmpty());
startupTimeout.ifPresent(container::withStartupTimeout);
container.withUsername(username.orElse(DEFAULT_DATABASE_USER))
container.withUsername(username.orElse(DEFAULT_DATABASE_USERNAME))
.withPassword(password.orElse(DEFAULT_DATABASE_PASSWORD))
.withDatabaseName(datasourceName.orElse(DEFAULT_DATABASE_NAME));

Expand Down
@@ -1,5 +1,9 @@
package io.quarkus.devservices.postgresql.deployment;

import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_NAME;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_PASSWORD;
import static io.quarkus.datasource.deployment.spi.DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME;

import java.io.Closeable;
import java.io.IOException;
import java.time.Duration;
Expand Down Expand Up @@ -43,9 +47,9 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
QuarkusPostgreSQLContainer container = new QuarkusPostgreSQLContainer(imageName, fixedExposedPort,
!devServicesSharedNetworkBuildItem.isEmpty());
startupTimeout.ifPresent(container::withStartupTimeout);
container.withPassword(password.orElse("quarkus"))
.withUsername(username.orElse("quarkus"))
.withDatabaseName(datasourceName.orElse("default"));
container.withUsername(username.orElse(DEFAULT_DATABASE_USERNAME))
.withPassword(password.orElse(DEFAULT_DATABASE_PASSWORD))
.withDatabaseName(datasourceName.orElse(DEFAULT_DATABASE_NAME));
additionalJdbcUrlProperties.forEach(container::withUrlParam);

container.start();
Expand Down
Expand Up @@ -100,7 +100,7 @@ void sqlClient() {
assertEquals("h2", spans.get(1).getAttributes().get(DB_SYSTEM));
assertEquals("SELECT", spans.get(1).getAttributes().get(DB_OPERATION));
assertEquals("SELECT * FROM USERS", spans.get(1).getAttributes().get(DB_STATEMENT));
assertEquals("sa", spans.get(1).getAttributes().get(DB_USER));
assertEquals("quarkus", spans.get(1).getAttributes().get(DB_USER));
assertNotNull(spans.get(1).getAttributes().get(DB_CONNECTION_STRING));
//noinspection ConstantConditions
assertTrue(spans.get(1).getAttributes().get(DB_CONNECTION_STRING).startsWith("jdbc:h2:tcp://localhost"));
Expand Down

0 comments on commit 137fb26

Please sign in to comment.