package peal.impl; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Objects; import javax.xml.namespace.QName; import betsy.common.tasks.WaitTasks; import org.junit.Test; import peal.DeploymentException; import peal.ProcessLanguage; import peal.ProcessModelService; import peal.helper.ZipFileHelper; import peal.identifier.EngineId; import peal.identifier.ProcessModelId; import peal.impl.engine.EngineServiceImpl; import peal.impl.processmodel.ProcessModelServiceImpl; import peal.observer.EngineState; import peal.observer.ProcessModelState; import peal.packages.DeploymentPackage; import static org.junit.Assert.assertEquals; public class AbstractEngineServiceImplBpelEnginesTest extends AbstractEngineServiceCleanup { public static final Path SEQUENCE_FOLDER = Paths.get("src/test/resources/Sequence"); private final EngineId engineId; private final ProcessModelId processModelId; EngineServiceImpl engineService = new EngineServiceImpl(); ProcessModelService processModelService = new ProcessModelServiceImpl(engineService); public AbstractEngineServiceImplBpelEnginesTest(EngineId engineId) { this.engineId = Objects.requireNonNull(engineId); this.processModelId = new ProcessModelId(engineId.getEngineId(), new QName("http://dsg.wiai.uniba.de/betsy/activities/bpel/sequence", "Sequence")); } @Test public void testAll() throws IOException, DeploymentException { if (engineService.getSupportedLanguage(engineId) != ProcessLanguage.BPEL) { return; } assertState(ProcessModelState.NOT_DEPLOYED); assertState(EngineState.NOT_INSTALLED); engineService.install(engineId); assertState(ProcessModelState.NOT_DEPLOYED); assertState(EngineState.INSTALLED); engineService.start(engineId); WaitTasks.sleep(2000); assertState(ProcessModelState.NOT_DEPLOYED); assertState(EngineState.STARTED); DeploymentPackage deployableBpelPackage = processModelService.makeDeployable(engineId, ZipFileHelper.zipToProcessModelPackage(ZipFileHelper.buildFromFolder(SEQUENCE_FOLDER))); System.out.println("FILE EXTENSION: " + deployableBpelPackage.fileExtension); assertState(ProcessModelState.NOT_DEPLOYED); assertState(EngineState.STARTED); ProcessModelId processModelId = processModelService.deploy(engineId, deployableBpelPackage); assertState(ProcessModelState.DEPLOYED); assertState(EngineState.STARTED); WaitTasks.sleep(5000); WSTester.assertCorrectWorkingProcess(getUrlForProcessId(processModelId)); assertState(ProcessModelState.DEPLOYED); assertState(EngineState.STARTED); processModelService.undeploy(processModelId); assertState(ProcessModelState.NOT_DEPLOYED); assertState(EngineState.STARTED); engineService.stop(engineId); WaitTasks.sleep(5000); assertState(EngineState.INSTALLED); assertState(ProcessModelState.NOT_DEPLOYED); engineService.uninstall(engineId); assertState(EngineState.NOT_INSTALLED); assertState(ProcessModelState.NOT_DEPLOYED); } private void assertState(EngineState engineState) { assertEquals(engineState, engineService.getState(engineId)); } private void assertState(ProcessModelState engineState) { assertEquals(engineState, processModelService.getState(processModelId)); } private URL getUrlForProcessId(ProcessModelId processModelId) throws MalformedURLException { return new URL(new EngineServiceImpl().getEngineByID(processModelId.toEngineId()).getEndpointUrl(processModelId.getProcessId().getLocalPart())); } @Override public EngineId getEngineId() { return engineId; } }