package org.jboss.as.test.patching;
import static org.jboss.as.patching.IoUtils.mkdir;
import static org.jboss.as.test.patching.PatchingTestUtil.BASE_MODULE_DIRECTORY;
import static org.jboss.as.test.patching.PatchingTestUtil.DO_CLEANUP;
import static org.jboss.as.test.patching.PatchingTestUtil.MODULES_PATH;
import static org.jboss.as.test.patching.PatchingTestUtil.assertPatchElements;
import static org.jboss.as.test.patching.PatchingTestUtil.randomString;
import java.io.File;
import java.io.IOException;
import javax.inject.Inject;
import org.jboss.as.patching.IoUtils;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.wildfly.core.testrunner.ServerController;
/**
* @author Martin Simka
*/
public class AbstractPatchingTestCase {
protected File tempDir;
@Inject
protected ServerController controller;
@Before
public void prepareForAll() throws IOException {
tempDir = mkdir(new File(System.getProperty("java.io.tmpdir")), randomString());
}
@After
public void cleanupForAll() throws Exception {
if (controller.isStarted()) { controller.stop(); }
// clean up created temporary files and directories
if (DO_CLEANUP) {
if (IoUtils.recursiveDelete(tempDir)) {
tempDir.deleteOnExit();
}
}
rollbackAllPatches();
}
protected void rollbackAllPatches() throws Exception {
// rollback all installed patches
final boolean success = CliUtilsForPatching.rollbackAll();
boolean ok = false;
try {
if (!success) {
Assert.fail("failed to rollback all patches " + CliUtilsForPatching.info(false));
}
assertPatchElements(new File(MODULES_PATH), null);
ok = true;
} finally {
if (!ok) {
PatchingTestUtil.resetInstallationState(new File(PatchingTestUtil.AS_DISTRIBUTION), BASE_MODULE_DIRECTORY);
} else {
PatchingTestUtil.resetPatchStreams(new File(PatchingTestUtil.AS_DISTRIBUTION));
}
}
}
}