From 170fde6d196aff4bf2f7dc711850b71e5e914107 Mon Sep 17 00:00:00 2001 From: Katia Aresti Date: Tue, 10 Dec 2024 17:13:52 +0100 Subject: [PATCH] Clustered property and tests added --- .../includes/quarkus-infinispan-embedded.adoc | 25 ++++++++-- ...-embedded_quarkus.infinispan-embedded.adoc | 48 +++++++++++++++++++ extension/deployment/pom.xml | 11 +++++ .../InfinispanEmbeddedConfigTest.java | 28 +++++++++++ .../InfinispanEmbeddedNotClusteredTest.java | 27 +++++++++++ ...application-infinispan-embedded.properties | 0 ...application-infinispan-embedded.properties | 1 + .../runtime/InfinispanEmbeddedProducer.java | 6 ++- .../InfinispanEmbeddedRuntimeConfig.java | 8 +++- pom.xml | 5 ++ 10 files changed, 153 insertions(+), 6 deletions(-) create mode 100644 docs/modules/ROOT/pages/includes/quarkus-infinispan-embedded_quarkus.infinispan-embedded.adoc create mode 100644 extension/deployment/src/test/java/io/quarkiverse/infinispan/embedded/deployment/InfinispanEmbeddedConfigTest.java create mode 100644 extension/deployment/src/test/java/io/quarkiverse/infinispan/embedded/deployment/InfinispanEmbeddedNotClusteredTest.java create mode 100644 extension/deployment/src/test/resources/empty-application-infinispan-embedded.properties create mode 100644 extension/deployment/src/test/resources/not-clustered-application-infinispan-embedded.properties diff --git a/docs/modules/ROOT/pages/includes/quarkus-infinispan-embedded.adoc b/docs/modules/ROOT/pages/includes/quarkus-infinispan-embedded.adoc index e32f8a8..715eae8 100644 --- a/docs/modules/ROOT/pages/includes/quarkus-infinispan-embedded.adoc +++ b/docs/modules/ROOT/pages/includes/quarkus-infinispan-embedded.adoc @@ -1,4 +1,4 @@ -:summaryTableId: quarkus-infinispan-embedded_infinispan-embedded +:summaryTableId: quarkus-infinispan-embedded_quarkus-infinispan-embedded [.configuration-legend] icon:lock[title=Fixed at build time] Configuration property fixed at build time - All other configuration properties are overridable at runtime [.configuration-reference.searchable, cols="80,.^10,.^10"] @@ -8,7 +8,7 @@ h|[.header-title]##Configuration property## h|Type h|Default -a| [[quarkus-infinispan-embedded_infinispan-embedded-xml-config]] [.property-path]##link:#quarkus-infinispan-embedded_infinispan-embedded-xml-config[`infinispan-embedded.xml-config`]## +a| [[quarkus-infinispan-embedded_quarkus-infinispan-embedded-xml-config]] [.property-path]##link:#quarkus-infinispan-embedded_quarkus-infinispan-embedded-xml-config[`quarkus.infinispan-embedded.xml-config`]## [.description] -- @@ -16,15 +16,32 @@ The configured Infinispan embedded xml file which is used by the managed Embedde ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++INFINISPAN_EMBEDDED_XML_CONFIG+++[] +Environment variable: env_var_with_copy_button:+++QUARKUS_INFINISPAN_EMBEDDED_XML_CONFIG+++[] endif::add-copy-button-to-env-var[] ifndef::add-copy-button-to-env-var[] -Environment variable: `+++INFINISPAN_EMBEDDED_XML_CONFIG+++` +Environment variable: `+++QUARKUS_INFINISPAN_EMBEDDED_XML_CONFIG+++` endif::add-copy-button-to-env-var[] -- |string | +a| [[quarkus-infinispan-embedded_quarkus-infinispan-embedded-clustered]] [.property-path]##link:#quarkus-infinispan-embedded_quarkus-infinispan-embedded-clustered[`quarkus.infinispan-embedded.clustered`]## + +[.description] +-- +Sets a cluster with defaults. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_INFINISPAN_EMBEDDED_CLUSTERED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_INFINISPAN_EMBEDDED_CLUSTERED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`true` + |=== diff --git a/docs/modules/ROOT/pages/includes/quarkus-infinispan-embedded_quarkus.infinispan-embedded.adoc b/docs/modules/ROOT/pages/includes/quarkus-infinispan-embedded_quarkus.infinispan-embedded.adoc new file mode 100644 index 0000000..715eae8 --- /dev/null +++ b/docs/modules/ROOT/pages/includes/quarkus-infinispan-embedded_quarkus.infinispan-embedded.adoc @@ -0,0 +1,48 @@ +:summaryTableId: quarkus-infinispan-embedded_quarkus-infinispan-embedded +[.configuration-legend] +icon:lock[title=Fixed at build time] Configuration property fixed at build time - All other configuration properties are overridable at runtime +[.configuration-reference.searchable, cols="80,.^10,.^10"] +|=== + +h|[.header-title]##Configuration property## +h|Type +h|Default + +a| [[quarkus-infinispan-embedded_quarkus-infinispan-embedded-xml-config]] [.property-path]##link:#quarkus-infinispan-embedded_quarkus-infinispan-embedded-xml-config[`quarkus.infinispan-embedded.xml-config`]## + +[.description] +-- +The configured Infinispan embedded xml file which is used by the managed EmbeddedCacheManager and its Caches + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_INFINISPAN_EMBEDDED_XML_CONFIG+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_INFINISPAN_EMBEDDED_XML_CONFIG+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-infinispan-embedded_quarkus-infinispan-embedded-clustered]] [.property-path]##link:#quarkus-infinispan-embedded_quarkus-infinispan-embedded-clustered[`quarkus.infinispan-embedded.clustered`]## + +[.description] +-- +Sets a cluster with defaults. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_INFINISPAN_EMBEDDED_CLUSTERED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_INFINISPAN_EMBEDDED_CLUSTERED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`true` + +|=== + + +:!summaryTableId: \ No newline at end of file diff --git a/extension/deployment/pom.xml b/extension/deployment/pom.xml index 1266650..8818c0b 100644 --- a/extension/deployment/pom.xml +++ b/extension/deployment/pom.xml @@ -34,6 +34,17 @@ quarkus-infinispan-embedded ${project.version} + + + org.assertj + assertj-core + test + + + io.quarkus + quarkus-junit5-internal + test + diff --git a/extension/deployment/src/test/java/io/quarkiverse/infinispan/embedded/deployment/InfinispanEmbeddedConfigTest.java b/extension/deployment/src/test/java/io/quarkiverse/infinispan/embedded/deployment/InfinispanEmbeddedConfigTest.java new file mode 100644 index 0000000..a16d7f9 --- /dev/null +++ b/extension/deployment/src/test/java/io/quarkiverse/infinispan/embedded/deployment/InfinispanEmbeddedConfigTest.java @@ -0,0 +1,28 @@ +package io.quarkiverse.infinispan.embedded.deployment; + +import static org.assertj.core.api.Assertions.assertThat; + +import jakarta.enterprise.inject.Default; + +import org.infinispan.manager.EmbeddedCacheManager; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.arc.Arc; +import io.quarkus.test.QuarkusUnitTest; + +public class InfinispanEmbeddedConfigTest { + + @RegisterExtension + static final QuarkusUnitTest config = new QuarkusUnitTest() + .withConfigurationResource("empty-application-infinispan-embedded.properties"); + + @Test + public void embeddedCacheManagerAccessible() { + EmbeddedCacheManager embeddedCacheManager = Arc.container() + .instance(EmbeddedCacheManager.class, Default.Literal.INSTANCE).get(); + assertThat(embeddedCacheManager).isNotNull(); + assertThat(embeddedCacheManager.isCoordinator()).isTrue(); + assertThat(embeddedCacheManager.getAccessibleCacheNames()).isEmpty(); + } +} diff --git a/extension/deployment/src/test/java/io/quarkiverse/infinispan/embedded/deployment/InfinispanEmbeddedNotClusteredTest.java b/extension/deployment/src/test/java/io/quarkiverse/infinispan/embedded/deployment/InfinispanEmbeddedNotClusteredTest.java new file mode 100644 index 0000000..dc17df6 --- /dev/null +++ b/extension/deployment/src/test/java/io/quarkiverse/infinispan/embedded/deployment/InfinispanEmbeddedNotClusteredTest.java @@ -0,0 +1,27 @@ +package io.quarkiverse.infinispan.embedded.deployment; + +import static org.assertj.core.api.Assertions.assertThat; + +import jakarta.enterprise.inject.Default; + +import org.infinispan.manager.EmbeddedCacheManager; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.arc.Arc; +import io.quarkus.test.QuarkusUnitTest; + +public class InfinispanEmbeddedNotClusteredTest { + + @RegisterExtension + static final QuarkusUnitTest config = new QuarkusUnitTest() + .withConfigurationResource("not-clustered-application-infinispan-embedded.properties"); + + @Test + public void notClustered() { + EmbeddedCacheManager cacheManager = Arc.container().instance(EmbeddedCacheManager.class, Default.Literal.INSTANCE) + .get(); + assertThat(cacheManager).isNotNull(); + assertThat(cacheManager.isCoordinator()).isFalse(); + } +} diff --git a/extension/deployment/src/test/resources/empty-application-infinispan-embedded.properties b/extension/deployment/src/test/resources/empty-application-infinispan-embedded.properties new file mode 100644 index 0000000..e69de29 diff --git a/extension/deployment/src/test/resources/not-clustered-application-infinispan-embedded.properties b/extension/deployment/src/test/resources/not-clustered-application-infinispan-embedded.properties new file mode 100644 index 0000000..4123c15 --- /dev/null +++ b/extension/deployment/src/test/resources/not-clustered-application-infinispan-embedded.properties @@ -0,0 +1 @@ +quarkus.infinispan-embedded.clustered=false \ No newline at end of file diff --git a/extension/runtime/src/main/java/io/quarkiverse/infinispan/embedded/runtime/InfinispanEmbeddedProducer.java b/extension/runtime/src/main/java/io/quarkiverse/infinispan/embedded/runtime/InfinispanEmbeddedProducer.java index 109722c..d4419ff 100644 --- a/extension/runtime/src/main/java/io/quarkiverse/infinispan/embedded/runtime/InfinispanEmbeddedProducer.java +++ b/extension/runtime/src/main/java/io/quarkiverse/infinispan/embedded/runtime/InfinispanEmbeddedProducer.java @@ -57,7 +57,11 @@ EmbeddedCacheManager manager() { } } - return new DefaultCacheManager(GlobalConfigurationBuilder.defaultClusteredBuilder().build()); + if (config.clustered()) { + return new DefaultCacheManager(GlobalConfigurationBuilder.defaultClusteredBuilder().build()); + } + + return new DefaultCacheManager(); } /** diff --git a/extension/runtime/src/main/java/io/quarkiverse/infinispan/embedded/runtime/InfinispanEmbeddedRuntimeConfig.java b/extension/runtime/src/main/java/io/quarkiverse/infinispan/embedded/runtime/InfinispanEmbeddedRuntimeConfig.java index dcb2097..3bb6d8c 100644 --- a/extension/runtime/src/main/java/io/quarkiverse/infinispan/embedded/runtime/InfinispanEmbeddedRuntimeConfig.java +++ b/extension/runtime/src/main/java/io/quarkiverse/infinispan/embedded/runtime/InfinispanEmbeddedRuntimeConfig.java @@ -5,9 +5,10 @@ import io.quarkus.runtime.annotations.ConfigPhase; import io.quarkus.runtime.annotations.ConfigRoot; import io.smallrye.config.ConfigMapping; +import io.smallrye.config.WithDefault; @ConfigRoot(phase = ConfigPhase.RUN_TIME) -@ConfigMapping(prefix = "infinispan-embedded") +@ConfigMapping(prefix = "quarkus.infinispan-embedded") public interface InfinispanEmbeddedRuntimeConfig { /** @@ -15,4 +16,9 @@ public interface InfinispanEmbeddedRuntimeConfig { */ Optional xmlConfig(); + /** + * Sets a cluster with defaults. + */ + @WithDefault("true") + boolean clustered(); } diff --git a/pom.xml b/pom.xml index 080ce05..a975d20 100644 --- a/pom.xml +++ b/pom.xml @@ -59,6 +59,11 @@ jgroups-raft ${jgroups.raft.version} + + org.assertj + assertj-core + ${assertj.version} +