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

Программисты 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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