/*
* JBoss, Home of Professional Open Source.
* Copyright 2008, Red Hat Middleware LLC, 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.test.jmx.test;
import javax.management.ObjectName;
import org.jboss.test.JBossTestCase;
import org.jboss.test.JBossTestServices;
import org.jboss.deployers.spi.DeploymentException;
/**
* @see <related>
* @author <a href="mailto:d_jencks@users.sourceforge.net">David Jencks</a>
* @version $Revision: 81036 $
*/
public class MBeanDependsOnEJBUnitTestCase
extends JBossTestCase
{
// Constants -----------------------------------------------------
protected final static int INSTALLED = 0;
protected final static int CONFIGURED = 1;
protected final static int CREATED = 2;
protected final static int RUNNING = 3;
protected final static int FAILED = 4;
protected final static int STOPPED = 5;
protected final static int DESTROYED = 6;
protected final static int NOTYETINSTALLED = 7;
// Attributes ----------------------------------------------------
ObjectName serviceControllerName;
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
/**
* Constructor for the DeployServiceUnitTestCase object
*
* @param name Test case name
*/
public MBeanDependsOnEJBUnitTestCase(String name)
{
super(name);
try
{
serviceControllerName = new ObjectName("jboss.system:service=ServiceController");
}
catch (Exception e)
{
} // end of try-catch
}
// Public --------------------------------------------------------
/**
* <code>testMBeanDependsOnEJB</code> tests that an mbean can depend
* on an ejb. All classes are loaded, the mbean is deployed, checked
* that it has not started, then the ejb is deployed, and the mbean
* is checked that it has started.
*
* @exception Exception if an error occurs
*/
public void testMBeanDependsOnEJB() throws Exception
{
String mBeancodeUrl = "testdeploy.sar";
String mBeanUrl = "testmbeandependsOnEjb-service.xml";
//random choice of ejb...
String ejbUrl = "jmxtest.jar";
getLog().debug("testUrls are : " + mBeanUrl + ", " + ejbUrl);
ObjectName objectNameMBean = new ObjectName("test:name=TestMBeanDependsOnEjb");
ObjectName objectNameEJB = new ObjectName("jboss.j2ee:service=EJB,name=test/TestDataSource");
try
{
//deploy jar
deploy(mBeancodeUrl);
try
{
deploy(mBeanUrl);
// FIXME
// get deployer to throw an DeploymentException
invoke(new ObjectName(JBossTestServices.DEPLOYER_NAME),
"checkIncompleteDeployments",
new Object[]{},
new String[]{}
);
fail("suceeded in deploying mbean with unsatisfied dependency!");
}
catch (DeploymentException e)
{
//This is what we expect
} // end of try-catch
//Double check state
assertTrue("MBean started!", !((String)getServer().getAttribute(objectNameMBean, "StateString")).equals("Started"));
try
{
deploy(ejbUrl);
assertTrue("MBean not started!", ((String)getServer().getAttribute(objectNameMBean, "StateString")).equals("Started"));
}
finally
{
undeploy(ejbUrl);
assertTrue("MBean started!", !((String)getServer().getAttribute(objectNameMBean, "StateString")).equals("Started"));
} // end of try-catch
}
finally
{
undeploy(mBeanUrl);
undeploy(mBeancodeUrl);
} // end of try-catch
}
}