/* * JBoss, Home of Professional Open Source * Copyright 2006, Red Hat Middleware LLC, and individual contributors * by the @authors tag. See the copyright.txt 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.test.deployers; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Set; import javax.management.MBeanServerConnection; import org.jboss.deployers.structure.spi.DeploymentUnit; import org.jboss.deployment.MainDeployerMBean; import org.jboss.test.JBossTestCase; /** * Abstract deployment test. * * @author <a href="adrian@jboss.com">Adrian Brock</a> * @author Scott.Stark@jboss.org * @version $Revision: 77242 $ */ @Deprecated public class OldAbstractDeploymentTest extends JBossTestCase { public static final String ear1Deployment = "testdeployers-ear1.ear"; public static final String earAltDDDeployment = "testdeployers-ear-altdd.ear"; public static final String earAltDDClientDeployment = "testdeployers-ear-altdd-client.ear"; public static final String earAltDDConnectorDeployment = "testdeployers-ear-altdd-connector.ear"; public static final String ear1DeploymentUnpacked = "unpacked-ear1.ear"; public static final String ear2DeploymentUnpacked = "unpacked-ear2.ear"; public static final String earNoAppXml = "testdeployers-ear-noappxml.ear"; public static final String bean1Deployment = "testdeployers-bean1ejb.jar"; public static final String bean1DeploymentUnpacked = "unpacked-bean1ejb.jar"; public static final String notBean1Deployment = "bean1ejb-not.ajar"; public static final String notBean1DeploymentUnpacked = "unpacked-bean1ejb-not.ajar"; public static final String web1Deployment = "testdeployers-web1.war"; public static final String web1DeploymentUnpacked = "unpacked-web1.war"; public static final String notWeb1Deployment = "web1-not.awar"; public static final String notWeb1DeploymentUnpacked = "unpacked-web1-not.awar"; public static final String rar1Deployment = "testdeployers-mcf1.rar"; public static final String rarInvalidDeployment = "testdeployers-invalidmcf.rar"; public static final String rar1DeploymentUnpacked = "unpacked-mcf1.rar"; public static final String notRar1Deployment = "mcf1-not.arar"; public static final String notRar1DeploymentUnpacked = "unpacked-mcf1-not.arar"; public static final String rarjar1Deployment = "testdeployers-mcf1.jar"; public static final String client1Deployment = "testdeployers-client1.jar"; public static final String client1DeploymentUnpacked = "unpacked-client1.jar"; public static final String notClient1Deployment = "client1-not.ajar"; public static final String notClient1DeploymentUnpacked = "unpacked-client1-not.ajar"; public static final String ds1Deployment = "testdeployers-mcf1-ds.xml"; public static final String ds1DeploymentUnpacked = "unpacked-mcf1-ds.xml"; public static final String ds1DeploymentUnpacked2 = "unpacked2-mcf1-ds.xml"; public static final String service1Deployment = "testdeployers-1-service.xml"; public static final String sar1Deployment = "testdeployers-mbean1.sar"; public static final String sar1DeploymentUnpacked = "unpacked-mbean1.sar"; public static final String notSar1Deployment = "mbean1-not.asar"; public static final String notSar1DeploymentUnpacked = "unpacked-mbean1-not.asar"; protected <T> T invokeMainDeployer(String methodName, Object[] args, String[] sig, Class<T> clazz) throws Exception { if (clazz == null) throw new IllegalArgumentException("Null class."); MBeanServerConnection server = getServer(); Object result = server.invoke(MainDeployerMBean.OBJECT_NAME, methodName, args, sig); return clazz.cast(result); } protected DeploymentUnit assertDeployed(String deployment) throws Exception { DeploymentUnit result = getDeploymentUnit(deployment); assertNotNull("Unable to retrieve deployment info for " + deployment, result); return result; } protected void assertDeployed(String deployment, Set expected) throws Exception { DeploymentUnit topInfo = assertDeployed(deployment); CheckExpectedDeploymentInfoVisitor visitor = new CheckExpectedDeploymentInfoVisitor(expected); visitor.start(topInfo); assertTrue("Expected subdeployments: " + expected, expected.isEmpty()); } @Deprecated protected void assertNotDeployed(String deployment) throws Exception { DeploymentUnit result = getDeploymentUnit(deployment); assertNull("Should not be deployed " + result, result); } protected DeploymentUnit getDeploymentUnit(String deployment) throws Exception { URL deployURL = getDeployURL(deployment); String[] sig = { URL.class.getName() }; Object[] args = {deployURL}; return invokeMainDeployer("getDeploymentUnit", args, sig, DeploymentUnit.class); } protected boolean isDeployed(String deployment) throws Exception { URL deployURL = getDeployURL(deployment); String[] sig = { URL.class.getName() }; Object[] args = {deployURL}; return invokeMainDeployer("isDeployed", args, sig, Boolean.class); } protected void assertNoChildContexts(String deployment) throws Exception { DeploymentUnit unit = getDeploymentUnit(deployment); assertChildContexts(unit); } protected void assertChildContexts(String deployment, String... paths) throws Exception { DeploymentUnit unit = getDeploymentUnit(deployment); assertChildContexts(unit, paths); } protected void assertChildContexts(DeploymentUnit unit, String... paths) { List<String> expected = new ArrayList<String>(); if (paths != null) { for (String path : paths) expected.add(path); } List<DeploymentUnit> children = unit.getChildren(); assertNotNull(children); assertEquals("Expected " + expected + " got " + simplePrint(children), expected.size(), children.size()); for (String path : expected) { boolean found = false; for (DeploymentUnit child : children) { if (path.equals(child.getRelativePath())) found = true; } if (found == false) fail("Expected " + path + " in " + children); } } protected static String simplePrint(List<DeploymentUnit> children) { StringBuilder builder = new StringBuilder(); boolean first = false; builder.append("["); for (DeploymentUnit child : children) { if (first == false) first = true; else builder.append(", "); builder.append(child.getRelativePath()); } builder.append("]"); return builder.toString(); } public OldAbstractDeploymentTest(String test) { super(test); } public static class DeploymentInfoVisitor { public void start(DeploymentUnit topLevel) { doVisit(topLevel); } protected void doVisit(DeploymentUnit info) { visit(info); List<DeploymentUnit> subDeployments = info.getChildren(); if (subDeployments == null || subDeployments.size() == 0) return; for (DeploymentUnit child : subDeployments) { doVisit(child); } } public void visit(DeploymentUnit info) { } } public class CheckExpectedDeploymentInfoVisitor extends DeploymentInfoVisitor { protected Set expected; public CheckExpectedDeploymentInfoVisitor(Set expected) { this.expected = expected; } public void visit(DeploymentUnit info) { String shortName = shortNameFromDeploymentName(info.getName()); log.info("Found deployment " + shortName); boolean found = expected.remove(shortName); if (found == false) fail(shortName + " not expected, or duplicate?"); else { boolean deployed; try { deployed = isDeployed(info.getName()); } catch (Exception e) { throw new RuntimeException(e); } assertTrue("Should be fully deployed: " + shortName, deployed); } } } /** * A utility method that takes a deployment unit name and strips it down to the base war * name without the .war suffix. * @param name - the DeploymentUnit name. * @return the short name */ public static String shortNameFromDeploymentName(String name) { String shortName = name.trim(); String[] parts = name.split("/|!"); if( parts.length > 1 ) { shortName = parts[parts.length-1]; } return shortName; } }