Как удалить тестовые контейнеры из докера после завершения всех тестов класса JUnit 5 ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Как удалить тестовые контейнеры из докера после завершения всех тестов класса JUnit 5

Сообщение Anonymous »

  • здесь мы создаём контейнеры
  • также в проекте есть свойство ryuk.container.image=testcontainers/ryuk:0.3.3 который создает контейнер, который должен удалить все тестовые контейнеры после завершения тестов, но по каким-то причинам удаление не происходит

Код: Выделить всё

public class TestContainersSpringContextCustomizerFactory implements ContextCustomizerFactory {

private static SqlTestContainer prodTestContainer;
private static S3TestContainer minioContainer;
private static ElasticsearchTestContainer elasticsearchBean;
private static RabbitMQTestContainer rabbitMQContainer;
private Logger log = LoggerFactory.getLogger(TestContainersSpringContextCustomizerFactory.class);

@Override
public ContextCustomizer createContextCustomizer(Class testClass,
List configAttributes) {
return (context, mergedConfig) -> {
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
TestPropertyValues testValues = TestPropertyValues.empty();

EmbeddedElasticsearch elasticsearchAnnotation = AnnotatedElementUtils.findMergedAnnotation(
testClass,
EmbeddedElasticsearch.class
);
if (null != elasticsearchAnnotation) {
log.debug("detected the EmbeddedElasticsearch annotation on class {}", testClass.getName());
log.info("Warming up the elastic database");
if (null == elasticsearchBean) {
elasticsearchBean = beanFactory.createBean(ElasticsearchTestContainer.class);
beanFactory.registerSingleton(ElasticsearchTestContainer.class.getName(),
elasticsearchBean);
// ((DefaultListableBeanFactory)beanFactory).registerDisposableBean(ElasticsearchTestContainer.class.getName(), elasticsearchBean);
}
testValues =
testValues.and(
"spring.elasticsearch.uris=http://"
+ elasticsearchBean.getElasticsearchContainer().getHttpHostAddress()
);
}
//similary code other for other containers
}

В качестве примера покажу код одного из 4-х контейнеров, остальные пишутся аналогично


В качестве примера покажу код одного из 4-х контейнеров, остальные пишутся аналогично


р>

Код: Выделить всё

/**
* Base class for starting/stopping ElasticSearch during tests.
*/
public class ElasticsearchTestContainer implements InitializingBean, DisposableBean {

private static final Logger log = LoggerFactory.getLogger(ElasticsearchTestContainer.class);
private static final Integer CONTAINER_STARTUP_TIMEOUT_MINUTES = 10;
private ElasticsearchContainer elasticsearchContainer;

@Override
public void destroy() {
if (null != elasticsearchContainer && elasticsearchContainer.isRunning()) {
elasticsearchContainer.close();
}
}

@Override
public void afterPropertiesSet() {
if (null == elasticsearchContainer) {
elasticsearchContainer =
new ElasticsearchContainer(
DockerImageName.parse("docker-persistent.nexus.jaga.rt.ru/elasticsearch")
.asCompatibleSubstituteFor("docker.elastic.co/elasticsearch/elasticsearch")
.withTag("7.17.4"))
.withStartupTimeout(
Duration.of(CONTAINER_STARTUP_TIMEOUT_MINUTES, ChronoUnit.MINUTES))
.withSharedMemorySize(256000000L)
.withEnv("ES_JAVA_OPTS", "-Xms256m -Xmx256m")
.withEnv("xpack.security.enabled", "false")
.withLogConsumer(new Slf4jLogConsumer(log))
.withReuse(true);
}
if (!elasticsearchContainer.isRunning()) {
elasticsearchContainer.start();
}
}

public ElasticsearchContainer getElasticsearchContainer() {
return elasticsearchContainer;
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... s-complete

Вернуться в «JAVA»