package org.infinispan.server.jgroups.subsystem; import java.io.IOException; import javax.xml.stream.XMLStreamException; import org.infinispan.server.commons.controller.Operations; import org.jboss.as.controller.PathAddress; import org.jboss.as.controller.operations.common.Util; import org.jboss.as.subsystem.test.AbstractSubsystemTest; import org.jboss.as.subsystem.test.AdditionalInitialization; import org.jboss.as.subsystem.test.KernelServices; import org.jboss.dmr.ModelNode; /** * Base test case for testing management operations. * * @author Richard Achmatowicz (c) 2011 Red Hat Inc. */ public class OperationTestCaseBase extends AbstractSubsystemTest { static final String SUBSYSTEM_XML_FILE = JGroupsSchema.CURRENT.format("subsystem-%s-%d_%d.xml").replaceAll(":", "_"); public OperationTestCaseBase() { super(JGroupsExtension.SUBSYSTEM_NAME, new JGroupsExtension()); } protected static ModelNode getSubsystemReadOperation(String name) { return Operations.createReadAttributeOperation(getSubsystemAddress(), name); } protected static ModelNode getSubsystemWriteOperation(String name, String value) { return Operations.createWriteAttributeOperation(getSubsystemAddress(), name, new ModelNode(value)); } protected static ModelNode getProtocolStackAddOperation(String stackName) { return Util.createAddOperation(getProtocolStackAddress(stackName)); } protected static ModelNode getProtocolStackAddOperationWithParameters(String stackName) { ModelNode[] operations = new ModelNode[] { getProtocolStackAddOperation(stackName), getTransportAddOperation(stackName, "UDP"), getProtocolAddOperation(stackName, "MPING"), getProtocolAddOperation(stackName, "pbcast.FLUSH"), }; return Operations.createCompositeOperation(operations); } protected static ModelNode getProtocolStackRemoveOperation(String stackName) { return Util.createRemoveOperation(getProtocolStackAddress(stackName)); } protected static ModelNode getTransportAddOperation(String stackName, String protocol) { return Util.createAddOperation(getTransportAddress(stackName, protocol)); } protected static ModelNode getTransportAddOperationWithProperties(String stackName, String type) { ModelNode[] operations = new ModelNode[] { getTransportAddOperation(stackName, type), getProtocolPropertyAddOperation(stackName, type, "A", "a"), getProtocolPropertyAddOperation(stackName, type, "B", "b"), }; return Operations.createCompositeOperation(operations); } protected static ModelNode getTransportRemoveOperation(String stackName, String type) { return Util.createRemoveOperation(getTransportAddress(stackName, type)); } protected static ModelNode getTransportReadOperation(String stackName, String type, String name) { return Operations.createReadAttributeOperation(getTransportAddress(stackName, type), name); } protected static ModelNode getTransportWriteOperation(String stackName, String type, String name, String value) { return Operations.createWriteAttributeOperation(getTransportAddress(stackName, type), name, new ModelNode(value)); } protected static ModelNode getTransportPropertyAddOperation(String stackName, String type, String propertyName, String propertyValue) { ModelNode operation = Util.createAddOperation(getTransportPropertyAddress(stackName, type, propertyName)); operation.get(PropertyResourceDefinition.VALUE.getName()).set(propertyValue); return operation; } protected static ModelNode getTransportPropertyRemoveOperation(String stackName, String type, String propertyName) { return Util.createRemoveOperation(getTransportPropertyAddress(stackName, type, propertyName)); } protected static ModelNode getTransportPropertyReadOperation(String stackName, String type, String propertyName) { return Operations.createReadAttributeOperation(getTransportPropertyAddress(stackName, type, propertyName), PropertyResourceDefinition.VALUE.getName()); } protected static ModelNode getTransportPropertyWriteOperation(String stackName, String type, String propertyName, String propertyValue) { return Operations.createWriteAttributeOperation(getTransportPropertyAddress(stackName, type, propertyName), PropertyResourceDefinition.VALUE.getName(), new ModelNode(propertyValue)); } protected static ModelNode getTransportGetPropertyOperation(String stackName, String type, String propertyName) { return Operations.createMapGetOperation(getTransportAddress(stackName, type), ProtocolResourceDefinition.PROPERTIES.getName(), propertyName); } protected static ModelNode getTransportPutPropertyOperation(String stackName, String type, String propertyName, String propertyValue) { return Operations.createMapPutOperation(getTransportAddress(stackName, type), ProtocolResourceDefinition.PROPERTIES.getName(), propertyName, propertyValue); } protected static ModelNode getTransportRemovePropertyOperation(String stackName, String type, String propertyName) { return Operations.createMapRemoveOperation(getTransportAddress(stackName, type), ProtocolResourceDefinition.PROPERTIES.getName(), propertyName); } protected static ModelNode getProtocolAddOperation(String stackName, String type) { return Util.createAddOperation(getProtocolAddress(stackName, type)); } protected static ModelNode getProtocolAddOperationWithProperties(String stackName, String type) { ModelNode[] operations = new ModelNode[] { getProtocolAddOperation(stackName, type), getProtocolPropertyAddOperation(stackName, type, "A", "a"), getProtocolPropertyAddOperation(stackName, type, "B", "b"), }; return Operations.createCompositeOperation(operations); } protected static ModelNode getProtocolReadOperation(String stackName, String protocolName, String name) { return Operations.createReadAttributeOperation(getProtocolAddress(stackName, protocolName), name); } protected static ModelNode getProtocolWriteOperation(String stackName, String protocolName, String name, String value) { return Operations.createWriteAttributeOperation(getProtocolAddress(stackName, protocolName), name, new ModelNode(value)); } protected static ModelNode getProtocolPropertyAddOperation(String stackName, String protocolName, String propertyName, String propertyValue) { ModelNode operation = Util.createAddOperation(getProtocolPropertyAddress(stackName, protocolName, propertyName)); operation.get(PropertyResourceDefinition.VALUE.getName()).set(propertyValue); return operation; } protected static ModelNode getProtocolPropertyRemoveOperation(String stackName, String protocolName, String propertyName) { return Util.createRemoveOperation(getProtocolPropertyAddress(stackName, protocolName, propertyName)); } protected static ModelNode getProtocolPropertyReadOperation(String stackName, String protocolName, String propertyName) { return Operations.createReadAttributeOperation(getProtocolPropertyAddress(stackName, protocolName, propertyName), PropertyResourceDefinition.VALUE.getName()); } protected static ModelNode getProtocolPropertyWriteOperation(String stackName, String protocolName, String propertyName, String propertyValue) { return Operations.createWriteAttributeOperation(getProtocolPropertyAddress(stackName, protocolName, propertyName), PropertyResourceDefinition.VALUE.getName(), new ModelNode(propertyValue)); } protected static ModelNode getProtocolGetPropertyOperation(String stackName, String protocolName, String propertyName) { return Operations.createMapGetOperation(getProtocolAddress(stackName, protocolName), ProtocolResourceDefinition.PROPERTIES.getName(), propertyName); } protected static ModelNode getProtocolPutPropertyOperation(String stackName, String protocolName, String propertyName, String propertyValue) { return Operations.createMapPutOperation(getProtocolAddress(stackName, protocolName), ProtocolResourceDefinition.PROPERTIES.getName(), propertyName, propertyValue); } protected static ModelNode getProtocolRemovePropertyOperation(String stackName, String protocolName, String propertyName) { return Operations.createMapRemoveOperation(getProtocolAddress(stackName, protocolName), ProtocolResourceDefinition.PROPERTIES.getName(), propertyName); } protected static ModelNode getProtocolRemoveOperation(String stackName, String type) { return Util.createRemoveOperation(getProtocolAddress(stackName, type)); } protected static PathAddress getSubsystemAddress() { return PathAddress.pathAddress(JGroupsSubsystemResourceDefinition.PATH); } protected static PathAddress getProtocolStackAddress(String stackName) { return getSubsystemAddress().append(StackResourceDefinition.pathElement(stackName)); } protected static PathAddress getTransportAddress(String stackName, String type) { return getProtocolStackAddress(stackName).append(TransportResourceDefinition.pathElement(type)); } protected static PathAddress getTransportPropertyAddress(String stackName, String type, String propertyName) { return getTransportAddress(stackName, type).append(PropertyResourceDefinition.pathElement(propertyName)); } protected static PathAddress getProtocolAddress(String stackName, String type) { return getProtocolStackAddress(stackName).append(ProtocolResourceDefinition.pathElement(type)); } protected static PathAddress getProtocolPropertyAddress(String stackName, String type, String propertyName) { return getProtocolAddress(stackName, type).append(PropertyResourceDefinition.pathElement(propertyName)); } protected String getSubsystemXml() throws IOException { return readResource(SUBSYSTEM_XML_FILE) ; } protected KernelServices buildKernelServices() throws XMLStreamException, IOException, Exception { return createKernelServicesBuilder(AdditionalInitialization.MANAGEMENT).setSubsystemXml(this.getSubsystemXml()).build(); } }