package org.jboss.as.clustering.infinispan.subsystem; import static org.jboss.as.controller.client.helpers.ClientConstants.ADD; import static org.jboss.as.controller.client.helpers.ClientConstants.COMPOSITE; import static org.jboss.as.controller.client.helpers.ClientConstants.STEPS; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.NAME; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP_ADDR; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OUTCOME; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.READ_ATTRIBUTE_OPERATION; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.RESULT; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.SUCCESS; import java.io.IOException; import org.jboss.as.controller.PathAddress; import org.jboss.as.controller.client.helpers.ClientConstants; import org.jboss.as.controller.operations.common.Util; import org.jboss.as.subsystem.test.KernelServices; import org.jboss.dmr.ModelNode; import org.junit.Assert; import org.junit.Test; public class IndexedOperationsTestCase extends OperationTestCaseBase { @Override protected String getSubsystemXml() throws IOException { return readResource("indexing-inheritance.xml") ; } @Test public void testIndexedCacheInheritance() throws Exception { // Parse and install the XML into the controller String subsystemXml = getSubsystemXml(); KernelServices servicesA = createKernelServicesBuilder().setSubsystemXml(subsystemXml).build(); PathAddress address = getCacheConfigurationAddress("indexing", ModelKeys.REPLICATED_CACHE_CONFIGURATION, "booksCache").append(ModelKeys.INDEXING, ModelKeys.INDEXING_NAME); ModelNode readOp = new ModelNode() ; readOp.get(OP).set(READ_ATTRIBUTE_OPERATION); readOp.get(OP_ADDR).set(address.toModelNode()); readOp.get(NAME).set(ModelKeys.INDEXING); ModelNode result = servicesA.executeOperation(readOp); Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString()); Assert.assertEquals(Indexing.LOCAL.toString(), result.get(RESULT).asString()); } @Test public void testIndexingPropertiesNoRestart() throws Exception { // Parse and install the XML into the controller String subsystemXml = getSubsystemXml() ; KernelServices servicesA = createKernelServicesBuilder().setSubsystemXml(subsystemXml).build(); final ModelNode composite = new ModelNode(); composite.get(ClientConstants.OP).set(COMPOSITE); composite.get(ClientConstants.OP_ADDR).setEmptyList(); final ModelNode steps = composite.get(STEPS); final ModelNode configAddOp = steps.add(); configAddOp.get(ClientConstants.OP).set(ADD); configAddOp.get(ClientConstants.OP_ADDR).set(PathAddress.pathAddress(InfinispanExtension.SUBSYSTEM_PATH) .append("cache-container", "indexing") .append("configurations", "CONFIGURATIONS") .append("local-cache-configuration", "manualIndexingCacheConfig").toModelNode()); configAddOp.get("template").set(true); PathAddress indexingAddress = PathAddress.pathAddress(configAddOp.get(ClientConstants.OP_ADDR)).append(ModelKeys.INDEXING, ModelKeys.INDEXING_NAME); ModelNode indexingAdd = Util.createAddOperation(indexingAddress); indexingAdd.get(ModelKeys.INDEXING).set("LOCAL"); indexingAdd.get(ModelKeys.INDEXING_PROPERTIES).get("default.directory_provider").set("ram"); indexingAdd.get(ModelKeys.INDEXING_PROPERTIES).get("hibernate.search.jmx_enabled").set("true"); indexingAdd.get(ModelKeys.INDEXING_PROPERTIES).get("lucene_version").set("LUCENE_CURRENT"); indexingAdd.get(ModelKeys.INDEXING_PROPERTIES).get("hibernate.search.indexing_strategy").set("manual"); steps.add(indexingAdd); final ModelNode cacheAddOp = steps.add(); cacheAddOp.get(ClientConstants.OP).set(ADD); cacheAddOp.get(ClientConstants.OP_ADDR).set(PathAddress.pathAddress(InfinispanExtension.SUBSYSTEM_PATH) .append("cache-container", "indexing") .append("local-cache", "manualIndexingCache").toModelNode()); cacheAddOp.get("configuration").set("manualIndexingCacheConfig"); ModelNode result = servicesA.executeOperation(composite); Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString()); assertServerState(servicesA, "running"); } }