/*
* JBoss, Home of Professional Open Source
* Copyright 2009-11, Red Hat Middleware LLC, and others contributors as indicated
* by the @authors tag. All rights reserved.
* See the copyright.txt in the distribution for a
* full listing of individual contributors.
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions
* of the GNU Lesser General Public License, v. 2.1.
* This program is distributed in the hope that it will be useful, but WITHOUT A
* 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,
* v.2.1 along with this distribution; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
package org.riftsaw.engine.internal;
import static org.junit.Assert.*;
import org.apache.ode.utils.DOMUtils;
import org.junit.Test;
import org.riftsaw.engine.DeploymentUnit;
import org.riftsaw.engine.internal.DeploymentManager;
public class DeploymentManagerTest {
@Test
public void testGetDeploymentName_NoVersionSimpleNames() {
java.io.File f=new java.io.File("MyProcess.bpel");
String deploymentName=DeploymentManager.getDeploymentUnitName("MyDeployment", f);
if (!deploymentName.equals("MyDeployment_MyProcess-0")) {
fail("Incorrect deployment name");
}
}
@Test
public void testGetDeploymentName_NoVersionHyphenNames() {
java.io.File f=new java.io.File("MyProcess-With-Hyphens.bpel");
String deploymentName=DeploymentManager.getDeploymentUnitName("MyDeployment-With-Hyphens", f);
if (!deploymentName.equals("MyDeployment-With-Hyphens_MyProcess-With-Hyphens-0")) {
fail("Incorrect deployment name");
}
}
@Test
public void testGetDeploymentName_WithVersionHyphenNames() {
java.io.File f=new java.io.File("MyProcess-With-Hyphens-123.bpel");
String deploymentName=DeploymentManager.getDeploymentUnitName("MyDeployment-With-Hyphens-5", f);
if (!deploymentName.equals("MyDeployment-With-Hyphens-5_MyProcess-With-Hyphens-123")) {
fail("Incorrect deployment name");
}
}
@Test
public void testGetDeploymentUnitsExplodedSingle() {
java.net.URL root=ClassLoader.getSystemResource("deployments/exploded/single/deploy.xml");
java.io.File deploymentRoot=new java.io.File(root.getFile()).getParentFile();
DeploymentManager dm=new DeploymentManager();
dm.setDeploymentFolder(deploymentRoot.getParentFile().getParent()+
java.io.File.separatorChar+"tmp");
try {
java.util.List<DeploymentUnit> dus=dm.getDeploymentUnits("test", deploymentRoot);
if (dus.size() != 1) {
fail("Expecting 1 deployment unit, but got: "+dus.size());
}
DeploymentUnit du=dus.get(0);
if (!du.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
validateDescriptor(du.getDeploymentDescriptor(), "bpl:MyProcess");
if (du.getDeploymentDescriptor().getParentFile().listFiles().length != 3) {
fail("Deployment should contains 3 files");
}
if (!new java.io.File(du.getDeploymentDescriptor().getParentFile(), "MyProcess.bpel").exists()) {
fail("MyProcess.bpel does not exist");
}
if (!new java.io.File(du.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception: "+e);
}
}
@Test
public void testGetDeploymentUnitsExplodedSingleVersioned() {
java.net.URL root=ClassLoader.getSystemResource("deployments/exploded/single_versioned/deploy.xml");
java.io.File deploymentRoot=new java.io.File(root.getFile()).getParentFile();
DeploymentManager dm=new DeploymentManager();
dm.setDeploymentFolder(deploymentRoot.getParentFile().getParent()+
java.io.File.separatorChar+"tmp");
try {
java.util.List<DeploymentUnit> dus=dm.getDeploymentUnits("test", deploymentRoot);
if (dus.size() != 1) {
fail("Expecting 1 deployment unit, but got: "+dus.size());
}
DeploymentUnit du=dus.get(0);
if (!du.getVersion().equals("2")) {
fail("Version was not 2: "+du.getVersion());
}
if (!du.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
validateDescriptor(du.getDeploymentDescriptor(), "bpl:MyProcess");
if (du.getDeploymentDescriptor().getParentFile().listFiles().length != 3) {
fail("Deployment should contains 3 files");
}
if (!new java.io.File(du.getDeploymentDescriptor().getParentFile(), "MyProcess-2.bpel").exists()) {
fail("MyProcess-2.bpel does not exist");
}
if (!new java.io.File(du.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception: "+e);
}
}
@Test
public void testGetDeploymentUnitsArchivedSingle() {
java.net.URL root=ClassLoader.getSystemResource("deployments/archived/single.jar");
java.io.File deploymentRoot=new java.io.File(root.getFile());
DeploymentManager dm=new DeploymentManager();
dm.setDeploymentFolder(deploymentRoot.getParentFile().getParent()+
java.io.File.separatorChar+"tmp");
try {
java.util.List<DeploymentUnit> dus=dm.getDeploymentUnits("test", deploymentRoot);
if (dus.size() != 1) {
fail("Expecting 1 deployment unit, but got: "+dus.size());
}
DeploymentUnit du=dus.get(0);
if (!du.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
if (du.getDeploymentDescriptor().getParentFile().listFiles().length != 3) {
fail("Deployment should contains 3 files");
}
if (!new java.io.File(du.getDeploymentDescriptor().getParentFile(), "MyProcess.bpel").exists()) {
fail("MyProcess.bpel does not exist");
}
if (!new java.io.File(du.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception: "+e);
}
}
@Test
public void testGetDeploymentUnitsArchivedSingleVersioned() {
java.net.URL root=ClassLoader.getSystemResource("deployments/archived/single_versioned.jar");
java.io.File deploymentRoot=new java.io.File(root.getFile());
DeploymentManager dm=new DeploymentManager();
dm.setDeploymentFolder(deploymentRoot.getParentFile().getParent()+
java.io.File.separatorChar+"tmp");
try {
java.util.List<DeploymentUnit> dus=dm.getDeploymentUnits("test", deploymentRoot);
if (dus.size() != 1) {
fail("Expecting 1 deployment unit, but got: "+dus.size());
}
DeploymentUnit du=dus.get(0);
if (!du.getVersion().equals("2")) {
fail("Version was not 2: "+du.getVersion());
}
if (!du.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
if (du.getDeploymentDescriptor().getParentFile().listFiles().length != 3) {
fail("Deployment should contains 3 files");
}
if (!new java.io.File(du.getDeploymentDescriptor().getParentFile(), "MyProcess-2.bpel").exists()) {
fail("MyProcess-2.bpel does not exist");
}
if (!new java.io.File(du.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception: "+e);
}
}
@Test
public void testGetDeploymentUnitsExplodedMultiple() {
java.net.URL root=ClassLoader.getSystemResource("deployments/exploded/multiple/deploy.xml");
java.io.File deploymentRoot=new java.io.File(root.getFile()).getParentFile();
DeploymentManager dm=new DeploymentManager();
dm.setDeploymentFolder(deploymentRoot.getParentFile().getParent()+
java.io.File.separatorChar+"tmp");
try {
java.util.List<DeploymentUnit> dus=dm.getDeploymentUnits("test", deploymentRoot);
if (dus.size() != 2) {
fail("Expecting 2 deployment units, but got: "+dus.size());
}
DeploymentUnit du1=dus.get(0);
DeploymentUnit du2=dus.get(1);
if (!du1.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
validateDescriptor(du1.getDeploymentDescriptor(), "bpl:MyOtherProcess");
if (du1.getDeploymentDescriptor().getParentFile().listFiles().length != 4) {
fail("Deployment should contains 4 files");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.bpel").exists()) {
fail("MyOtherProcess.bpel does not exist");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.wsdl").exists()) {
fail("MyOtherProcess.wsdl does not exist");
}
if (!du2.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
validateDescriptor(du2.getDeploymentDescriptor(), "bpl:MyProcess");
if (du2.getDeploymentDescriptor().getParentFile().listFiles().length != 4) {
fail("Deployment should contains 4 files");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyProcess.bpel").exists()) {
fail("MyProcess.bpel does not exist");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.wsdl").exists()) {
fail("MyOtherProcess.wsdl does not exist");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception: "+e);
}
}
@Test
public void testGetDeploymentUnitsExplodedMultipleVersioned() {
java.net.URL root=ClassLoader.getSystemResource("deployments/exploded/multiple_versioned/deploy.xml");
java.io.File deploymentRoot=new java.io.File(root.getFile()).getParentFile();
DeploymentManager dm=new DeploymentManager();
dm.setDeploymentFolder(deploymentRoot.getParentFile().getParent()+
java.io.File.separatorChar+"tmp");
try {
java.util.List<DeploymentUnit> dus=dm.getDeploymentUnits("test", deploymentRoot);
if (dus.size() != 2) {
fail("Expecting 2 deployment units, but got: "+dus.size());
}
DeploymentUnit du1=dus.get(0);
DeploymentUnit du2=dus.get(1);
if (!du1.getVersion().equals("3")) {
fail("Version of MyOtherProcess was not 3: "+du1.getVersion());
}
if (!du1.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
validateDescriptor(du1.getDeploymentDescriptor(), "bpl:MyOtherProcess");
if (du1.getDeploymentDescriptor().getParentFile().listFiles().length != 4) {
fail("Deployment should contains 4 files");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyOtherProcess-3.bpel").exists()) {
fail("MyOtherProcess.bpel does not exist");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.wsdl").exists()) {
fail("MyOtherProcess.wsdl does not exist");
}
if (!du2.getVersion().equals("4")) {
fail("Version of MyProcess was not 4: "+du2.getVersion());
}
if (!du2.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
validateDescriptor(du2.getDeploymentDescriptor(), "bpl:MyProcess");
if (du2.getDeploymentDescriptor().getParentFile().listFiles().length != 4) {
fail("Deployment should contains 4 files");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyProcess-4.bpel").exists()) {
fail("MyProcess.bpel does not exist");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.wsdl").exists()) {
fail("MyOtherProcess.wsdl does not exist");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception: "+e);
}
}
@Test
public void testGetDeploymentUnitsArchivedMultiple() {
java.net.URL root=ClassLoader.getSystemResource("deployments/archived/multiple.jar");
java.io.File deploymentRoot=new java.io.File(root.getFile());
DeploymentManager dm=new DeploymentManager();
dm.setDeploymentFolder(deploymentRoot.getParentFile().getParent()+
java.io.File.separatorChar+"tmp");
try {
java.util.List<DeploymentUnit> dus=dm.getDeploymentUnits("test", deploymentRoot);
if (dus.size() != 2) {
fail("Expecting 2 deployment units, but got: "+dus.size());
}
DeploymentUnit du1=dus.get(0);
DeploymentUnit du2=dus.get(1);
if (!du1.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
if (du1.getDeploymentDescriptor().getParentFile().listFiles().length != 4) {
fail("Deployment should contains 4 files");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.bpel").exists()) {
fail("MyOtherProcess.bpel does not exist");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.wsdl").exists()) {
fail("MyOtherProcess.wsdl does not exist");
}
if (!du2.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
if (du2.getDeploymentDescriptor().getParentFile().listFiles().length != 4) {
fail("Deployment should contains 4 files");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyProcess.bpel").exists()) {
fail("MyProcess.bpel does not exist");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.wsdl").exists()) {
fail("MyOtherProcess.wsdl does not exist");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception: "+e);
}
}
@Test
public void testGetDeploymentUnitsArchivedMultipleVersioned() {
java.net.URL root=ClassLoader.getSystemResource("deployments/archived/multiple_versioned.jar");
java.io.File deploymentRoot=new java.io.File(root.getFile());
DeploymentManager dm=new DeploymentManager();
dm.setDeploymentFolder(deploymentRoot.getParentFile().getParent()+
java.io.File.separatorChar+"tmp");
try {
java.util.List<DeploymentUnit> dus=dm.getDeploymentUnits("test", deploymentRoot);
if (dus.size() != 2) {
fail("Expecting 2 deployment units, but got: "+dus.size());
}
DeploymentUnit du1=dus.get(0);
DeploymentUnit du2=dus.get(1);
if (!du1.getVersion().equals("3")) {
fail("Version of MyOtherProcess was not 3: "+du1.getVersion());
}
if (!du1.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
if (du1.getDeploymentDescriptor().getParentFile().listFiles().length != 4) {
fail("Deployment should contains 4 files");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyOtherProcess-3.bpel").exists()) {
fail("MyOtherProcess.bpel does not exist");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
if (!new java.io.File(du1.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.wsdl").exists()) {
fail("MyOtherProcess.wsdl does not exist");
}
if (!du2.getVersion().equals("4")) {
fail("Version of MyProcess was not 4: "+du2.getVersion());
}
if (!du2.getDeploymentDescriptor().exists()) {
fail("Deployment descriptor does not exist");
}
if (du2.getDeploymentDescriptor().getParentFile().listFiles().length != 4) {
fail("Deployment should contains 4 files");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyProcess-4.bpel").exists()) {
fail("MyProcess.bpel does not exist");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyProcess.wsdl").exists()) {
fail("MyProcess.wsdl does not exist");
}
if (!new java.io.File(du2.getDeploymentDescriptor().getParentFile(), "MyOtherProcess.wsdl").exists()) {
fail("MyOtherProcess.wsdl does not exist");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception: "+e);
}
}
protected void validateDescriptor(java.io.File descriptor, String process) throws Exception {
java.io.InputStream is=new java.io.FileInputStream(descriptor);
byte[] b=new byte[is.available()];
is.read(b);
is.close();
org.w3c.dom.Element deploy=DOMUtils.stringToDOM(b);
// Check only 1 process child element
org.w3c.dom.NodeList nl=deploy.getElementsByTagName("process");
if (nl.getLength() != 1) {
fail("Only 1 process element expected: "+nl.getLength());
}
if (!(nl.item(0) instanceof org.w3c.dom.Element)) {
fail("Node is not an element");
}
org.w3c.dom.Element procElem=(org.w3c.dom.Element)nl.item(0);
if (!procElem.getAttribute("name").equals(process)) {
fail("Process 'name' is not '"+process+"': "+procElem.getAttribute("name"));
}
}
}