All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.vality.testcontainers.annotations.ceph.CephTestcontainerSingleton Maven / Gradle / Ivy

package dev.vality.testcontainers.annotations.ceph;

import dev.vality.testcontainers.annotations.DefaultSpringBootTest;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Аннотация {@code @CephTestcontainerSingleton} подключает и запускает тестконтейнер
 * {@link org.testcontainers.containers.GenericContainer}, также
 * настройки контейнера будут проинициализированы в контекст тестового приложения
 * 

Аннотация не требует дополнительной конфигурации *

Пример использования в коде — в * file-storage *

Синглтон

*

Аннотация является {@link CephTestcontainer} в режиме * синглтона — * создаваемый тестконтейнер {@link org.testcontainers.containers.GenericContainer} * будет создан один раз (в разрезе всего набора тестовых классов в пакете test) и будет переиспользоваться * в каждом тестовом классе *

Аннотация никак не обеспечивает изоляцию данных между тестами. Но попробуйте найти айдишник файла * в бакете из другого файла с тестами KEKW *

Примеры

*

В примере ниже {@link CephTestcontainerSingleton} подключается напрямую * к {@link SpringBootTest} для проведения теста, при котором идет запись и чтение данных из хранилища с файлами *

 {@code
 * @CephTestcontainerSingleton
 * @SpringBootTest
 * public class FileStorageTest {
 * }}
*

В примере ниже {@link CephTestcontainerSingleton} подключается к * {@link DefaultSpringBootTest}, * таким образом создается удобная обертка, которую можно использовать для набора тестов *

 {@code
 * @Target({ElementType.TYPE})
 * @Retention(RetentionPolicy.RUNTIME)
 * @CephTestcontainerSingleton
 * @DefaultSpringBootTest
 * public @interface CephSpringBootITest {
 * }}
*
 {@code
 * @CephSpringBootITest
 * public class FileStorageTest {
 * }}
* * @see CephTestcontainer @CephTestcontainer * @see ExtendWith @ExtendWith * @see org.testcontainers.containers.GenericContainer PostgreSQLContainer * @see DefaultSpringBootTest @DefaultSpringBootTest */ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @ExtendWith(CephTestcontainerExtension.class) public @interface CephTestcontainerSingleton { /** * Аналогичный параметр как у аннотации {@link SpringBootTest#properties()} *

* пример — properties = {"ceph.make.happy=true",...} */ String[] properties() default {}; /** * параметр для инициализации s3 client */ String bucketName() default "TEST"; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy