1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.api.docker
21 
22 import com.whisk.docker.{ContainerLink, DockerContainer, DockerReadyChecker}
23 import org.scalatest.Suite
24 
25 trait DockerKafkaService extends DockerZookeeperService {
26   self: Suite =>
27 
28   val kafkaInternalPort: Int = 9092
29   private val defaultKafkaExposedPort: Int = 29092
30   def kafkaExposedPort: Int = defaultKafkaExposedPort
31   def kafkaName: String = "kafka"
32   def brokerId: Int = 1
33 
34   val registryInternalPort: Int = 8081
35   private val defaultRegistryExposedPort: Int = 28081
36   def registryExposedPort: Int = defaultRegistryExposedPort
37   def registryName: String = "registry"
38 
39   protected def kafkaContainer: DockerContainer =
40     DockerContainer(s"confluentinc/cp-kafka:${ConfluentPlatformTest.confluentVersion}", name = Some(kafkaName))
41       .withEnv(
42         s"KAFKA_ZOOKEEPER_CONNECT=$zookeeperName:$zookeeperInternalPort/kafka",
43         s"KAFKA_ADVERTISED_LISTENERS=EXTERNAL://127.0.0.1:$kafkaExposedPort,INTERNAL://$kafkaName:$kafkaInternalPort",
44         s"KAFKA_LISTENERS=INTERNAL://0.0.0.0:$kafkaInternalPort,EXTERNAL://0.0.0.0:$kafkaExposedPort",
45         "KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT",
46         s"KAFKA_BROKER_ID=$brokerId",
47         "KAFKA_INTER_BROKER_LISTENER_NAME=INTERNAL",
48         "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1"
49       )
50       .withHostname(kafkaName)
51       .withLinks(ContainerLink(zookeeperContainer, zookeeperName))
52       .withPorts(kafkaExposedPort -> Some(kafkaExposedPort))
53       .withReadyChecker(DockerReadyChecker.LogLineContains("started (kafka.server.KafkaServer)"))
54 
55   protected def avroRegistryContainer: DockerContainer =
56     DockerContainer(
57       s"confluentinc/cp-schema-registry:${ConfluentPlatformTest.confluentVersion}",
58       name = Some(registryName)
59     ).withEnv(
60         s"SCHEMA_REGISTRY_HOST_NAME=$registryName",
61         s"SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS=PLAINTEXT://$kafkaName:$kafkaInternalPort",
62         "SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL=PLAINTEXT",
63         s"SCHEMA_REGISTRY_LISTENERS=http://$registryName:$registryInternalPort"
64       )
65       .withHostname(registryName)
66       .withPorts(registryInternalPort -> Some(registryExposedPort))
67       .withLinks(ContainerLink(kafkaContainer, kafkaName))
68       .withReadyChecker(DockerReadyChecker.LogLineContains("Server started, listening for requests..."))
69 
70   abstract override def dockerContainers: List[DockerContainer] =
71     avroRegistryContainer :: kafkaContainer :: super.dockerContainers
72 }
Line Stmt Id Pos Tree Symbol Tests Code
28 22032 986 - 990 Literal <nosymbol> 9092
29 22190 1036 - 1041 Literal <nosymbol> 29092
30 22093 1072 - 1095 Select org.make.api.docker.DockerKafkaService.defaultKafkaExposedPort DockerKafkaService.this.defaultKafkaExposedPort
31 22250 1122 - 1129 Literal <nosymbol> "kafka"
32 22211 1152 - 1153 Literal <nosymbol> 1
34 22101 1189 - 1193 Literal <nosymbol> 8081
35 22017 1242 - 1247 Literal <nosymbol> 28081
36 22175 1281 - 1307 Select org.make.api.docker.DockerKafkaService.defaultRegistryExposedPort DockerKafkaService.this.defaultRegistryExposedPort
37 22076 1337 - 1347 Literal <nosymbol> "registry"
40 22100 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$15 com.whisk.docker.DockerContainer.apply$default$15
40 22166 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$8 com.whisk.docker.DockerContainer.apply$default$8
40 22013 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$16 com.whisk.docker.DockerContainer.apply$default$16
40 22094 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$3 com.whisk.docker.DockerContainer.apply$default$3
40 22034 1499 - 1508 Select org.make.api.docker.DockerKafkaService.kafkaName DockerKafkaService.this.kafkaName
40 22186 1494 - 1509 Apply scala.Some.apply scala.Some.apply[String](DockerKafkaService.this.kafkaName)
40 22168 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$17 com.whisk.docker.DockerContainer.apply$default$17
40 22102 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$6 com.whisk.docker.DockerContainer.apply$default$6
40 22248 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$4 com.whisk.docker.DockerContainer.apply$default$4
40 22245 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$13 com.whisk.docker.DockerContainer.apply$default$13
40 22155 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$14 com.whisk.docker.DockerContainer.apply$default$14
40 22095 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$12 com.whisk.docker.DockerContainer.apply$default$12
40 22011 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$7 com.whisk.docker.DockerContainer.apply$default$7
40 22074 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$9 com.whisk.docker.DockerContainer.apply$default$9
40 22029 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$10 com.whisk.docker.DockerContainer.apply$default$10
40 22187 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$11 com.whisk.docker.DockerContainer.apply$default$11
40 22205 1403 - 1403 Select com.whisk.docker.DockerContainer.apply$default$5 com.whisk.docker.DockerContainer.apply$default$5
45 22072 1837 - 1913 Literal <nosymbol> "KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT"
47 22033 1961 - 2004 Literal <nosymbol> "KAFKA_INTER_BROKER_LISTENER_NAME=INTERNAL"
48 22182 2014 - 2056 Literal <nosymbol> "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1"
50 22097 2085 - 2094 Select org.make.api.docker.DockerKafkaService.kafkaName DockerKafkaService.this.kafkaName
51 22246 2127 - 2145 Select org.make.api.docker.DockerZookeeperService.zookeeperContainer DockerKafkaService.this.zookeeperContainer
51 22114 2113 - 2161 Apply com.whisk.docker.ContainerLink.apply com.whisk.docker.ContainerLink.apply(DockerKafkaService.this.zookeeperContainer, DockerKafkaService.this.zookeeperName)
51 22152 2147 - 2160 Select org.make.api.docker.DockerZookeeperService.zookeeperName DockerKafkaService.this.zookeeperName
52 22073 2200 - 2222 Apply scala.Some.apply scala.Some.apply[Int](DockerKafkaService.this.kafkaExposedPort)
52 22028 2180 - 2222 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[Int](DockerKafkaService.this.kafkaExposedPort).->[Some[Int]](scala.Some.apply[Int](DockerKafkaService.this.kafkaExposedPort))
52 22014 2180 - 2196 Select org.make.api.docker.DockerKafkaService.kafkaExposedPort DockerKafkaService.this.kafkaExposedPort
52 22178 2205 - 2221 Select org.make.api.docker.DockerKafkaService.kafkaExposedPort DockerKafkaService.this.kafkaExposedPort
53 22195 2248 - 2320 Apply com.whisk.docker.DockerReadyChecker.LogLineContains.apply com.whisk.docker.DockerReadyChecker.LogLineContains.apply("started (kafka.server.KafkaServer)")
53 22098 1403 - 2321 Apply com.whisk.docker.DockerContainer.withReadyChecker com.whisk.docker.DockerContainer.apply(("confluentinc/cp-kafka:".+(ConfluentPlatformTest.confluentVersion): String), scala.Some.apply[String](DockerKafkaService.this.kafkaName), com.whisk.docker.DockerContainer.apply$default$3, com.whisk.docker.DockerContainer.apply$default$4, com.whisk.docker.DockerContainer.apply$default$5, com.whisk.docker.DockerContainer.apply$default$6, com.whisk.docker.DockerContainer.apply$default$7, com.whisk.docker.DockerContainer.apply$default$8, com.whisk.docker.DockerContainer.apply$default$9, com.whisk.docker.DockerContainer.apply$default$10, com.whisk.docker.DockerContainer.apply$default$11, com.whisk.docker.DockerContainer.apply$default$12, com.whisk.docker.DockerContainer.apply$default$13, com.whisk.docker.DockerContainer.apply$default$14, com.whisk.docker.DockerContainer.apply$default$15, com.whisk.docker.DockerContainer.apply$default$16, com.whisk.docker.DockerContainer.apply$default$17).withEnv(("KAFKA_ZOOKEEPER_CONNECT=".+(DockerKafkaService.this.zookeeperName).+(":").+(DockerKafkaService.this.zookeeperInternalPort).+("/kafka"): String), ("KAFKA_ADVERTISED_LISTENERS=EXTERNAL://127.0.0.1:".+(DockerKafkaService.this.kafkaExposedPort).+(",INTERNAL://").+(DockerKafkaService.this.kafkaName).+(":").+(DockerKafkaService.this.kafkaInternalPort): String), ("KAFKA_LISTENERS=INTERNAL://0.0.0.0:".+(DockerKafkaService.this.kafkaInternalPort).+(",EXTERNAL://0.0.0.0:").+(DockerKafkaService.this.kafkaExposedPort): String), "KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT", ("KAFKA_BROKER_ID=".+(DockerKafkaService.this.brokerId): String), "KAFKA_INTER_BROKER_LISTENER_NAME=INTERNAL", "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1").withHostname(DockerKafkaService.this.kafkaName).withLinks(com.whisk.docker.ContainerLink.apply(DockerKafkaService.this.zookeeperContainer, DockerKafkaService.this.zookeeperName)).withPorts(scala.Predef.ArrowAssoc[Int](DockerKafkaService.this.kafkaExposedPort).->[Some[Int]](scala.Some.apply[Int](DockerKafkaService.this.kafkaExposedPort))).withReadyChecker(com.whisk.docker.DockerReadyChecker.LogLineContains.apply("started (kafka.server.KafkaServer)"))
56 22172 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$14 com.whisk.docker.DockerContainer.apply$default$14
56 22091 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$9 com.whisk.docker.DockerContainer.apply$default$9
56 22181 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$17 com.whisk.docker.DockerContainer.apply$default$17
56 22157 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$11 com.whisk.docker.DockerContainer.apply$default$11
56 22106 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$3 com.whisk.docker.DockerContainer.apply$default$3
56 22010 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$4 com.whisk.docker.DockerContainer.apply$default$4
56 22081 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$6 com.whisk.docker.DockerContainer.apply$default$6
56 22108 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$12 com.whisk.docker.DockerContainer.apply$default$12
56 22075 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$15 com.whisk.docker.DockerContainer.apply$default$15
56 22012 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$13 com.whisk.docker.DockerContainer.apply$default$13
56 22179 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$5 com.whisk.docker.DockerContainer.apply$default$5
56 22242 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$16 com.whisk.docker.DockerContainer.apply$default$16
56 22256 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$10 com.whisk.docker.DockerContainer.apply$default$10
56 22241 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$7 com.whisk.docker.DockerContainer.apply$default$7
56 22196 2384 - 2384 Select com.whisk.docker.DockerContainer.apply$default$8 com.whisk.docker.DockerContainer.apply$default$8
58 22159 2498 - 2516 Apply scala.Some.apply scala.Some.apply[String](DockerKafkaService.this.registryName)
58 22254 2503 - 2515 Select org.make.api.docker.DockerKafkaService.registryName DockerKafkaService.this.registryName
62 22092 2691 - 2747 Literal <nosymbol> "SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL=PLAINTEXT"
65 22249 2857 - 2869 Select org.make.api.docker.DockerKafkaService.registryName DockerKafkaService.this.registryName
66 22109 2917 - 2936 Select org.make.api.docker.DockerKafkaService.registryExposedPort DockerKafkaService.this.registryExposedPort
66 22006 2912 - 2937 Apply scala.Some.apply scala.Some.apply[Int](DockerKafkaService.this.registryExposedPort)
66 22173 2888 - 2937 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[Int](DockerKafkaService.this.registryInternalPort).->[Some[Int]](scala.Some.apply[Int](DockerKafkaService.this.registryExposedPort))
66 22158 2888 - 2908 Select org.make.api.docker.DockerKafkaService.registryInternalPort DockerKafkaService.this.registryInternalPort
67 22079 2970 - 2984 Select org.make.api.docker.DockerKafkaService.kafkaContainer DockerKafkaService.this.kafkaContainer
67 22183 2956 - 2996 Apply com.whisk.docker.ContainerLink.apply com.whisk.docker.ContainerLink.apply(DockerKafkaService.this.kafkaContainer, DockerKafkaService.this.kafkaName)
67 22240 2986 - 2995 Select org.make.api.docker.DockerKafkaService.kafkaName DockerKafkaService.this.kafkaName
68 22086 3022 - 3101 Apply com.whisk.docker.DockerReadyChecker.LogLineContains.apply com.whisk.docker.DockerReadyChecker.LogLineContains.apply("Server started, listening for requests...")
68 22253 2384 - 3102 Apply com.whisk.docker.DockerContainer.withReadyChecker com.whisk.docker.DockerContainer.apply(("confluentinc/cp-schema-registry:".+(ConfluentPlatformTest.confluentVersion): String), scala.Some.apply[String](DockerKafkaService.this.registryName), com.whisk.docker.DockerContainer.apply$default$3, com.whisk.docker.DockerContainer.apply$default$4, com.whisk.docker.DockerContainer.apply$default$5, com.whisk.docker.DockerContainer.apply$default$6, com.whisk.docker.DockerContainer.apply$default$7, com.whisk.docker.DockerContainer.apply$default$8, com.whisk.docker.DockerContainer.apply$default$9, com.whisk.docker.DockerContainer.apply$default$10, com.whisk.docker.DockerContainer.apply$default$11, com.whisk.docker.DockerContainer.apply$default$12, com.whisk.docker.DockerContainer.apply$default$13, com.whisk.docker.DockerContainer.apply$default$14, com.whisk.docker.DockerContainer.apply$default$15, com.whisk.docker.DockerContainer.apply$default$16, com.whisk.docker.DockerContainer.apply$default$17).withEnv(("SCHEMA_REGISTRY_HOST_NAME=".+(DockerKafkaService.this.registryName): String), ("SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS=PLAINTEXT://".+(DockerKafkaService.this.kafkaName).+(":").+(DockerKafkaService.this.kafkaInternalPort): String), "SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL=PLAINTEXT", ("SCHEMA_REGISTRY_LISTENERS=http://".+(DockerKafkaService.this.registryName).+(":").+(DockerKafkaService.this.registryInternalPort): String)).withHostname(DockerKafkaService.this.registryName).withPorts(scala.Predef.ArrowAssoc[Int](DockerKafkaService.this.registryInternalPort).->[Some[Int]](scala.Some.apply[Int](DockerKafkaService.this.registryExposedPort))).withLinks(com.whisk.docker.ContainerLink.apply(DockerKafkaService.this.kafkaContainer, DockerKafkaService.this.kafkaName)).withReadyChecker(com.whisk.docker.DockerReadyChecker.LogLineContains.apply("Server started, listening for requests..."))
71 22153 3196 - 3239 Apply scala.collection.immutable.List.:: { final <synthetic> <artifact> val rassoc$1: com.whisk.docker.DockerContainer = DockerKafkaService.this.kafkaContainer; DockerKafkaService.super.dockerContainers.::[com.whisk.docker.DockerContainer](rassoc$1) }.::[com.whisk.docker.DockerContainer](rassoc$2)