WIP:test: HandoverIT-POC - splitted up code into smaller classes -- ALIGN
[demos/kafka/chat] / src / test / java / de / juplo / kafka / chat / backend / HandoverITContainers.java
1 package de.juplo.kafka.chat.backend;
2
3 import lombok.extern.slf4j.Slf4j;
4 import org.testcontainers.containers.BindMode;
5 import org.testcontainers.containers.GenericContainer;
6 import org.testcontainers.containers.Network;
7 import org.testcontainers.containers.output.Slf4jLogConsumer;
8 import org.testcontainers.containers.wait.strategy.Wait;
9 import org.testcontainers.images.ImagePullPolicy;
10 import org.testcontainers.utility.DockerImageName;
11
12 import java.util.Arrays;
13
14
15 @Slf4j
16 public abstract class ContainerTemplates
17 {
18   static final ImagePullPolicy NEVER_PULL = imageName -> false;
19   static final Network NETWORK = Network.newNetwork();
20
21   static GenericContainer createHaproxyContainer()
22   {
23     return new GenericContainer(DockerImageName.parse("haproxytech/haproxy-debian:2.8"))
24         .withNetwork(NETWORK)
25         .withNetworkAliases("haproxy")
26         .withClasspathResourceMapping(
27             "haproxy.cfg",
28             "/usr/local/etc/haproxy/haproxy.cfg",
29             BindMode.READ_ONLY)
30         .withClasspathResourceMapping(
31             "sharding.map",
32             "/usr/local/etc/haproxy/sharding.map",
33             BindMode.READ_WRITE)
34         .withExposedPorts(8400, 8401, 8404)
35         .withLogConsumer(new Slf4jLogConsumer(log, true).withPrefix("HAPROXY"));
36   }
37
38   static GenericContainer createBackendContainer(String id, String[] command)
39   {
40     return new GenericContainer(DockerImageName.parse("juplo/chat-backend:0.0.1-SNAPSHOT"))
41       .withImagePullPolicy(NEVER_PULL)
42       .withNetwork(NETWORK)
43       .withNetworkAliases("backend-ID".replaceAll("ID", id))
44       .withCommand(Arrays.stream(command)
45           .map(commandPart -> commandPart.replaceAll("ID", id))
46           .toArray(size -> new String[size]))
47       .withExposedPorts(8080)
48       .waitingFor(Wait.forLogMessage(".*Started\\ ChatBackendApplication.*\\n", 1))
49       .withLogConsumer(new Slf4jLogConsumer(
50           log,
51           true
52           )
53           .withPrefix("BACKEND-ID".replaceAll("ID", id)));
54   }
55 }