isy-session

Umstellung auf
Testcontainers

Änderungen

folder_structure.png

pom.xml
<dependency>
  <groupId>org.testcontainers</groupId>
  <artifactId>testcontainers</artifactId>
  <version>1.17.5</version>
  <scope>test</scope>
  <exclusions>
    <exclusion>
      <groupId>com.google.code.findbugs</groupId>
      <artifactId>jsr305</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
    </exclusion>
  </exclusions>
</dependency>
gitlab-ci.yml
services:
  - name: ressource-docker-hub.artifactory.zssi.ivbb.bund.de/docker:dind
  alias: docker

test:
  before_script:
    - mkdir -p $HOME/.docker
    - echo $DOCKER_AUTH_CONFIG > $HOME/.docker/config.json
  tags:
    - dind
    - zssi
testcontainers.properties
hub.image.name.prefix=ressource-docker-hub.artifactory.zssi.ivbb.bund.de/
logback-test.xml
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="info">
    <appender-ref ref="STDOUT"/>
  </root>

  <logger name="org.testcontainers" level="INFO"/>
  <logger name="com.github.dockerjava" level="WARN"/>
  <logger name="com.github.dockerjava.zerodep.shaded.org.apache.hc.client5.http.wire" level="OFF"/>
</configuration>
reddison.yaml
---
singleServerConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
password: null
subscriptionsPerConnection: 5
clientName: null
address: "redis://${redis.host}:${redis.port}"
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
connectionMinimumIdleSize: 24
connectionPoolSize: 64
database: 0
dnsMonitoringInterval: 5000
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.SerializationCodec> {}
transportMode: "NIO"
EmbeddedRedisTest.java
package de.bund.bva.isyfact.session;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.utility.DockerImageName;

public abstract class EmbeddedRedisTest {
  
  static {
    GenericContainer<?> redis = new GenericContainer<>(DockerImageName.parse("redis:7.0.5-alpine"))
      .withExposedPorts(6379);
  } 
  
  @BeforeClass
  public static void startRedisServer() {
    redis.start();
    System.setProperty("redis.host", redis.getHost());
    System.setProperty("redis.port", redis.getMappedPort(6379).toString());
    }
    
    @AfterClass
    public static void stopRedisServer() {
      redis.stop();
    }
}