aboutsummaryrefslogtreecommitdiff
path: root/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala
diff options
context:
space:
mode:
Diffstat (limited to 'external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala')
-rw-r--r--external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala20
1 files changed, 18 insertions, 2 deletions
diff --git a/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala b/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala
index f73231fc80..c36f4d5f95 100644
--- a/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala
+++ b/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala
@@ -45,6 +45,11 @@ abstract class DatabaseOnDocker {
val env: Map[String, String]
/**
+ * Wheather or not to use ipc mode for shared memory when starting docker image
+ */
+ val usesIpc: Boolean
+
+ /**
* The container-internal JDBC port that the database listens on.
*/
val jdbcPort: Int
@@ -53,6 +58,11 @@ abstract class DatabaseOnDocker {
* Return a JDBC URL that connects to the database running at the given IP address and port.
*/
def getJdbcUrl(ip: String, port: Int): String
+
+ /**
+ * Optional process to run when container starts
+ */
+ def getStartupProcessName: Option[String]
}
abstract class DockerJDBCIntegrationSuite
@@ -97,17 +107,23 @@ abstract class DockerJDBCIntegrationSuite
val dockerIp = DockerUtils.getDockerIp()
val hostConfig: HostConfig = HostConfig.builder()
.networkMode("bridge")
+ .ipcMode(if (db.usesIpc) "host" else "")
.portBindings(
Map(s"${db.jdbcPort}/tcp" -> List(PortBinding.of(dockerIp, externalPort)).asJava).asJava)
.build()
// Create the database container:
- val config = ContainerConfig.builder()
+ val containerConfigBuilder = ContainerConfig.builder()
.image(db.imageName)
.networkDisabled(false)
.env(db.env.map { case (k, v) => s"$k=$v" }.toSeq.asJava)
.hostConfig(hostConfig)
.exposedPorts(s"${db.jdbcPort}/tcp")
- .build()
+ if(db.getStartupProcessName.isDefined) {
+ containerConfigBuilder
+ .cmd(db.getStartupProcessName.get)
+ }
+ val config = containerConfigBuilder.build()
+ // Create the database container:
containerId = docker.createContainer(config).id
// Start the container and wait until the database can accept JDBC connections:
docker.startContainer(containerId)