diff --git a/clustering/ejb/extension/src/main/java/org/wildfly/extension/clustering/ejb/DistributableEjbSubsystemModel.java b/clustering/ejb/extension/src/main/java/org/wildfly/extension/clustering/ejb/DistributableEjbSubsystemModel.java index 6d27167adb2e..62e4211f15d3 100644 --- a/clustering/ejb/extension/src/main/java/org/wildfly/extension/clustering/ejb/DistributableEjbSubsystemModel.java +++ b/clustering/ejb/extension/src/main/java/org/wildfly/extension/clustering/ejb/DistributableEjbSubsystemModel.java @@ -14,7 +14,7 @@ */ public enum DistributableEjbSubsystemModel implements SubsystemModel { - VERSION_1_0_0(1, 0, 0), // WildFly 27 + VERSION_1_0_0(1, 0, 0), // WildFly 27-present, EAP 8.0 ; public static final DistributableEjbSubsystemModel CURRENT = VERSION_1_0_0; diff --git a/clustering/ejb/extension/src/test/java/org/wildfly/extension/clustering/ejb/DistributableEjbTransformersTestCase.java b/clustering/ejb/extension/src/test/java/org/wildfly/extension/clustering/ejb/DistributableEjbTransformersTestCase.java new file mode 100644 index 000000000000..7f9d68c41761 --- /dev/null +++ b/clustering/ejb/extension/src/test/java/org/wildfly/extension/clustering/ejb/DistributableEjbTransformersTestCase.java @@ -0,0 +1,144 @@ +/* + * Copyright The WildFly Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.wildfly.extension.clustering.ejb; + +import java.util.EnumSet; +import java.util.List; + +import org.jboss.as.clustering.subsystem.AdditionalInitialization; +import org.jboss.as.controller.ModelVersion; +import org.jboss.as.model.test.FailedOperationTransformationConfig; +import org.jboss.as.model.test.ModelTestControllerVersion; +import org.jboss.as.model.test.ModelTestUtils; +import org.jboss.as.subsystem.test.AbstractSubsystemTest; +import org.jboss.as.subsystem.test.KernelServices; +import org.jboss.as.subsystem.test.KernelServicesBuilder; +import org.jboss.dmr.ModelNode; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; +import org.wildfly.clustering.infinispan.service.InfinispanCacheRequirement; +import org.wildfly.clustering.infinispan.service.InfinispanDefaultCacheRequirement; + +/** + * Transform/reject tests for singleton subsystem. + * + * @author Radoslav Husar + */ +@RunWith(value = Parameterized.class) +public class DistributableEjbTransformersTestCase extends AbstractSubsystemTest { + + @Parameters + public static Iterable parameters() { + return EnumSet.of(ModelTestControllerVersion.EAP_8_0_0); + } + + private final ModelTestControllerVersion controller; + private final ModelVersion version; + + public DistributableEjbTransformersTestCase(ModelTestControllerVersion controller) { + super(DistributableEjbExtension.SUBSYSTEM_NAME, new DistributableEjbExtension()); + + this.controller = controller; + this.version = this.getModelVersion().getVersion(); + } + + private String formatArtifact(String pattern) { + return String.format(pattern, this.controller.getMavenGavVersion()); + } + + private String formatSubsystemArtifact() { + return formatArtifact("org.jboss.eap:wildfly-clustering-ejb-extension:%s"); + } + + private DistributableEjbSubsystemModel getModelVersion() { + switch (this.controller) { + case EAP_8_0_0: + return DistributableEjbSubsystemModel.VERSION_1_0_0; + default: + throw new IllegalArgumentException(); + } + } + + private String[] getDependencies() { + switch (this.controller) { + case EAP_8_0_0: + return new String[] { + formatSubsystemArtifact(), + formatArtifact("org.jboss.eap:wildfly-clustering-common:%s"), + formatArtifact("org.jboss.eap:wildfly-clustering-ejb-spi:%s"), + formatArtifact("org.jboss.eap:wildfly-clustering-infinispan-embedded-service:%s"), + formatArtifact("org.jboss.eap:wildfly-clustering-service:%s"), + }; + default: + throw new IllegalArgumentException(); + } + } + + protected org.jboss.as.subsystem.test.AdditionalInitialization createAdditionalInitialization() { + return new AdditionalInitialization() + .require(InfinispanDefaultCacheRequirement.CACHE, "foo") + .require(InfinispanDefaultCacheRequirement.CONFIGURATION, "foo") + .require(InfinispanCacheRequirement.CONFIGURATION, "foo", "bar") + ; + } + + @Test + public void testTransformation() throws Exception { + String subsystemXmlResource = String.format("distributable-ejb-transform-%s.xml", this.version); + + KernelServices services = this.buildKernelServices(subsystemXmlResource, this.controller, this.version, this.getDependencies()); + + checkSubsystemModelTransformation(services, this.version, null, false); + } + + @Test + public void testRejections() throws Exception { + // create builder for current subsystem version + KernelServicesBuilder builder = createKernelServicesBuilder(); + + // initialize the legacy services + builder.createLegacyKernelServicesBuilder(this.createAdditionalInitialization(), controller, version) + .addSingleChildFirstClass(AdditionalInitialization.class) + .addMavenResourceURL(this.getDependencies()) + ; + + KernelServices services = builder.build(); + KernelServices legacyServices = services.getLegacyServices(version); + Assert.assertNotNull(legacyServices); + Assert.assertTrue(services.isSuccessfulBoot()); + Assert.assertTrue(legacyServices.isSuccessfulBoot()); + + // test failed operations involving backups + List xmlOps = builder.parseXmlResource("distributable-ejb-reject.xml"); + ModelTestUtils.checkFailedTransformedBootOperations(services, version, xmlOps, createFailedOperationConfig(version)); + } + + private static FailedOperationTransformationConfig createFailedOperationConfig(ModelVersion version) { + return new FailedOperationTransformationConfig(); + } + + private KernelServicesBuilder createKernelServicesBuilder() { + return this.createKernelServicesBuilder(this.createAdditionalInitialization()); + } + + private KernelServices buildKernelServices(String subsystemXml, ModelTestControllerVersion controllerVersion, ModelVersion version, String... mavenResourceURLs) throws Exception { + KernelServicesBuilder builder = this.createKernelServicesBuilder().setSubsystemXmlResource(subsystemXml); + + builder.createLegacyKernelServicesBuilder(this.createAdditionalInitialization(), controllerVersion, version) + .addSingleChildFirstClass(AdditionalInitialization.class) + .addMavenResourceURL(mavenResourceURLs) + .skipReverseControllerCheck() + ; + + KernelServices services = builder.build(); + Assert.assertTrue(ModelTestControllerVersion.MASTER + " boot failed", services.isSuccessfulBoot()); + Assert.assertTrue(controllerVersion.getMavenGavVersion() + " boot failed", services.getLegacyServices(version).isSuccessfulBoot()); + return services; + } +} diff --git a/clustering/ejb/extension/src/test/resources/org/wildfly/extension/clustering/ejb/distributable-ejb-reject.xml b/clustering/ejb/extension/src/test/resources/org/wildfly/extension/clustering/ejb/distributable-ejb-reject.xml new file mode 100644 index 000000000000..f5dc3c624122 --- /dev/null +++ b/clustering/ejb/extension/src/test/resources/org/wildfly/extension/clustering/ejb/distributable-ejb-reject.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/clustering/ejb/extension/src/test/resources/org/wildfly/extension/clustering/ejb/distributable-ejb-transform-1.0.0.xml b/clustering/ejb/extension/src/test/resources/org/wildfly/extension/clustering/ejb/distributable-ejb-transform-1.0.0.xml new file mode 100644 index 000000000000..f5dc3c624122 --- /dev/null +++ b/clustering/ejb/extension/src/test/resources/org/wildfly/extension/clustering/ejb/distributable-ejb-transform-1.0.0.xml @@ -0,0 +1,11 @@ + + + + + + + +