/*
* JBoss, Home of Professional Open Source.
* Copyright 2013, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.logging;
import static org.junit.Assert.*;
import java.io.File;
import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.services.path.PathResourceDefinition;
import org.jboss.as.subsystem.test.KernelServices;
import org.jboss.as.subsystem.test.SubsystemOperations;
import org.jboss.dmr.ModelNode;
import org.junit.After;
import org.junit.BeforeClass;
/**
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
*/
public abstract class AbstractOperationsTestCase extends AbstractLoggingSubsystemTest {
static final String PROFILE = "testProfile";
private static File logDir;
@BeforeClass
public static void setupLoggingDir() {
logDir = LoggingTestEnvironment.get().getLogDir();
for (File file : logDir.listFiles()) {
file.delete();
}
}
@After
@Override
public void clearLogContext() {
super.clearLogContext();
final LoggingProfileContextSelector contextSelector = LoggingProfileContextSelector.getInstance();
if (contextSelector.exists(PROFILE)) {
clearLogContext(contextSelector.get(PROFILE));
contextSelector.remove(PROFILE);
}
}
protected void testWrite(final KernelServices kernelServices, final ModelNode address, final AttributeDefinition attribute, final String value) {
final ModelNode writeOp = SubsystemOperations.createWriteAttributeOperation(address, attribute, value);
executeOperation(kernelServices, writeOp);
// Create the read operation
final ModelNode readOp = SubsystemOperations.createReadAttributeOperation(address, attribute);
final ModelNode result = executeOperation(kernelServices, readOp);
assertEquals(value, SubsystemOperations.readResultAsString(result));
}
protected void testWrite(final KernelServices kernelServices, final ModelNode address, final AttributeDefinition attribute, final boolean value) {
final ModelNode writeOp = SubsystemOperations.createWriteAttributeOperation(address, attribute, value);
executeOperation(kernelServices, writeOp);
// Create the read operation
final ModelNode readOp = SubsystemOperations.createReadAttributeOperation(address, attribute);
final ModelNode result = executeOperation(kernelServices, readOp);
assertEquals(value, SubsystemOperations.readResult(result).asBoolean());
}
protected void testWrite(final KernelServices kernelServices, final ModelNode address, final AttributeDefinition attribute, final int value) {
final ModelNode writeOp = SubsystemOperations.createWriteAttributeOperation(address, attribute, value);
executeOperation(kernelServices, writeOp);
// Create the read operation
final ModelNode readOp = SubsystemOperations.createReadAttributeOperation(address, attribute);
final ModelNode result = executeOperation(kernelServices, readOp);
assertEquals(value, SubsystemOperations.readResult(result).asInt());
}
protected void testWrite(final KernelServices kernelServices, final ModelNode address, final AttributeDefinition attribute, final ModelNode value) {
final ModelNode writeOp = SubsystemOperations.createWriteAttributeOperation(address, attribute, value);
executeOperation(kernelServices, writeOp);
// Create the read operation
final ModelNode readOp = SubsystemOperations.createReadAttributeOperation(address, attribute);
final ModelNode result = executeOperation(kernelServices, readOp);
assertEquals(value, SubsystemOperations.readResult(result));
}
protected void testUndefine(final KernelServices kernelServices, final ModelNode address, final AttributeDefinition attribute) {
final ModelNode undefineOp = SubsystemOperations.createUndefineAttributeOperation(address, attribute);
executeOperation(kernelServices, undefineOp);
// Create the read operation
final ModelNode readOp = SubsystemOperations.createReadAttributeOperation(address, attribute);
readOp.get("include-defaults").set(false);
final ModelNode result = executeOperation(kernelServices, readOp);
assertFalse("Attribute '" + attribute.getName() + "' was not undefined.", SubsystemOperations.readResult(result)
.isDefined());
}
protected void verifyRemoved(final KernelServices kernelServices, final ModelNode address) {
final ModelNode op = SubsystemOperations.createReadResourceOperation(address);
final ModelNode result = kernelServices.executeOperation(op);
assertFalse("Resource not removed: " + address, SubsystemOperations.isSuccessfulOutcome(result));
}
protected ModelNode executeOperation(final KernelServices kernelServices, final ModelNode op) {
final ModelNode result = kernelServices.executeOperation(op);
assertTrue(SubsystemOperations.getFailureDescriptionAsString(result), SubsystemOperations.isSuccessfulOutcome(result));
return result;
}
protected ModelNode executeOperationForFailure(final KernelServices kernelServices, final ModelNode op) {
final ModelNode result = kernelServices.executeOperation(op);
assertFalse("Operation was expected to fail: " + op, SubsystemOperations.isSuccessfulOutcome(result));
return result;
}
protected ModelNode createFileValue(final String relativeTo, final String path) {
final ModelNode file = new ModelNode().setEmptyObject();
if (relativeTo != null) {
file.get(PathResourceDefinition.RELATIVE_TO.getName()).set(relativeTo);
}
file.get(PathResourceDefinition.PATH.getName()).set(path);
return file;
}
static void verifyFile(final String filename) {
final File logFile = new File(logDir, filename);
assertTrue("Log file was not found", logFile.exists());
}
static void removeFile(final String filename) {
final File logFile = new File(logDir, filename);
assertTrue("Log file was not deleted", logFile.delete());
}
}