Skip to content

Commit 81b13b2

Browse files
committed
OAK-11416: Docker support for oak-jcr tests with RdbDocumentStore needs a way to specify environment variables for the container
Implemented.
1 parent e1f0a13 commit 81b13b2

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RdbConnectionUtils.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@
3131
import java.sql.SQLException;
3232
import java.time.Duration;
3333
import java.time.Instant;
34+
import java.util.Collections;
35+
import java.util.HashMap;
36+
import java.util.List;
37+
import java.util.Map;
38+
import java.util.StringTokenizer;
3439
import java.util.concurrent.TimeUnit;
3540
import java.util.concurrent.TimeoutException;
3641
import java.util.regex.Matcher;
@@ -44,6 +49,7 @@ public class RdbConnectionUtils {
4449
public static final String USERNAME = System.getProperty("rdb.jdbc-user", "sa");
4550
public static final String PASSWD = System.getProperty("rdb.jdbc-passwd", "");
4651
public static final String IMG = System.getProperty("rdb.docker-image", "");
52+
public static final Map<String, String> ENV = parseDockerEnv(System.getProperty("rdb.docker-env", ""));
4753

4854
private static final boolean RDB_AVAILABLE;
4955
private static GenericContainer<?> rdbContainer;
@@ -67,6 +73,7 @@ public class RdbConnectionUtils {
6773
if (RDB_AVAILABLE) {
6874
rdbContainer = new GenericContainer<>(DockerImageName.parse(IMG))
6975
.withPrivilegedMode(true)
76+
.withEnv(ENV)
7077
.withExposedPorts(exposedPort)
7178
.withStartupTimeout(Duration.ofMinutes(15));
7279
try {
@@ -148,4 +155,22 @@ private static boolean checkImageAvailability() throws TimeoutException {
148155
private static boolean checkDockerAvailability() {
149156
return DockerClientFactory.instance().isDockerAvailable();
150157
}
158+
159+
private static Map<String, String> parseDockerEnv(String raw) {
160+
if (StringUtils.isEmpty(raw)) {
161+
return Collections.emptyMap();
162+
}
163+
Map<String, String> result = new HashMap<>();
164+
StringTokenizer envTokenizer = new StringTokenizer(raw, ",");
165+
while (envTokenizer.hasMoreTokens()) {
166+
String token = envTokenizer.nextToken().trim();
167+
StringTokenizer varTokenizer = new StringTokenizer(token, "=");
168+
if (varTokenizer.countTokens() == 2) {
169+
result.put(varTokenizer.nextToken(), varTokenizer.nextToken());
170+
} else {
171+
LOG.warn("Ignoring unexpected format of docker container environment variable: {}.", token);
172+
}
173+
}
174+
return result;
175+
}
151176
}

0 commit comments

Comments
 (0)