/
BaseIntegrationTest.scala
55 lines (43 loc) · 1.57 KB
/
BaseIntegrationTest.scala
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
package com.exasol.spark
import com.exasol.containers.ExasolContainer
import com.exasol.spark.util.ExasolConfiguration
import com.exasol.spark.util.ExasolConnectionManager
import org.scalatest.BeforeAndAfterAll
import org.scalatest.funsuite.AnyFunSuite
/**
* A base integration suite with Exasol docker container setup.
*/
trait BaseIntegrationTest extends AnyFunSuite with BeforeAndAfterAll {
private[this] val DEFAULT_EXASOL_DOCKER_IMAGE = "7.0.6"
val network = DockerNamedNetwork("spark-it-network", true)
val container = {
val c: ExasolContainer[_] = new ExasolContainerWithReuse(getExasolDockerImageVersion())
c.withExposedPorts(8563)
c.withNetwork(network)
c
}
var jdbcHost: String = _
var jdbcPort: String = _
var exasolConnectionManager: ExasolConnectionManager = _
def prepareExasolDatabase(): Unit = {
container.start()
jdbcHost = container.getDockerNetworkInternalIpAddress()
jdbcPort = s"${container.getDefaultInternalDatabasePort()}"
exasolConnectionManager = ExasolConnectionManager(ExasolConfiguration(getConfiguration()))
}
def getConfiguration(): Map[String, String] = Map(
"host" -> jdbcHost,
"port" -> jdbcPort,
"username" -> container.getUsername(),
"password" -> container.getPassword(),
"max_nodes" -> "200"
)
override def beforeAll(): Unit =
prepareExasolDatabase()
override def afterAll(): Unit = {
container.stop()
network.close()
}
private[this] def getExasolDockerImageVersion(): String =
System.getProperty("EXASOL_DOCKER_VERSION", DEFAULT_EXASOL_DOCKER_IMAGE)
}