-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
MultipleDevServicesDataSourcesConfigTest.java
60 lines (48 loc) · 2.3 KB
/
MultipleDevServicesDataSourcesConfigTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package io.quarkus.agroal.test;
import static io.quarkus.agroal.test.MultipleDataSourcesTestUtil.testDataSource;
import java.sql.SQLException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.inject.Inject;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
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 {
//tag::injection[]
@Inject
AgroalDataSource defaultDataSource;
@Inject
@DataSource("users")
AgroalDataSource dataSource1;
@Inject
@DataSource("inventory")
AgroalDataSource dataSource2;
//end::injection[]
@RegisterExtension
static final QuarkusUnitTest config = new QuarkusUnitTest()
.withApplicationRoot((jar) -> jar
.addClass(MultipleDataSourcesTestUtil.class))
.withConfigurationResource("application-multiple-devservices-datasources.properties");
@Test
public void testDataSourceInjection() throws SQLException {
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",
DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME, 20);
testDataSource("inventory", dataSource2,
"jdbc:h2:tcp://localhost:" + extractPort(dataSource2) + "/mem:inventory;DB_CLOSE_DELAY=-1",
DatabaseDefaultSetupConfig.DEFAULT_DATABASE_USERNAME, 20);
}
public int extractPort(AgroalDataSource ds) {
String url = ds.getConfiguration().connectionPoolConfiguration().connectionFactoryConfiguration().jdbcUrl();
Matcher matcher = Pattern.compile("jdbc:h2:tcp://localhost:(\\d+)/").matcher(url);
matcher.find();
return Integer.parseInt(matcher.group(1));
}
}