Skip to content

Commit

Permalink
WFLY-19527 Add EAP 8.0.0 transform/reject tests for distributable-ejb…
Browse files Browse the repository at this point in the history
… subsystem
  • Loading branch information
rhusar committed Jul 11, 2024
1 parent e0e8d4d commit 87389f2
Show file tree
Hide file tree
Showing 4 changed files with 167 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
@@ -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<ModelTestControllerVersion> 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<ModelNode> 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;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!--
~ Copyright The WildFly Authors
~ SPDX-License-Identifier: Apache-2.0
-->

<subsystem xmlns="urn:jboss:domain:distributable-ejb:1.0" default-bean-management="default">
<infinispan-bean-management name="default" cache-container="foo" cache="bar" max-active-beans="${exp.max-active-beans:10000}"/>
<local-client-mappings-registry/>
<infinispan-timer-management name="distributed" cache-container="foo" cache="bar" max-active-timers="${exp.max-active-distributed-timers:100}"/>
<infinispan-timer-management name="transient" cache-container="foo" cache="bar" max-active-timers="${exp.max-active-transient-timers:1000}"/>
</subsystem>
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!--
~ Copyright The WildFly Authors
~ SPDX-License-Identifier: Apache-2.0
-->

<subsystem xmlns="urn:jboss:domain:distributable-ejb:1.0" default-bean-management="default">
<infinispan-bean-management name="default" cache-container="foo" cache="bar" max-active-beans="${exp.max-active-beans:10000}"/>
<local-client-mappings-registry/>
<infinispan-timer-management name="distributed" cache-container="foo" cache="bar" max-active-timers="${exp.max-active-distributed-timers:100}"/>
<infinispan-timer-management name="transient" cache-container="foo" cache="bar" max-active-timers="${exp.max-active-transient-timers:1000}"/>
</subsystem>

0 comments on commit 87389f2

Please sign in to comment.