diff --git a/pom.xml b/pom.xml index 4c59ba161..13e64d462 100644 --- a/pom.xml +++ b/pom.xml @@ -358,6 +358,7 @@ **/logback-test.xml logback-test.xml + junit-platform.properties true diff --git a/src/build-tools/spring-config-transpiler/src/test/java/org/geoserver/spring/config/processor/TranspileXmlConfigAnnotationProcessorMethodGenerationTest.java b/src/build-tools/spring-config-transpiler/src/test/java/org/geoserver/spring/config/processor/TranspileXmlConfigAnnotationProcessorMethodGenerationTest.java index 324a6c539..e84a72457 100644 --- a/src/build-tools/spring-config-transpiler/src/test/java/org/geoserver/spring/config/processor/TranspileXmlConfigAnnotationProcessorMethodGenerationTest.java +++ b/src/build-tools/spring-config-transpiler/src/test/java/org/geoserver/spring/config/processor/TranspileXmlConfigAnnotationProcessorMethodGenerationTest.java @@ -104,7 +104,7 @@ * @since 3.0.0 */ @SuppressWarnings("java:S5976") -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class TranspileXmlConfigAnnotationProcessorMethodGenerationTest { @TempDir diff --git a/src/build-tools/spring-config-transpiler/src/test/java/org/geoserver/spring/config/processor/TranspileXmlConfigAnnotationProcessorTest.java b/src/build-tools/spring-config-transpiler/src/test/java/org/geoserver/spring/config/processor/TranspileXmlConfigAnnotationProcessorTest.java index 43ec34e14..e1b7bc170 100644 --- a/src/build-tools/spring-config-transpiler/src/test/java/org/geoserver/spring/config/processor/TranspileXmlConfigAnnotationProcessorTest.java +++ b/src/build-tools/spring-config-transpiler/src/test/java/org/geoserver/spring/config/processor/TranspileXmlConfigAnnotationProcessorTest.java @@ -28,7 +28,7 @@ * * @since 3.0.0 */ -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class TranspileXmlConfigAnnotationProcessorTest { private Compiler compilerWithProcessor() { diff --git a/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/catalog/backend/datadir/locking/ChainedLockProvider.java b/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/catalog/backend/datadir/locking/ChainedLockProvider.java index 266c489a7..dd2388323 100644 --- a/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/catalog/backend/datadir/locking/ChainedLockProvider.java +++ b/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/catalog/backend/datadir/locking/ChainedLockProvider.java @@ -22,7 +22,7 @@ * * @see LockProvider */ -public class ChainedLockProvider implements LockProvider { +class ChainedLockProvider implements LockProvider { private static final Logger LOGGER = Logging.getLogger(ChainedLockProvider.class); diff --git a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/DataDirectoryAutoConfigurationTest.java b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/DataDirectoryAutoConfigurationTest.java index 8ad512da2..f63203afd 100644 --- a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/DataDirectoryAutoConfigurationTest.java +++ b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/DataDirectoryAutoConfigurationTest.java @@ -20,11 +20,15 @@ import org.geoserver.cloud.config.catalog.backend.datadirectory.DataDirectoryProperties; import org.geoserver.cloud.config.catalog.backend.datadirectory.DataDirectoryUpdateSequence; import org.geoserver.config.plugin.RepositoryGeoServerFacade; +import org.geoserver.platform.GeoServerExtensionsHelper; import org.geoserver.platform.GeoServerResourceLoader; import org.geoserver.platform.config.UpdateSequence; import org.geoserver.platform.resource.FileSystemResourceStore; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -32,36 +36,44 @@ * Test {@link DataDirectoryBackendConfiguration} through {@link DataDirectoryAutoConfiguration} when * {@code geoserver.backend.data-directory.enabled=true} */ +@Execution(ExecutionMode.SAME_THREAD) class DataDirectoryAutoConfigurationTest { - static @TempDir Path datadir; - - private ApplicationContextRunner runner = new ApplicationContextRunner() - .withAllowBeanDefinitionOverriding(true) - .withAllowCircularReferences(true) - .withConfiguration(AutoConfigurations.of( - // AutoConfigurations from gs-cloud-catalog-backend-common - org.geoserver.cloud.autoconfigure.geotools.GeoToolsHttpClientAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.catalog.backend.core.GeoServerBackendAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.main.DefaultUpdateSequenceAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.main.XstreamServiceLoadersAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.catalog.backend.core - .RemoteEventResourcePoolCleanupUpAutoConfiguration.class, - // - org.geoserver.cloud.autoconfigure.main.GeoServerMainSecurityAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.metrics.catalog.CatalogMetricsAutoConfiguration.class, - // AutoConfigurations from gs-cloud-catalog-backend-datadir - org.geoserver.cloud.autoconfigure.catalog.backend.datadir.DataDirectoryAutoConfiguration.class // - )) - // - .withPropertyValues( - "geoserver.backend.dataDirectory.enabled=true", // - "geoserver.backend.dataDirectory.location=%s".formatted(datadir.toAbsolutePath()) // - ); + private ApplicationContextRunner runner; + + private Path datadir; + + @BeforeEach + void beforeEach(@TempDir Path datadir) { + GeoServerExtensionsHelper.init(null); + this.datadir = datadir; + runner = new ApplicationContextRunner() + .withAllowBeanDefinitionOverriding(true) + .withAllowCircularReferences(true) + .withConfiguration(AutoConfigurations.of( + // AutoConfigurations from gs-cloud-catalog-backend-common + org.geoserver.cloud.autoconfigure.geotools.GeoToolsHttpClientAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.catalog.backend.core.GeoServerBackendAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.main.DefaultUpdateSequenceAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.main.XstreamServiceLoadersAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.catalog.backend.core + .RemoteEventResourcePoolCleanupUpAutoConfiguration.class, + // + org.geoserver.cloud.autoconfigure.main.GeoServerMainSecurityAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.metrics.catalog.CatalogMetricsAutoConfiguration.class, + // AutoConfigurations from gs-cloud-catalog-backend-datadir + org.geoserver.cloud.autoconfigure.catalog.backend.datadir.DataDirectoryAutoConfiguration + .class // + )) + // + .withPropertyValues( + "geoserver.backend.dataDirectory.enabled=true", // + "geoserver.backend.dataDirectory.location=%s".formatted(datadir.toAbsolutePath()) // + ); + } @Test void testProperties() { - runner.run(context -> { assertThat(context).hasNotFailed(); assertThat(context).hasSingleBean(DataDirectoryProperties.class); diff --git a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/DataDirectoryUpdateSequenceTest.java b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/DataDirectoryUpdateSequenceTest.java index 2534d0381..f967c2f7c 100644 --- a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/DataDirectoryUpdateSequenceTest.java +++ b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/DataDirectoryUpdateSequenceTest.java @@ -9,9 +9,13 @@ import org.geoserver.cloud.config.catalog.backend.datadirectory.DataDirectoryBackendConfiguration; import org.geoserver.cloud.config.catalog.backend.datadirectory.DataDirectoryUpdateSequence; import org.geoserver.config.GeoServer; +import org.geoserver.platform.GeoServerExtensionsHelper; import org.geoserver.platform.config.UpdateSequence; import org.geoserver.platform.config.UpdateSequenceConformanceTest; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @@ -28,12 +32,18 @@ "geoserver.backend.data-directory.enabled=true", }) @ActiveProfiles("test") +@Execution(ExecutionMode.SAME_THREAD) class DataDirectoryUpdateSequenceTest implements UpdateSequenceConformanceTest { private @Autowired DataDirectoryUpdateSequence updateSequence; - private @Autowired GeoServer geoserver; + private @Autowired GeoServer geoServer; static @TempDir Path datadir; + @BeforeAll + static void beforeAll() { + GeoServerExtensionsHelper.init(null); + } + @DynamicPropertySource static void setUpDataDir(DynamicPropertyRegistry registry) { registry.add("geoserver.backend.data-directory.location", datadir::toAbsolutePath); @@ -46,6 +56,6 @@ public UpdateSequence getUpdataSequence() { @Override public GeoServer getGeoSever() { - return geoserver; + return geoServer; } } diff --git a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/RemoteEventDataDirectoryAutoConfigurationTest.java b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/RemoteEventDataDirectoryAutoConfigurationTest.java index 7157db012..13134e817 100644 --- a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/RemoteEventDataDirectoryAutoConfigurationTest.java +++ b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/datadir/RemoteEventDataDirectoryAutoConfigurationTest.java @@ -9,6 +9,8 @@ import java.nio.file.Path; import org.geoserver.cloud.catalog.backend.datadir.EventualConsistencyEnforcer; +import org.geoserver.platform.GeoServerExtensionsHelper; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -20,37 +22,40 @@ */ class RemoteEventDataDirectoryAutoConfigurationTest { - static @TempDir Path datadir; + private ApplicationContextRunner runner; - private ApplicationContextRunner runner = new ApplicationContextRunner() - .withAllowBeanDefinitionOverriding(true) - .withAllowCircularReferences(true) - .withConfiguration(AutoConfigurations.of( - // AutoConfigurations from gs-cloud-catalog-backend-common - org.geoserver.cloud.autoconfigure.geotools.GeoToolsHttpClientAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.catalog.backend.core.GeoServerBackendAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.main.DefaultUpdateSequenceAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.main.XstreamServiceLoadersAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.catalog.backend.core - .RemoteEventResourcePoolCleanupUpAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.catalog.event.LocalCatalogEventsAutoConfiguration.class, - // - org.geoserver.cloud.autoconfigure.main.GeoServerMainSecurityAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.metrics.catalog.CatalogMetricsAutoConfiguration.class, - // AutoConfigurations from gs-cloud-catalog-backend-datadir - org.geoserver.cloud.autoconfigure.catalog.backend.datadir.DataDirectoryAutoConfiguration.class, - org.geoserver.cloud.autoconfigure.catalog.backend.datadir.RemoteEventDataDirectoryAutoConfiguration - .class)) - .withPropertyValues( - "geoserver.backend.dataDirectory.enabled=true", - "geoserver.backend.dataDirectory.location=%s".formatted(datadir.toAbsolutePath()), - "geoserver.catalog.events.enabled=true"); + @BeforeEach + void beforeEach(@TempDir Path datadir) { + GeoServerExtensionsHelper.init(null); + runner = new ApplicationContextRunner() + .withAllowBeanDefinitionOverriding(true) + .withAllowCircularReferences(true) + .withConfiguration(AutoConfigurations.of( + // AutoConfigurations from gs-cloud-catalog-backend-common + org.geoserver.cloud.autoconfigure.geotools.GeoToolsHttpClientAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.catalog.backend.core.GeoServerBackendAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.main.DefaultUpdateSequenceAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.main.XstreamServiceLoadersAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.catalog.backend.core + .RemoteEventResourcePoolCleanupUpAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.catalog.event.LocalCatalogEventsAutoConfiguration.class, + // + org.geoserver.cloud.autoconfigure.main.GeoServerMainSecurityAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.metrics.catalog.CatalogMetricsAutoConfiguration.class, + // AutoConfigurations from gs-cloud-catalog-backend-datadir + org.geoserver.cloud.autoconfigure.catalog.backend.datadir.DataDirectoryAutoConfiguration.class, + org.geoserver.cloud.autoconfigure.catalog.backend.datadir + .RemoteEventDataDirectoryAutoConfiguration.class)) + .withPropertyValues( + "geoserver.backend.dataDirectory.enabled=true", + "geoserver.backend.dataDirectory.location=%s".formatted(datadir.toAbsolutePath()), + "geoserver.catalog.events.enabled=true"); + } @Test void testEventualConsistencyEnforcerEnabledByDefault() { runner.run(context -> { - assertThat(context).hasNotFailed(); - assertThat(context).hasSingleBean(EventualConsistencyEnforcer.class); + assertThat(context).hasNotFailed().hasSingleBean(EventualConsistencyEnforcer.class); }); } @@ -58,8 +63,7 @@ void testEventualConsistencyEnforcerEnabledByDefault() { void testEventualConsistencyEnforcerExplicitlyEnabled() { runner.withPropertyValues("geoserver.backend.data-directory.eventual-consistency.enabled=true") .run(context -> { - assertThat(context).hasNotFailed(); - assertThat(context).hasSingleBean(EventualConsistencyEnforcer.class); + assertThat(context).hasNotFailed().hasSingleBean(EventualConsistencyEnforcer.class); }); } @@ -67,8 +71,7 @@ void testEventualConsistencyEnforcerExplicitlyEnabled() { void testEventualConsistencyEnforcerDisabled() { runner.withPropertyValues("geoserver.backend.data-directory.eventual-consistency.enabled=false") .run(context -> { - assertThat(context).hasNotFailed(); - assertThat(context).doesNotHaveBean(EventualConsistencyEnforcer.class); + assertThat(context).hasNotFailed().doesNotHaveBean(EventualConsistencyEnforcer.class); }); } } diff --git a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/EventualConsistencyEnforcerTest.java b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/EventualConsistencyEnforcerTest.java index 4689da6a8..3a743fd25 100644 --- a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/EventualConsistencyEnforcerTest.java +++ b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/EventualConsistencyEnforcerTest.java @@ -47,6 +47,7 @@ class EventualConsistencyEnforcerTest { @BeforeEach void before() { + GeoServerExtensionsHelper.init(null); catalog = new CatalogPlugin(); geoserver = new GeoServerImpl(); geoserver.setCatalog(catalog); diff --git a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/EventuallyConsistentCatalogFacadeTest.java b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/EventuallyConsistentCatalogFacadeTest.java index 65242bafa..b41c1776a 100644 --- a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/EventuallyConsistentCatalogFacadeTest.java +++ b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/EventuallyConsistentCatalogFacadeTest.java @@ -41,10 +41,13 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +@Execution(ExecutionMode.CONCURRENT) class EventuallyConsistentCatalogFacadeTest { EventualConsistencyEnforcer tracker; diff --git a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/locking/ChainedLockProviderTest.java b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/locking/ChainedLockProviderTest.java index b64ee41d4..ad8cee213 100644 --- a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/locking/ChainedLockProviderTest.java +++ b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/locking/ChainedLockProviderTest.java @@ -19,11 +19,11 @@ class ChainedLockProviderTest { @Test void acquiresBothLocksInOrder() { List order = new ArrayList<>(); - LockProvider first = key -> { + LockProvider first = _ -> { order.add("first-acquire"); return () -> order.add("first-release"); }; - LockProvider second = key -> { + LockProvider second = _ -> { order.add("second-acquire"); return () -> order.add("second-release"); }; @@ -40,11 +40,11 @@ void acquiresBothLocksInOrder() { @Test void releasesFirstLockIfSecondFails() { List order = new ArrayList<>(); - LockProvider first = key -> { + LockProvider first = _ -> { order.add("first-acquire"); return () -> order.add("first-release"); }; - LockProvider second = key -> { + LockProvider second = _ -> { throw new RuntimeException("forced second lock failure"); }; diff --git a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/locking/DistributedFileLockProviderTest.java b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/locking/DistributedFileLockProviderTest.java index c1206744e..7a384b396 100644 --- a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/locking/DistributedFileLockProviderTest.java +++ b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/catalog/backend/datadir/locking/DistributedFileLockProviderTest.java @@ -17,14 +17,14 @@ import org.geoserver.platform.resource.Resource.Lock; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +@Execution(value = ExecutionMode.CONCURRENT) class DistributedFileLockProviderTest { - @TempDir - File tempDir; - @Test - void acquireAndRelease() { + void acquireAndRelease(@TempDir File tempDir) { DistributedFileLockProvider provider = new DistributedFileLockProvider(tempDir); Lock lock = provider.acquire("testKey"); assertThat(lock).isNotNull(); @@ -32,7 +32,7 @@ void acquireAndRelease() { } @Test - void createsLockFileAndDirectory() { + void createsLockFileAndDirectory(@TempDir File tempDir) { new DistributedFileLockProvider(tempDir); File locksDir = new File(tempDir, ".filelocks"); assertThat(locksDir).isDirectory(); @@ -41,7 +41,7 @@ void createsLockFileAndDirectory() { } @Test - void destroyCleansUpResources() throws Exception { + void destroyCleansUpResources(@TempDir File tempDir) throws Exception { DistributedFileLockProvider provider = new DistributedFileLockProvider(tempDir); provider.acquire("key").release(); provider.destroy(); @@ -59,7 +59,7 @@ void constructorWithNullBasePathFails() { } @Test - void multipleKeysSucceed() { + void multipleKeysSucceed(@TempDir File tempDir) { DistributedFileLockProvider provider = new DistributedFileLockProvider(tempDir); Lock lock1 = provider.acquire("key1"); Lock lock2 = provider.acquire("key2"); @@ -74,7 +74,7 @@ void multipleKeysSucceed() { @Test @SuppressWarnings("java:S2925") // Thread.sleep - void sameKeyBlocksOnSecondThread() throws Exception { + void sameKeyBlocksOnSecondThread(@TempDir File tempDir) throws Exception { DistributedFileLockProvider provider = new DistributedFileLockProvider(tempDir); Lock lock = provider.acquire("blockedKey"); diff --git a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/event/remote/datadir/RemoteEventDataDirectoryProcessorTest.java b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/event/remote/datadir/RemoteEventDataDirectoryProcessorTest.java index 448781839..dd6cb8bb6 100644 --- a/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/event/remote/datadir/RemoteEventDataDirectoryProcessorTest.java +++ b/src/catalog/backends/datadir/src/test/java/org/geoserver/cloud/event/remote/datadir/RemoteEventDataDirectoryProcessorTest.java @@ -55,7 +55,10 @@ import org.geoserver.config.plugin.RepositoryGeoServerFacade; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +@Execution(ExecutionMode.CONCURRENT) class RemoteEventDataDirectoryProcessorTest { ExtendedCatalogFacade mockFacade; diff --git a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/pgconfig/PgconfigBackendAutoConfigurationTest.java b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/pgconfig/PgconfigBackendAutoConfigurationTest.java index 7ebc6b8d6..13439a21a 100644 --- a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/pgconfig/PgconfigBackendAutoConfigurationTest.java +++ b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/pgconfig/PgconfigBackendAutoConfigurationTest.java @@ -35,7 +35,7 @@ * @since 1.4 */ @Testcontainers(disabledWithoutDocker = true) -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class PgconfigBackendAutoConfigurationTest { @Container diff --git a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/pgconfig/PgconfigDataSourceAutoConfigurationTest.java b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/pgconfig/PgconfigDataSourceAutoConfigurationTest.java index 22416ccb7..07883e5af 100644 --- a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/pgconfig/PgconfigDataSourceAutoConfigurationTest.java +++ b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/pgconfig/PgconfigDataSourceAutoConfigurationTest.java @@ -33,7 +33,7 @@ */ @Testcontainers(disabledWithoutDocker = true) @Slf4j -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class PgconfigDataSourceAutoConfigurationTest { @Container diff --git a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/catalog/PgconfigCatalogBackendConformanceTest.java b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/catalog/PgconfigCatalogBackendConformanceTest.java index d6ed4104d..6ee85e379 100644 --- a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/catalog/PgconfigCatalogBackendConformanceTest.java +++ b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/catalog/PgconfigCatalogBackendConformanceTest.java @@ -33,7 +33,7 @@ /** @since 1.4 */ @Testcontainers(disabledWithoutDocker = true) -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class PgconfigCatalogBackendConformanceTest extends CatalogConformanceTest { @Container diff --git a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/catalog/repository/PgconfigWorkspaceRepositoryTest.java b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/catalog/repository/PgconfigWorkspaceRepositoryTest.java index 1976a264b..6fac4d00a 100644 --- a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/catalog/repository/PgconfigWorkspaceRepositoryTest.java +++ b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/catalog/repository/PgconfigWorkspaceRepositoryTest.java @@ -22,7 +22,7 @@ /** @since 1.4 */ @Testcontainers(disabledWithoutDocker = true) -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class PgconfigWorkspaceRepositoryTest { @Container diff --git a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/config/PgconfigConfigRepositoryConformanceTest.java b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/config/PgconfigConfigRepositoryConformanceTest.java index ce9bec48d..4e693adf7 100644 --- a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/config/PgconfigConfigRepositoryConformanceTest.java +++ b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/config/PgconfigConfigRepositoryConformanceTest.java @@ -30,7 +30,7 @@ /** @since 1.4 */ @Testcontainers(disabledWithoutDocker = true) -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class PgconfigConfigRepositoryConformanceTest extends GeoServerConfigConformanceTest { @Container diff --git a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/config/PgconfigUpdateSequenceTest.java b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/config/PgconfigUpdateSequenceTest.java index b630c893e..ce0baea99 100644 --- a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/config/PgconfigUpdateSequenceTest.java +++ b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/config/PgconfigUpdateSequenceTest.java @@ -20,7 +20,7 @@ /** @since 1.4 */ @Testcontainers(disabledWithoutDocker = true) -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) @SuppressWarnings("java:S2187") class PgconfigUpdateSequenceTest implements UpdateSequenceConformanceTest { diff --git a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/resource/PgconfigResourceTest.java b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/resource/PgconfigResourceTest.java index d65f37bb5..f8a03082a 100644 --- a/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/resource/PgconfigResourceTest.java +++ b/src/catalog/backends/pgconfig/src/test/java/org/geoserver/cloud/backend/pgconfig/resource/PgconfigResourceTest.java @@ -58,7 +58,7 @@ @Slf4j @Testcontainers(disabledWithoutDocker = true) -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class PgconfigResourceTest { @Container diff --git a/src/catalog/events-tests/README.md b/src/catalog/events-tests/README.md new file mode 100644 index 000000000..ca5582af9 --- /dev/null +++ b/src/catalog/events-tests/README.md @@ -0,0 +1,146 @@ +# Catalog Events Module + +Implements an application-level catalog/config events object model +and standard event propagation mechanism through the ApplicationContext. + +The event object hierarchy has a notion of whether the event was generated +by the running service instance or a remote one, but is not tied to any +distributed event delivery mechanism. That responsibility is left to +an integration architectural layer. + +Standard Spring `@EventListeners` can hence be used to implement +orthogonal concerns. Care must be taken to filter out events +by `InfoEvent.isLocal()` and `InfoEvent.isRemote()` as appropriate, +if relevant to the listener. + +A spring-boot `AutoConfiguration` is provided to enable or disable +the usage of these application-level level events, through +the `geoserver.catalog.events.enabled` boolean configuration property. + +As a convenience, the `@ConditionalOnCatalogEvents` annotation +can be used to enable additional functionality on any downstream +dependency. + + +```mermaid +classDiagram + direction LR + GeoServerEvent <|-- UpdateSequenceEvent + GeoServerEvent <|-- LifecycleEvent + LifecycleEvent <|-- ReloadEvent + LifecycleEvent <|-- ResetEvent + UpdateSequenceEvent <|-- InfoEvent + UpdateSequenceEvent <|-- SecurityConfigChanged + InfoEvent <|-- InfoAdded + InfoEvent <|-- InfoModified + InfoEvent <|-- InfoRemoved + InfoEvent o-- ConfigInfoType + InfoAdded <|-- CatalogInfoAdded + InfoAdded <|-- ConfigInfoAdded + ConfigInfoAdded <|-- GeoServerInfoSet + ConfigInfoAdded <|-- LoggingInfoSet + ConfigInfoAdded <|-- ServiceAdded + ConfigInfoAdded <|-- SettingsAdded + InfoModified <|-- CatalogInfoModified + InfoModified <|-- ConfigInfoModified + CatalogInfoModified <|-- DefaultNamespaceSet + CatalogInfoModified <|-- DefaultWorkspaceSet + CatalogInfoModified <|-- DefaultDataStoreSet + ConfigInfoModified <|-- GeoServerInfoModified + ConfigInfoModified <|-- LoggingInfoModified + ConfigInfoModified <|-- ServiceModified + ConfigInfoModified <|-- SettingsModified + InfoRemoved <|-- CatalogInfoRemoved + InfoRemoved <|-- ConfigInfoRemoved + ConfigInfoRemoved <|-- ServiceRemoved + ConfigInfoRemoved <|-- SettingsRemoved + class GeoServerEvent{ + <> + String origin + long timestamp + String author + String id + } + class LifecycleEvent{ + <> + } + class ReloadEvent{ + } + class ResetEvent{ + } + class UpdateSequenceEvent{ + Long updateSequence + } + class InfoEvent{ + <> + String objectId + ConfigInfoType objectType + } + class InfoAdded{ + <> + ~I extends Info~ object + } + class InfoModified{ + <> + Patch patch + } + class InfoRemoved{ + <> + } + class ConfigInfoAdded{ + <> + } + class ConfigInfoModified{ + <> + } + class ConfigInfoRemoved{ + <> + } + class ServiceModified{ + String workspaceId + } + class ServiceRemoved{ + String workspaceId + } + class SettingsModified{ + String workspaceId + } + class SettingsRemoved{ + String workspaceId + } + class DefaultDataStoreSet{ + String workspaceId + String defaultDataStoreId + } + class DefaultNamespaceSet{ + newNamespaceId + } + class DefaultWorkspaceSet{ + String newWorkspaceId + } + class SecurityConfigChanged{ + String reason + } + class ConfigInfoType { + <> + Catalog + WorkspaceInfo + NamespaceInfo + CoverageStoreInfo + DataStoreInfo + WmsStoreInfo + WmtsStoreInfo + FeatureTypeInfo + CoverageInfo + WmsLayerInfo + WmtsLayerInfo + LayerInfo + LayerGroupInfo + MapInfo + StyleInfo + GeoServerInfo + ServiceInfo + SettingsInfo + LoggingInfo + } +``` diff --git a/src/catalog/events-tests/pom.xml b/src/catalog/events-tests/pom.xml new file mode 100644 index 000000000..64d4c091d --- /dev/null +++ b/src/catalog/events-tests/pom.xml @@ -0,0 +1,81 @@ + + + 4.0.0 + + org.geoserver.cloud.catalog + gs-cloud-catalog + ${revision} + + gs-cloud-events-tests + jar + Separate module to run Spring Cloud Event Bus tests + + + jakarta.servlet + jakarta.servlet-api + provided + + + org.geoserver.cloud.catalog + gs-cloud-events + + + org.springframework.cloud + spring-cloud-bus + + + org.geoserver.cloud.catalog + gs-cloud-catalog-plugin + ${project.version} + test-jar + test + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-webmvc + test + + + org.springframework.cloud + spring-cloud-starter-bus-amqp + test + + + org.testcontainers + testcontainers-junit-jupiter + test + + + org.testcontainers + testcontainers-rabbitmq + test + + + org.awaitility + awaitility + test + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.projectlombok + lombok + ${lombok.version} + + + + + + + diff --git a/src/catalog/events/src/test/java/org/geoserver/cloud/autoconfigure/event/bus/GeoServerBusIntegrationAutoConfigurationTest.java b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/autoconfigure/event/bus/GeoServerBusIntegrationAutoConfigurationTest.java similarity index 100% rename from src/catalog/events/src/test/java/org/geoserver/cloud/autoconfigure/event/bus/GeoServerBusIntegrationAutoConfigurationTest.java rename to src/catalog/events-tests/src/test/java/org/geoserver/cloud/autoconfigure/event/bus/GeoServerBusIntegrationAutoConfigurationTest.java diff --git a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/BusAmqpIntegrationTests.java b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/BusAmqpIntegrationTestSupport.java similarity index 99% rename from src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/BusAmqpIntegrationTests.java rename to src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/BusAmqpIntegrationTestSupport.java index 5de936409..67b86cb38 100644 --- a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/BusAmqpIntegrationTests.java +++ b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/BusAmqpIntegrationTestSupport.java @@ -94,7 +94,7 @@ "logging.level.org.springframework.cloud.bus.BusConsumer=info" }) @Testcontainers -public abstract class BusAmqpIntegrationTests { +abstract class BusAmqpIntegrationTestSupport { @Container private static final RabbitMQContainer rabbitMQContainer = new RabbitMQContainer("rabbitmq:4-management-alpine"); diff --git a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/BusEventCollector.java b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/BusEventCollector.java similarity index 100% rename from src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/BusEventCollector.java rename to src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/BusEventCollector.java diff --git a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/CatalogRemoteApplicationEventsIT.java b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/CatalogRemoteApplicationEventsIT.java similarity index 99% rename from src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/CatalogRemoteApplicationEventsIT.java rename to src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/CatalogRemoteApplicationEventsIT.java index f23b6836f..4b553a704 100644 --- a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/CatalogRemoteApplicationEventsIT.java +++ b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/CatalogRemoteApplicationEventsIT.java @@ -54,7 +54,7 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -class CatalogRemoteApplicationEventsIT extends BusAmqpIntegrationTests { +class CatalogRemoteApplicationEventsIT extends BusAmqpIntegrationTestSupport { @Test void testCatalogSetDefaultWorkspace() { diff --git a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/ConfigRemoteApplicationEventsIT.java b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/ConfigRemoteApplicationEventsIT.java similarity index 99% rename from src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/ConfigRemoteApplicationEventsIT.java rename to src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/ConfigRemoteApplicationEventsIT.java index 3814956a1..7f0a42ca1 100644 --- a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/ConfigRemoteApplicationEventsIT.java +++ b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/ConfigRemoteApplicationEventsIT.java @@ -38,7 +38,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -class ConfigRemoteApplicationEventsIT extends BusAmqpIntegrationTests { +class ConfigRemoteApplicationEventsIT extends BusAmqpIntegrationTestSupport { @Override @BeforeEach diff --git a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/LifecycleRemoteApplicationEventsIT.java b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/LifecycleRemoteApplicationEventsIT.java similarity index 99% rename from src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/LifecycleRemoteApplicationEventsIT.java rename to src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/LifecycleRemoteApplicationEventsIT.java index 941f74351..443ffb678 100644 --- a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/LifecycleRemoteApplicationEventsIT.java +++ b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/LifecycleRemoteApplicationEventsIT.java @@ -16,7 +16,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -class LifecycleRemoteApplicationEventsIT extends BusAmqpIntegrationTests { +class LifecycleRemoteApplicationEventsIT extends BusAmqpIntegrationTestSupport { @BeforeAll static void handleGsExtensions() { diff --git a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/RemoteGeoServerEventsConfigurationTest.java b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/RemoteGeoServerEventsConfigurationTest.java similarity index 100% rename from src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/RemoteGeoServerEventsConfigurationTest.java rename to src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/RemoteGeoServerEventsConfigurationTest.java diff --git a/src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/TestConfigurationAutoConfiguration.java b/src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/TestConfigurationAutoConfiguration.java similarity index 100% rename from src/catalog/events/src/test/java/org/geoserver/cloud/event/bus/TestConfigurationAutoConfiguration.java rename to src/catalog/events-tests/src/test/java/org/geoserver/cloud/event/bus/TestConfigurationAutoConfiguration.java diff --git a/src/catalog/events/src/test/resources/application.yml b/src/catalog/events-tests/src/test/resources/application.yml similarity index 100% rename from src/catalog/events/src/test/resources/application.yml rename to src/catalog/events-tests/src/test/resources/application.yml diff --git a/src/catalog/events-tests/src/test/resources/logback-test.xml b/src/catalog/events-tests/src/test/resources/logback-test.xml new file mode 100644 index 000000000..b714568ed --- /dev/null +++ b/src/catalog/events-tests/src/test/resources/logback-test.xml @@ -0,0 +1,15 @@ + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n + + + + + + + + + + + diff --git a/src/catalog/events/pom.xml b/src/catalog/events/pom.xml index 0d04e18c4..e3ac0be7d 100644 --- a/src/catalog/events/pom.xml +++ b/src/catalog/events/pom.xml @@ -56,26 +56,6 @@ spring-boot-starter-webmvc test - - org.springframework.cloud - spring-cloud-starter-bus-amqp - test - - - org.testcontainers - testcontainers-junit-jupiter - test - - - org.testcontainers - testcontainers-rabbitmq - test - - - org.awaitility - awaitility - test - diff --git a/src/catalog/events/src/main/java/org/geoserver/cloud/autoconfigure/event/bus/ConditionalOnGeoServerRemoteEventsDisabled.java b/src/catalog/events/src/main/java/org/geoserver/cloud/autoconfigure/event/bus/ConditionalOnGeoServerRemoteEventsDisabled.java index 4f1abeb73..582f059ee 100644 --- a/src/catalog/events/src/main/java/org/geoserver/cloud/autoconfigure/event/bus/ConditionalOnGeoServerRemoteEventsDisabled.java +++ b/src/catalog/events/src/main/java/org/geoserver/cloud/autoconfigure/event/bus/ConditionalOnGeoServerRemoteEventsDisabled.java @@ -12,13 +12,12 @@ import java.lang.annotation.Target; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.cloud.bus.BusBridge; import org.springframework.cloud.bus.ConditionalOnBusEnabled; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD, ElementType.TYPE}) @Documented -@ConditionalOnMissingBean(BusBridge.class) +@ConditionalOnMissingBean(name = "org.springframework.cloud.bus.BusBridge") @ConditionalOnProperty( value = ConditionalOnBusEnabled.SPRING_CLOUD_BUS_ENABLED, matchIfMissing = false, diff --git a/src/catalog/events/src/test/java/org/geoserver/cloud/config/catalog/events/CatalogApplicationEventsConfigurationTest.java b/src/catalog/events/src/test/java/org/geoserver/cloud/config/catalog/events/CatalogApplicationEventsConfigurationTest.java index 17272e8ff..da5dbb729 100644 --- a/src/catalog/events/src/test/java/org/geoserver/cloud/config/catalog/events/CatalogApplicationEventsConfigurationTest.java +++ b/src/catalog/events/src/test/java/org/geoserver/cloud/config/catalog/events/CatalogApplicationEventsConfigurationTest.java @@ -58,9 +58,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; @SpringBootTest(classes = {TestConfigurationAutoConfiguration.class, ApplicationEventCapturingListener.class}) @EnableAutoConfiguration +@ActiveProfiles("test") class CatalogApplicationEventsConfigurationTest { private @Autowired GeoServer geoserver; diff --git a/src/catalog/events/src/test/resources/application-test.yml b/src/catalog/events/src/test/resources/application-test.yml new file mode 100644 index 000000000..de96f9c87 --- /dev/null +++ b/src/catalog/events/src/test/resources/application-test.yml @@ -0,0 +1,2 @@ +spring.cloud.bus.enabled: false +spring.main.banner-mode: off \ No newline at end of file diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/ConnectionParametersSerializerTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/ConnectionParametersSerializerTest.java index 1032c0b47..c6d046722 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/ConnectionParametersSerializerTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/ConnectionParametersSerializerTest.java @@ -21,10 +21,13 @@ import org.geotools.referencing.CRS; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; /** Tests for {@link ConnectionParameters} serialization and deserialization. */ +@Execution(ExecutionMode.CONCURRENT) class ConnectionParametersSerializerTest { private ObjectMapper objectMapper; diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleBackwardsCompatibilityTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleBackwardsCompatibilityTest.java index a53c91c4b..f9947d3e0 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleBackwardsCompatibilityTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleBackwardsCompatibilityTest.java @@ -22,6 +22,8 @@ import org.geoserver.catalog.WorkspaceInfo; import org.geotools.jackson.databind.dto.CoordinateReferenceSystemDto; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** * Verifies that JSON produced by Jackson 2's property naming convention (lowercase leading characters) can be @@ -41,6 +43,7 @@ *
  • {@code Filter.NativeFilter.Native} → {@code "native"} * */ +@Execution(ExecutionMode.CONCURRENT) class GeoServerCatalogModuleBackwardsCompatibilityTest extends BackwardsCompatibilityTestSupport { @Test diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleJsonTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleJsonTest.java index 3950208ca..f7b685f65 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleJsonTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleJsonTest.java @@ -6,9 +6,12 @@ package org.geoserver.jackson.databind.catalog; import org.geotools.jackson.databind.util.ObjectMapperUtil; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import tools.jackson.databind.ObjectMapper; /** @since 1.0 */ +@Execution(ExecutionMode.CONCURRENT) class GeoServerCatalogModuleJsonTest extends GeoServerCatalogModuleTest { protected @Override ObjectMapper newObjectMapper() { diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleYamlTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleYamlTest.java index ed75d38bd..18baa83e0 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleYamlTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/GeoServerCatalogModuleYamlTest.java @@ -6,9 +6,12 @@ package org.geoserver.jackson.databind.catalog; import org.geotools.jackson.databind.util.ObjectMapperUtil; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import tools.jackson.databind.ObjectMapper; /** @since 1.0 */ +@Execution(ExecutionMode.CONCURRENT) class GeoServerCatalogModuleYamlTest extends GeoServerCatalogModuleTest { protected @Override ObjectMapper newObjectMapper() { diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationBackwardsCompatibilityTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationBackwardsCompatibilityTest.java index 688c871e9..021683745 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationBackwardsCompatibilityTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationBackwardsCompatibilityTest.java @@ -21,6 +21,8 @@ import org.geoserver.config.ServiceInfo; import org.geoserver.jackson.databind.catalog.dto.ResolvingProxyDto; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** * Verifies that hardcoded JSON produced by Jackson 2's property naming convention can be deserialized correctly into @@ -33,6 +35,7 @@ * and id), not as full objects. After deserialization, these are converted to proxy Info objects by the * {@link org.geoserver.jackson.databind.mapper.PatchMapper}. */ +@Execution(ExecutionMode.CONCURRENT) class PatchSerializationBackwardsCompatibilityTest extends BackwardsCompatibilityTestSupport { @Test diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationJsonTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationJsonTest.java index 0aa7d8b0f..734749d14 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationJsonTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationJsonTest.java @@ -6,8 +6,11 @@ package org.geoserver.jackson.databind.catalog; import org.geotools.jackson.databind.util.ObjectMapperUtil; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import tools.jackson.databind.ObjectMapper; +@Execution(ExecutionMode.CONCURRENT) class PatchSerializationJsonTest extends PatchSerializationTest { protected @Override ObjectMapper newObjectMapper() { diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationYamlTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationYamlTest.java index 8590f8550..8bdb2ab31 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationYamlTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/PatchSerializationYamlTest.java @@ -6,8 +6,11 @@ package org.geoserver.jackson.databind.catalog; import org.geotools.jackson.databind.util.ObjectMapperUtil; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import tools.jackson.databind.ObjectMapper; +@Execution(ExecutionMode.CONCURRENT) class PatchSerializationYamlTest extends PatchSerializationTest { protected @Override ObjectMapper newObjectMapper() { diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/VirtualTableSerializationTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/VirtualTableSerializationTest.java index 5f3c423e2..b501f90de 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/VirtualTableSerializationTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/catalog/VirtualTableSerializationTest.java @@ -17,6 +17,8 @@ import org.geotools.jdbc.VirtualTableParameter; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.Polygon; @@ -25,6 +27,7 @@ /** Test to verify our VirtualTable serialization fixes work correctly */ @Slf4j +@Execution(ExecutionMode.CONCURRENT) class VirtualTableSerializationTest { private ObjectMapper objectMapper; diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoServerConfigModuleBackwardsCompatibilityTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoServerConfigModuleBackwardsCompatibilityTest.java index 01b1ddf9d..951579229 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoServerConfigModuleBackwardsCompatibilityTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoServerConfigModuleBackwardsCompatibilityTest.java @@ -17,6 +17,8 @@ import org.geoserver.wms.WMSInfo; import org.geoserver.wps.WPSInfo; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** * Verifies that JSON produced by Jackson 2's property naming convention can be deserialized for GeoServer configuration @@ -40,6 +42,7 @@ *
  • {@code WcsService.SRS} → {@code "srs"} * */ +@Execution(ExecutionMode.CONCURRENT) class GeoServerConfigModuleBackwardsCompatibilityTest extends BackwardsCompatibilityTestSupport { @Test diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoSeververConfigModuleJsonTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoSeververConfigModuleJsonTest.java index 50bf9bf2e..0075baaed 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoSeververConfigModuleJsonTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoSeververConfigModuleJsonTest.java @@ -13,10 +13,13 @@ import org.geoserver.config.UserDetailsDisplaySettingsInfo; import org.geotools.jackson.databind.util.ObjectMapperUtil; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import org.skyscreamer.jsonassert.JSONAssert; import tools.jackson.databind.ObjectMapper; /** @since 1.0 */ +@Execution(ExecutionMode.CONCURRENT) class GeoSeververConfigModuleJsonTest extends GeoServerConfigModuleTest { protected @Override ObjectMapper newObjectMapper() { diff --git a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoSeververConfigModuleYamlTest.java b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoSeververConfigModuleYamlTest.java index 0eaae32c6..b6a3fe3b6 100644 --- a/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoSeververConfigModuleYamlTest.java +++ b/src/catalog/jackson-bindings/geoserver/src/test/java/org/geoserver/jackson/databind/config/GeoSeververConfigModuleYamlTest.java @@ -6,9 +6,12 @@ package org.geoserver.jackson.databind.config; import org.geotools.jackson.databind.util.ObjectMapperUtil; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; import tools.jackson.databind.ObjectMapper; /** @since 1.0 */ +@Execution(ExecutionMode.CONCURRENT) class GeoSeververConfigModuleYamlTest extends GeoServerConfigModuleTest { protected @Override ObjectMapper newObjectMapper() { diff --git a/src/catalog/jackson-bindings/geoserver/src/test/resources/junit-platform.properties b/src/catalog/jackson-bindings/geoserver/src/test/resources/junit-platform.properties new file mode 100644 index 000000000..2115a2f13 --- /dev/null +++ b/src/catalog/jackson-bindings/geoserver/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.execution.parallel.enabled = true diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/AbstractCatalogVisitorTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/AbstractCatalogVisitorTest.java index 48547b861..05808c494 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/AbstractCatalogVisitorTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/AbstractCatalogVisitorTest.java @@ -28,7 +28,10 @@ import org.geoserver.catalog.impl.WMTSStoreInfoImpl; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +@Execution(ExecutionMode.CONCURRENT) class AbstractCatalogVisitorTest { private StoreInfo visitedStore; diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/CatalogFacadeExtensionAdapterTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/CatalogFacadeExtensionAdapterTest.java index 26804ff1e..3eabd04c2 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/CatalogFacadeExtensionAdapterTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/CatalogFacadeExtensionAdapterTest.java @@ -17,11 +17,14 @@ import org.geoserver.catalog.plugin.forwarding.ResolvingCatalogFacadeDecorator; import org.geoserver.platform.GeoServerResourceLoader; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** * Asserts that a {@link CatalogFacadeExtensionAdapter} does not result in double publishing of catalog events, and that * {@link CatalogFacadeExtensionAdapter#update} correctly forwards to legacy {@link CatalogFacade#save} methods */ +@Execution(ExecutionMode.CONCURRENT) class CatalogFacadeExtensionAdapterTest extends CatalogConformanceTest { private CatalogPlugin catalog; diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/CatalogPluginConformanceTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/CatalogPluginConformanceTest.java index 1b91e2490..18b35c767 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/CatalogPluginConformanceTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/CatalogPluginConformanceTest.java @@ -7,7 +7,10 @@ import java.io.File; import org.geoserver.platform.GeoServerResourceLoader; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +@Execution(ExecutionMode.CONCURRENT) class CatalogPluginConformanceTest extends CatalogConformanceTest { protected @Override CatalogPlugin createCatalog(File tmpFolder) { diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/NamespaceInfoLookupTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/NamespaceInfoLookupTest.java index ef2ade815..5f179ff08 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/NamespaceInfoLookupTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/NamespaceInfoLookupTest.java @@ -16,8 +16,11 @@ import org.geoserver.catalog.plugin.CatalogInfoLookup.NamespaceInfoLookup; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** Test suite for {@link NamespaceInfoLookup} */ +@Execution(ExecutionMode.CONCURRENT) class NamespaceInfoLookupTest { private static final String URI_1 = "http://gs.test.com/ns1"; diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/PropertyDiffTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/PropertyDiffTest.java index 0ae96ec8b..2fb9e6bed 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/PropertyDiffTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/PropertyDiffTest.java @@ -28,7 +28,10 @@ import org.geotools.util.SimpleInternationalString; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +@Execution(ExecutionMode.CONCURRENT) class PropertyDiffTest { private PropertyDiffTestSupport support = new PropertyDiffTestSupport(); diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/XmlCatalogInfoLookupConformanceTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/XmlCatalogInfoLookupConformanceTest.java index 6e25cceaf..d8dc2d743 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/XmlCatalogInfoLookupConformanceTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/XmlCatalogInfoLookupConformanceTest.java @@ -17,7 +17,10 @@ import org.geoserver.platform.GeoServerResourceLoader; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +@Execution(ExecutionMode.CONCURRENT) class XmlCatalogInfoLookupConformanceTest extends CatalogConformanceTest { @Override diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockProviderGeoServerConfigurationLockTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockProviderGeoServerConfigurationLockTest.java index 65e86e66c..b47fbad98 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockProviderGeoServerConfigurationLockTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockProviderGeoServerConfigurationLockTest.java @@ -27,8 +27,11 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** @since 1.0 */ +@Execution(value = ExecutionMode.SAME_THREAD) class LockProviderGeoServerConfigurationLockTest { @TempDir diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockingCatalogDataDirectoryTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockingCatalogDataDirectoryTest.java index b56ddefc2..3dc063229 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockingCatalogDataDirectoryTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockingCatalogDataDirectoryTest.java @@ -12,8 +12,11 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** @since 1.0 */ +@Execution(value = ExecutionMode.SAME_THREAD) class LockingCatalogDataDirectoryTest extends LockingCatalogTest { @TempDir diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockingCatalogTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockingCatalogTest.java index 8e07c779a..5da40cdfc 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockingCatalogTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/locking/LockingCatalogTest.java @@ -32,8 +32,11 @@ import org.geoserver.config.plugin.GeoServerImpl; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** @since 1.0 */ +@Execution(ExecutionMode.CONCURRENT) class LockingCatalogTest { private GeoServerConfigurationLock configLock; diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/resolving/CatalogPropertyResolverTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/resolving/CatalogPropertyResolverTest.java index 3eff5c469..b7a9daea4 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/resolving/CatalogPropertyResolverTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/resolving/CatalogPropertyResolverTest.java @@ -35,7 +35,10 @@ import org.geoserver.config.plugin.GeoServerImpl; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +@Execution(ExecutionMode.CONCURRENT) class CatalogPropertyResolverTest { CatalogTestData testData; diff --git a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/validation/BeforeRemoveValidatorTest.java b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/validation/BeforeRemoveValidatorTest.java index 452b2efdc..b61de8416 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/validation/BeforeRemoveValidatorTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/catalog/plugin/validation/BeforeRemoveValidatorTest.java @@ -18,7 +18,10 @@ import org.geoserver.config.plugin.GeoServerImpl; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +@Execution(ExecutionMode.CONCURRENT) class BeforeRemoveValidatorTest { Catalog catalog; diff --git a/src/catalog/plugin/src/test/java/org/geoserver/config/impl/CatalogImplConformanceTest.java b/src/catalog/plugin/src/test/java/org/geoserver/config/impl/CatalogImplConformanceTest.java index 310dbed3c..991a0cfcb 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/config/impl/CatalogImplConformanceTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/config/impl/CatalogImplConformanceTest.java @@ -11,8 +11,11 @@ import org.geoserver.catalog.plugin.CatalogConformanceTest; import org.geoserver.config.GeoServerResourcePersister; import org.geoserver.platform.GeoServerResourceLoader; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** {@link CatalogConformanceTest} for the traditional {@link CatalogImpl} with {@link DefaultCatalogFacade} */ +@Execution(ExecutionMode.CONCURRENT) class CatalogImplConformanceTest extends CatalogConformanceTest { protected @Override CatalogImpl createCatalog(File tmpFolder) { diff --git a/src/catalog/plugin/src/test/java/org/geoserver/config/impl/GeoServerImplConformanceTest.java b/src/catalog/plugin/src/test/java/org/geoserver/config/impl/GeoServerImplConformanceTest.java index d5acfaeb3..d191fc76f 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/config/impl/GeoServerImplConformanceTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/config/impl/GeoServerImplConformanceTest.java @@ -8,8 +8,11 @@ import org.geoserver.catalog.impl.CatalogImpl; import org.geoserver.config.GeoServer; import org.geoserver.config.GeoServerConfigConformanceTest; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** {@link GeoServerConfigConformanceTest} for the traditional {@link GeoServerImpl} */ +@Execution(ExecutionMode.CONCURRENT) class GeoServerImplConformanceTest extends GeoServerConfigConformanceTest { protected @Override GeoServer createGeoServer() { diff --git a/src/catalog/plugin/src/test/java/org/geoserver/config/plugin/GeoServerImplConformanceTest.java b/src/catalog/plugin/src/test/java/org/geoserver/config/plugin/GeoServerImplConformanceTest.java index 7de7b2e24..4d9aba94f 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/config/plugin/GeoServerImplConformanceTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/config/plugin/GeoServerImplConformanceTest.java @@ -8,11 +8,14 @@ import org.geoserver.catalog.plugin.CatalogPlugin; import org.geoserver.config.GeoServer; import org.geoserver.config.GeoServerConfigConformanceTest; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** * {@link GeoServerConfigConformanceTest} for {@link GeoServerImpl} with {@link RepositoryGeoServerFacade} backed by * {@link MemoryConfigRepository} and a {@link CatalogPlugin} */ +@Execution(ExecutionMode.CONCURRENT) class GeoServerImplConformanceTest extends GeoServerConfigConformanceTest { protected @Override GeoServer createGeoServer() { diff --git a/src/catalog/plugin/src/test/java/org/geoserver/config/plugin/XmlSerializedConfigRepositoryConformanceTest.java b/src/catalog/plugin/src/test/java/org/geoserver/config/plugin/XmlSerializedConfigRepositoryConformanceTest.java index 6fce91a44..1e27b7421 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/config/plugin/XmlSerializedConfigRepositoryConformanceTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/config/plugin/XmlSerializedConfigRepositoryConformanceTest.java @@ -15,7 +15,10 @@ import org.geoserver.config.GeoServerConfigConformanceTest; import org.geoserver.config.util.XStreamPersister; import org.geoserver.config.util.XStreamPersisterFactory; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +@Execution(ExecutionMode.CONCURRENT) class XmlSerializedConfigRepositoryConformanceTest extends GeoServerConfigConformanceTest { protected @Override GeoServer createGeoServer() { diff --git a/src/catalog/plugin/src/test/java/org/geoserver/platform/config/DefaultUpdateSequenceTest.java b/src/catalog/plugin/src/test/java/org/geoserver/platform/config/DefaultUpdateSequenceTest.java index 048225c28..a9feee4f4 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/platform/config/DefaultUpdateSequenceTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/platform/config/DefaultUpdateSequenceTest.java @@ -9,8 +9,11 @@ import org.geoserver.config.impl.GeoServerInfoImpl; import org.geoserver.config.plugin.GeoServerImpl; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; /** @since 1.2 */ +@Execution(ExecutionMode.CONCURRENT) class DefaultUpdateSequenceTest implements UpdateSequenceConformanceTest { GeoServer gs; diff --git a/src/catalog/plugin/src/test/java/org/geoserver/platform/config/UpdateSequenceConformanceTest.java b/src/catalog/plugin/src/test/java/org/geoserver/platform/config/UpdateSequenceConformanceTest.java index 920811ecc..0998a9637 100644 --- a/src/catalog/plugin/src/test/java/org/geoserver/platform/config/UpdateSequenceConformanceTest.java +++ b/src/catalog/plugin/src/test/java/org/geoserver/platform/config/UpdateSequenceConformanceTest.java @@ -42,7 +42,7 @@ public interface UpdateSequenceConformanceTest { final long initial = updateSequence.currValue(); final long expected = initial + incrementCount; - IntStream.range(0, incrementCount).parallel().forEach(i -> updateSequence.nextValue()); + IntStream.range(0, incrementCount).parallel().forEach(_ -> updateSequence.nextValue()); long v = updateSequence.currValue(); assertEquals(expected, v); diff --git a/src/catalog/plugin/src/test/resources/junit-platform.properties b/src/catalog/plugin/src/test/resources/junit-platform.properties new file mode 100644 index 000000000..2115a2f13 --- /dev/null +++ b/src/catalog/plugin/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.execution.parallel.enabled = true diff --git a/src/catalog/pom.xml b/src/catalog/pom.xml index 1ad466b30..e88038551 100644 --- a/src/catalog/pom.xml +++ b/src/catalog/pom.xml @@ -13,6 +13,7 @@ plugin events + events-tests cache jackson-bindings backends diff --git a/src/extensions/security/geoserver-acl/src/test/java/org/geoserver/cloud/autoconfigure/extensions/security/acl/AclExtensionAutoConfigurationTest.java b/src/extensions/security/geoserver-acl/src/test/java/org/geoserver/cloud/autoconfigure/extensions/security/acl/AclExtensionAutoConfigurationTest.java index f1964bbf8..c139fa268 100644 --- a/src/extensions/security/geoserver-acl/src/test/java/org/geoserver/cloud/autoconfigure/extensions/security/acl/AclExtensionAutoConfigurationTest.java +++ b/src/extensions/security/geoserver-acl/src/test/java/org/geoserver/cloud/autoconfigure/extensions/security/acl/AclExtensionAutoConfigurationTest.java @@ -55,7 +55,7 @@ * * @since 2.27.0.0 */ -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class AclExtensionAutoConfigurationTest { private ApplicationContextRunner runner; diff --git a/src/gwc/backends/pgconfig/src/test/java/org/geoserver/cloud/gwc/backend/pgconfig/PgconfigTileLayerCatalogIT.java b/src/gwc/backends/pgconfig/src/test/java/org/geoserver/cloud/gwc/backend/pgconfig/PgconfigTileLayerCatalogIT.java index dbeea2c2f..edcb9460f 100644 --- a/src/gwc/backends/pgconfig/src/test/java/org/geoserver/cloud/gwc/backend/pgconfig/PgconfigTileLayerCatalogIT.java +++ b/src/gwc/backends/pgconfig/src/test/java/org/geoserver/cloud/gwc/backend/pgconfig/PgconfigTileLayerCatalogIT.java @@ -45,7 +45,7 @@ /** @since 1.7 */ @Testcontainers(disabledWithoutDocker = true) -@Execution(value = ExecutionMode.CONCURRENT) +@Execution(ExecutionMode.CONCURRENT) class PgconfigTileLayerCatalogIT { @Container diff --git a/src/main/src/main/java/org/geoserver/cloud/autoconfigure/main/XstreamServiceLoadersAutoConfiguration.java b/src/main/src/main/java/org/geoserver/cloud/autoconfigure/main/XstreamServiceLoadersAutoConfiguration.java index 52435c41c..4256436e3 100644 --- a/src/main/src/main/java/org/geoserver/cloud/autoconfigure/main/XstreamServiceLoadersAutoConfiguration.java +++ b/src/main/src/main/java/org/geoserver/cloud/autoconfigure/main/XstreamServiceLoadersAutoConfiguration.java @@ -33,8 +33,6 @@ @Slf4j(topic = "org.geoserver.cloud.config.catalog") public class XstreamServiceLoadersAutoConfiguration { - private static final String CONTRIBUTING_MSG = "Automatically contributing {}"; - @ConditionalOnMissingBean(WFSXStreamLoader.class) @Bean WFSXStreamLoader wfsLoader(GeoServerResourceLoader resourceLoader) { @@ -104,6 +102,6 @@ private T log(T extension) { } private void log(Class extensionType) { - log.info(CONTRIBUTING_MSG, extensionType.getSimpleName()); + log.debug("Automatically contributing {}", extensionType.getSimpleName()); } }