aboutsummaryrefslogtreecommitdiff
path: root/core-testkit/src/main/scala/xyz/driver/core/testkit/postgres/DockerPostgresDatabase.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2018-10-09 14:37:57 -0700
committerJakob Odersky <jakob@odersky.com>2018-10-09 16:19:39 -0700
commit46d7e38b4651caff2a7fb9dc9ee1aa398807db44 (patch)
tree8939ecc030442069e4938c5e59b53fa91e486c81 /core-testkit/src/main/scala/xyz/driver/core/testkit/postgres/DockerPostgresDatabase.scala
parentd858e1ca733407aeeb39d9d85edb26373443a9b9 (diff)
downloaddriver-core-46d7e38b4651caff2a7fb9dc9ee1aa398807db44.tar.gz
driver-core-46d7e38b4651caff2a7fb9dc9ee1aa398807db44.tar.bz2
driver-core-46d7e38b4651caff2a7fb9dc9ee1aa398807db44.zip
Add testkit modulev2.0.0-M2
Diffstat (limited to 'core-testkit/src/main/scala/xyz/driver/core/testkit/postgres/DockerPostgresDatabase.scala')
-rw-r--r--core-testkit/src/main/scala/xyz/driver/core/testkit/postgres/DockerPostgresDatabase.scala46
1 files changed, 46 insertions, 0 deletions
diff --git a/core-testkit/src/main/scala/xyz/driver/core/testkit/postgres/DockerPostgresDatabase.scala b/core-testkit/src/main/scala/xyz/driver/core/testkit/postgres/DockerPostgresDatabase.scala
new file mode 100644
index 0000000..41e6e0d
--- /dev/null
+++ b/core-testkit/src/main/scala/xyz/driver/core/testkit/postgres/DockerPostgresDatabase.scala
@@ -0,0 +1,46 @@
+package xyz.driver.core.testkit
+package postgres
+
+import xyz.driver.core.make
+
+trait DockerPostgresDatabase {
+ import com.spotify.docker.client._
+ import com.spotify.docker.client.messages._
+
+ lazy val dockerClient: DockerClient = DefaultDockerClient.fromEnv().build()
+
+ val postgresVersion: String = "9.6"
+
+ def setupDockerDatabase(
+ username: String = "postgres",
+ password: String = "postgres",
+ database: String = "postgres",
+ hostPort: Int = 15432): String = {
+ import collection.JavaConverters._
+
+ dockerClient.pull(s"postgres:$postgresVersion")
+
+ val portBindings: Map[String, List[PortBinding]] = Map("5432" -> List(PortBinding.of("0.0.0.0", hostPort)))
+ val portBindingsJava = portBindings.mapValues(_.asJava).asJava
+ val hostConfig = HostConfig.builder().portBindings(portBindingsJava).build()
+ val containerConfig =
+ ContainerConfig
+ .builder()
+ .hostConfig(hostConfig)
+ .image(s"postgres:$postgresVersion")
+ .exposedPorts("5432")
+ .env(
+ s"POSTGRES_USER=$username",
+ s"POSTGRES_DB=$database",
+ s"POSTGRES_PASSWORD=$password"
+ )
+ .build()
+
+ make(dockerClient.createContainer(containerConfig).id())(dockerClient.startContainer)
+ }
+
+ def killDockerDatabase(containerId: String): Unit = {
+ dockerClient.killContainer(containerId)
+ dockerClient.removeContainer(containerId)
+ }
+}