-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathZooKeeperControllerSpec.scala
52 lines (42 loc) · 1.92 KB
/
ZooKeeperControllerSpec.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
package com.github.j5ik2o.dockerController
import com.github.j5ik2o.dockerController.WaitPredicates.WaitPredicate
import com.github.j5ik2o.dockerController.zooKeeper.ZooKeeperController
import org.apache.zookeeper.{ WatchedEvent, Watcher, ZooKeeper }
import org.scalatest.freespec.AnyFreeSpec
import org.apache.zookeeper.Watcher.Event.KeeperState
import java.util.concurrent.{ CountDownLatch, TimeUnit }
import scala.concurrent.duration._
class ZooKeeperControllerSpec extends AnyFreeSpec with DockerControllerSpecSupport {
val testTimeFactor: Int = sys.env.getOrElse("TEST_TIME_FACTOR", "1").toInt
logger.debug(s"testTimeFactor = $testTimeFactor")
lazy val hostPort: Int = temporaryServerPort()
lazy val zooKeeperController: ZooKeeperController = ZooKeeperController(dockerClient)(1, hostPort)
override protected val dockerControllers: Vector[DockerController] = Vector(zooKeeperController)
val waitPredicate: WaitPredicate =
WaitPredicates.forLogMessageByRegex(ZooKeeperController.RegexForWaitPredicate, Some((1 * testTimeFactor).seconds))
val waitPredicateSetting: WaitPredicateSetting = WaitPredicateSetting(Duration.Inf, waitPredicate)
override protected val waitPredicatesSettings: Map[DockerController, WaitPredicateSetting] =
Map(zooKeeperController -> waitPredicateSetting)
"ZooKeeperControllerSpec" - {
"run" in {
var zk: ZooKeeper = null
try {
val connectionLatch = new CountDownLatch(1)
zk = new ZooKeeper(
s"$dockerHost:$hostPort",
3000,
new Watcher {
override def process(event: WatchedEvent): Unit = {
logger.debug(s"event = $event")
if (event.getState == KeeperState.SyncConnected)
connectionLatch.countDown()
}
}
)
connectionLatch.await(10, TimeUnit.SECONDS)
} finally
if (zk != null)
zk.close()
}
}
}