-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
OracleContainer.java
110 lines (86 loc) · 2.9 KB
/
OracleContainer.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package org.testcontainers.containers;
import org.testcontainers.utility.TestcontainersConfiguration;
import java.util.concurrent.Future;
/**
* @author gusohal
*/
public class OracleContainer extends JdbcDatabaseContainer<OracleContainer> {
public static final String NAME = "oracle";
private static final int ORACLE_PORT = 1521;
private static final int APEX_HTTP_PORT = 8080;
private static final int DEFAULT_STARTUP_TIMEOUT_SECONDS = 240;
private static final int DEFAULT_CONNECT_TIMEOUT_SECONDS = 120;
private String username = "system";
private String password = "oracle";
private static String resolveImageName() {
String image = TestcontainersConfiguration.getInstance()
.getProperties().getProperty("oracle.container.image");
if (image == null) {
throw new IllegalStateException("An image to use for Oracle containers must be configured. " +
"To do this, please place a file on the classpath named `testcontainers.properties`, " +
"containing `oracle.container.image=IMAGE`, where IMAGE is a suitable image name and tag.");
}
return image;
}
public OracleContainer() {
this(resolveImageName());
}
public OracleContainer(String dockerImageName) {
super(dockerImageName);
preconfigure();
}
public OracleContainer(Future<String> dockerImageName) {
super(dockerImageName);
preconfigure();
}
private void preconfigure() {
withStartupTimeoutSeconds(DEFAULT_STARTUP_TIMEOUT_SECONDS);
withConnectTimeoutSeconds(DEFAULT_CONNECT_TIMEOUT_SECONDS);
addExposedPorts(ORACLE_PORT, APEX_HTTP_PORT);
}
@Override
protected Integer getLivenessCheckPort() {
return getMappedPort(ORACLE_PORT);
}
@Override
public String getDriverClassName() {
return "oracle.jdbc.OracleDriver";
}
@Override
public String getJdbcUrl() {
return "jdbc:oracle:thin:" + getUsername() + "/" + getPassword() + "@" + getHost() + ":" + getOraclePort() + ":" + getSid();
}
@Override
public String getUsername() {
return username;
}
@Override
public String getPassword() {
return password;
}
@Override
public OracleContainer withUsername(String username) {
this.username = username;
return self();
}
@Override
public OracleContainer withPassword(String password) {
this.password = password;
return self();
}
@SuppressWarnings("SameReturnValue")
public String getSid() {
return "xe";
}
public Integer getOraclePort() {
return getMappedPort(ORACLE_PORT);
}
@SuppressWarnings("unused")
public Integer getWebPort() {
return getMappedPort(APEX_HTTP_PORT);
}
@Override
public String getTestQueryString() {
return "SELECT 1 FROM DUAL";
}
}