User: d_jencks
Date: 01/09/08 09:57:05
Modified: src/main/org/jboss/test/jmx/test
TestConnectionFactoryLoader.java
Added: src/main/org/jboss/test/jmx/test TestDeployService.java
Log:
Added tests for sar deployment, *-service.xml deployment, sar dependency management,
and recursive .sar deployment
Revision Changes Path
1.4 +14 -7
jbosstest/src/main/org/jboss/test/jmx/test/TestConnectionFactoryLoader.java
Index: TestConnectionFactoryLoader.java
===================================================================
RCS file:
/cvsroot/jboss/jbosstest/src/main/org/jboss/test/jmx/test/TestConnectionFactoryLoader.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestConnectionFactoryLoader.java 2001/09/07 10:26:43 1.3
+++ TestConnectionFactoryLoader.java 2001/09/08 16:57:05 1.4
@@ -38,8 +38,8 @@
/**
*
* @see <related>
- * @author $Author: kimptoc $
- * @version $Revision: 1.3 $
+ * @author $Author: d_jencks $
+ * @version $Revision: 1.4 $
*/
public class TestConnectionFactoryLoader
extends TestCase
@@ -81,12 +81,18 @@
assertTrue("Server was not found", server != null);
}
- public void testAddRemoveConnectionFactory() throws Exception {
+ public void xtestAddRemoveConnectionFactory() throws Exception {
//the mbean we are trying to deploy/undeploy
ObjectName connectionFactoryLoaderName = new
ObjectName("Test:service=ConnectionFactoryLoader,name=TestDS");
+ //try to remove mbean if leftover...
+ if (server.isRegistered(connectionFactoryLoaderName))
+ {
+ server.unregisterMBean(connectionFactoryLoaderName);
+ }
+
//check it isn't there already
assertTrue("test mbean already registered",
!server.isRegistered(connectionFactoryLoaderName));
//try to create the connection factory loader.
@@ -98,19 +104,20 @@
assertTrue("test mbean not registered",
server.isRegistered(connectionFactoryLoaderName));
AttributeList al = new AttributeList();
- al.add(new Attribute("FactoryName", "ConnectionFactoryLoaderTestDS"));
+ al.add(new Attribute("JndiName", "ConnectionFactoryLoaderTestDS"));
al.add(new Attribute("RARDeployerName", "JCA:service=RARDeployer"));
al.add(new Attribute("ResourceAdapterName", "Minerva JDBC LocalTransaction
ResourceAdapter"));
- al.add(new Attribute("Properties",
"ConnectionURL=jdbc:HypersonicSQL:hsql://localhost:1476"));
+ al.add(new Attribute("ManagedConnectionFactoryProperties",
"ConnectionURL=jdbc:HypersonicSQL:hsql://localhost:1476\n"
+ + " DriverClass=org.hsql.jdbcDriver"));
al.add(new Attribute("ConnectionManagerFactoryName",
"MinervaSharedLocalCMFactory"));
al.add(new Attribute("ConnectionManagerProperties", "MinSize=0\n"
+ " MaxSize=10\n"
+ " Blocking=true\n"
- + " GCEnabled=false\n"
+ + " CleanupEnabled=false\n"
+ " IdleTimeoutEnabled=false\n"
+ " InvalidateOnError=false\n"
+ " TrackLastUsed=false\n"
- + " GCIntervalMillis=120000\n"
+ + " CleanupIntervalMillis=120000\n"
+ " GCMinIdleMillis=1200000\n"
+ " IdleTimeoutMillis=1800000\n"
+ " MaxIdleTimeoutPercent=1.0"));
1.1
jbosstest/src/main/org/jboss/test/jmx/test/TestDeployService.java
Index: TestDeployService.java
===================================================================
/*
* JBoss, the OpenSource EJB server
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.test.jmx.test;
import java.net.InetAddress;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import javax.management.MalformedObjectNameException;
import javax.management.MBeanRegistrationException;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.RuntimeMBeanException;
import javax.management.ReflectionException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
//import org.jboss.jmx.interfaces.JMXAdaptor;
import org.jboss.jmx.interfaces.RMIConnector;
import org.jboss.jmx.interfaces.RMINotificationListener;
import junit.framework.*;
/**
*
* @see <related>
* @author $Author: d_jencks $
* @version $Revision: 1.1 $
*/
public class TestDeployService
extends TestCase
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
private ObjectName serviceDeployerName;
protected RMIConnector server;
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
public TestDeployService(String name) throws MalformedObjectNameException
{
super(name);
serviceDeployerName = new ObjectName("JBOSS-SYSTEM:service=ServiceDeployer");
}
// Public --------------------------------------------------------
/**
* Setup the test suite.
*/
public static Test suite() {
TestSuite suite = new TestSuite(TestDeployService.class);
return suite;
}
public void setUp() throws Exception {
String serverName = InetAddress.getLocalHost().getHostName();
server = (RMIConnector) new InitialContext().lookup("jmx:" + serverName +
":rmi");
}
public void tearDown() throws Exception {
server = null;
}
public void testServerFound() throws Exception {
assertTrue("Server was not found", server != null);
}
public void testDeployXML() throws Exception {
// The class loader used to locate the configuration file
ClassLoader loader = Thread.currentThread().getContextClassLoader();
assertTrue("ContextClassloader missing", loader != null);
//Get URL for deployable *service.xml file in resources
URL url = loader.getResource("jmx/test-service.xml");
if (url == null)
{
//if we're running from the jmxtest.jar, it should be here instead
url = loader.getResource("test-service.xml");
}
assertTrue("resource test-service.xml not found", url != null);
String testUrl = url.toString();
Object[] args = { testUrl };
String[] sig = { "java.lang.String" };
//the mbeans we are trying to deploy/undeploy
ObjectName testObjectName = new
ObjectName("TestDomain:service=ConnectionFactoryLoader,name=DeployTestDS");
//check they aren't there already
assertTrue("test mbean already registered before deploy",
!server.isRegistered(testObjectName));
//deploy the test xml doc.
server.invoke(serviceDeployerName, "deploy", args, sig);
//check deployment registered expected mbeans
assertTrue("test mbean not registered after deploy",
server.isRegistered(testObjectName));
//deploy the test xml doc again, should undeploy and redeploy.
server.invoke(serviceDeployerName, "deploy", args, sig);
//check deployment registered expected mbeans
assertTrue("test mbean not registered after redeploy",
server.isRegistered(testObjectName));
//undeploy test xml doc.
server.invoke(serviceDeployerName, "undeploy", args, sig);
//check they aren't there any more
assertTrue("test mbean still registered after undeploy",
!server.isRegistered(testObjectName));
}
public void testDeploySAR() throws Exception {
//Find the testdeploy.sar file in lib directory with other jars.
String testUrl = "file://" + getDeployFilename("testdeploy.sar");
System.out.println("testUrl is : " + testUrl);
Object[] args = { testUrl };
String[] sig = { "java.lang.String" };
//the mbeans we are trying to deploy/undeploy
ObjectName testObjectName = new ObjectName("test:name=TestDeployer");
ObjectName testObjectName2 = new ObjectName("test:name=TestDeployer2");
ObjectName testObjectName3 = new ObjectName("test:name=TestDeployer3");
//the classloader mbean
ObjectName classLoaderObjectName = new
ObjectName("JBOSS-SYSTEM:spine=ServiceClassLoader");
//check they aren't there already
assertTrue("test mbean already registered before deploy",
!server.isRegistered(testObjectName));
//deploy the test xml doc.
server.invoke(serviceDeployerName, "deploy", args, sig);
//check deployment registered expected mbeans
assertTrue("test mbean not registered after deploy",
server.isRegistered(testObjectName));
//make sure we can create an mbean based on the class we just deployed.
try
{
server.createMBean("org.jboss.test.jmx.mbean.TestDeployer",
testObjectName2, classLoaderObjectName);
}
catch (Exception e)
{
fail("could not create mbean after class loaded in jsr"+ e);
}
//now remove it again
try
{
server.unregisterMBean(testObjectName2);
}
catch (Exception e)
{
fail("could not remove mbean after class loaded in jsr"+ e);
}
//deploy the test xml doc again, should undeploy and redeploy.
server.invoke(serviceDeployerName, "deploy", args, sig);
//check deployment registered expected mbeans
assertTrue("test mbean not registered after redeploy",
server.isRegistered(testObjectName));
//undeploy test xml doc.
server.invoke(serviceDeployerName, "undeploy", args, sig);
//check they aren't there any more
assertTrue("test mbean still registered after undeploy",
!server.isRegistered(testObjectName));
//check the class is not available
try
{
ObjectInstance oe =
server.createMBean("org.jboss.test.jmx.mbean.TestDeployer", testObjectName3,
classLoaderObjectName);
fail("created mbean when class should not be present: object instance: " +
oe);
}
catch (ReflectionException re)
{
Exception e = re.getTargetException();
if (!(e instanceof ClassNotFoundException))
{
fail("Wrong exception thrown when trying to create mbean" + e);
}
}
//deploy the test xml doc a second time.
server.invoke(serviceDeployerName, "deploy", args, sig);
//check deployment registered expected mbeans
assertTrue("test mbean not registered after deploy",
server.isRegistered(testObjectName));
//undeploy test xml doc.
server.invoke(serviceDeployerName, "undeploy", args, sig);
//check they aren't there any more
assertTrue("test mbean still registered after undeploy",
!server.isRegistered(testObjectName));
}
public void testDeploySARDependencies() throws Exception {
//C depends on A and B
//Find the testdeploy[ABC].sar files in lib directory with other jars.
String testUrlA = "file:" + getDeployFilename("testdeploya.sar");
String testUrlB = "file:" + getDeployFilename("testdeployb.sar");
String testUrlC = "file:" + getDeployFilename("testdeployc.sar");
System.out.println("testUrlA is : " + testUrlA);
Object[] argsA = { testUrlA };
Object[] argsB = { testUrlB };
Object[] argsC = { testUrlC };
String[] sig = { "java.lang.String" };
//the mbeans we are trying to deploy/undeploy
ObjectName testObjectNameA = new ObjectName("test:name=TestDeployerA");
ObjectName testObjectNameB = new ObjectName("test:name=TestDeployerB");
ObjectName testObjectNameC = new ObjectName("test:name=TestDeployerC");
ObjectName testObjectName2 = new ObjectName("test:name=TestDeployer2");
ObjectName testObjectName3 = new ObjectName("test:name=TestDeployer3");
//the classloader mbean
ObjectName classLoaderObjectName = new
ObjectName("JBOSS-SYSTEM:spine=ServiceClassLoader");
try
{
//check they aren't there already
assertTrue("test mbean already registered before deploy",
!server.isRegistered(testObjectNameA));
assertTrue("test mbean already registered before deploy",
!server.isRegistered(testObjectNameB));
assertTrue("test mbean already registered before deploy",
!server.isRegistered(testObjectNameC));
//deploy the test jsrs.
server.invoke(serviceDeployerName, "deploy", argsA, sig);
server.invoke(serviceDeployerName, "deploy", argsB, sig);
server.invoke(serviceDeployerName, "deploy", argsC, sig);
//check deployment registered expected mbeans
assertTrue("test mbean A not registered after deploy",
server.isRegistered(testObjectNameA));
assertTrue("test mbean B not registered after deploy",
server.isRegistered(testObjectNameB));
assertTrue("test mbean C not registered after deploy",
server.isRegistered(testObjectNameC));
//we'll believe from testDeployJSR that the classes are available.
//deploy the test jsrs again, should undeploy and redeploy.
server.invoke(serviceDeployerName, "deploy", argsA, sig);
//check deployment registered expected mbeans
assertTrue("test mbean not registered after redeploy",
server.isRegistered(testObjectNameA));
assertTrue("test mbean not registered after redeploy",
server.isRegistered(testObjectNameB));
assertTrue("test mbean not registered after redeploy",
server.isRegistered(testObjectNameC));
//undeploy test xml doc.
server.invoke(serviceDeployerName, "undeploy", argsA, sig);
//check they aren't there any more
assertTrue("test mbean A still registered after undeploy of A",
!server.isRegistered(testObjectNameA));
assertTrue("test mbean C still registered after undeploy of A",
!server.isRegistered(testObjectNameC));
assertTrue("test mbean B unregistered after undeploy of A",
server.isRegistered(testObjectNameB));
//check the class for C is not available
try
{
ObjectInstance oe =
server.createMBean("org.jboss.test.jmx.mbean.TestDeployerC", testObjectName3,
classLoaderObjectName);
fail("created mbean when class should not be present: object instance: " +
oe);
}
catch (ReflectionException re)
{
Exception e = re.getTargetException();
if (!(e instanceof ClassNotFoundException))
{
fail("Wrong exception thrown when trying to create mbean" + e);
}
}
//Now undeploy B, should prevent redeploy of C when A is redeployed.
/*not working, skip for now
server.invoke(serviceDeployerName, "undeploy", argsB, sig);
assertTrue("test mbean B is registered after undeploy of B",
!server.isRegistered(testObjectNameB));
*/
//deploy the test jsr A doc a second time.
server.invoke(serviceDeployerName, "deploy", argsA, sig);
/*
//check deployment registered expected mbeans
assertTrue("test mbean A not registered after deploy of A",
server.isRegistered(testObjectNameA));
assertTrue("test mbean B is registered after deploy of A",
!server.isRegistered(testObjectNameB));
assertTrue("test mbean C is registered after deploy of A, with B
unregistered", !server.isRegistered(testObjectNameC));
*/
//now redeploy B, should also redeploy C
//server.invoke(serviceDeployerName, "deploy", argsB, sig);
//check deployment registered expected mbeans- all three should be registered
assertTrue("test mbean A not registered after deploy of B",
server.isRegistered(testObjectNameA));
assertTrue("test mbean B not registered after deploy of B",
server.isRegistered(testObjectNameB));
assertTrue("test mbean C not registered after deploy of B",
server.isRegistered(testObjectNameC));
//undeploy test xml doc.
server.invoke(serviceDeployerName, "undeploy", argsC, sig);
server.invoke(serviceDeployerName, "undeploy", argsA, sig);
server.invoke(serviceDeployerName, "undeploy", argsB, sig);
//check they aren't there any more
assertTrue("test mbean still registered after undeploy",
!server.isRegistered(testObjectNameA));
assertTrue("test mbean still registered after undeploy",
!server.isRegistered(testObjectNameB));
assertTrue("test mbean still registered after undeploy",
!server.isRegistered(testObjectNameC));
}
finally
{
server.invoke(serviceDeployerName, "undeploy", argsC, sig);
server.invoke(serviceDeployerName, "undeploy", argsA, sig);
server.invoke(serviceDeployerName, "undeploy", argsB, sig);
}
}
public void testRecursiveDeploySAR() throws Exception {
//C depends on A and B
//D depends on C
//Find the testdeploy[ABC].sar files in lib directory with other jars.
String testUrlA = "file:" + getDeployFilename("testdeploya.sar");
String testUrlB = "file:" + getDeployFilename("testdeployb.sar");
String testUrlC = "file:" + getDeployFilename("testdeployc.sar");
String testUrlD = "file:" + getDeployFilename("testdeployd.sar");
System.out.println("testUrlA is : " + testUrlA);
Object[] argsA = { testUrlA };
Object[] argsB = { testUrlB };
Object[] argsC = { testUrlC };
Object[] argsD = { testUrlD };
String[] sig = { "java.lang.String" };
//the mbeans we are trying to deploy/undeploy
ObjectName testObjectNameA = new ObjectName("test:name=TestDeployerA");
ObjectName testObjectNameB = new ObjectName("test:name=TestDeployerB");
ObjectName testObjectNameC = new ObjectName("test:name=TestDeployerC");
ObjectName testObjectNameD = new ObjectName("test:name=TestDeployerD");
ObjectName testObjectName2 = new ObjectName("test:name=TestDeployer2");
ObjectName testObjectName3 = new ObjectName("test:name=TestDeployer3");
//the classloader mbean
ObjectName classLoaderObjectName = new
ObjectName("JBOSS-SYSTEM:spine=ServiceClassLoader");
try
{
//check they aren't there already
assertTrue("test mbean a already registered before deploy",
!server.isRegistered(testObjectNameA));
assertTrue("test mbean b already registered before deploy",
!server.isRegistered(testObjectNameB));
assertTrue("test mbean c already registered before deploy",
!server.isRegistered(testObjectNameC));
assertTrue("test mbean d already registered before deploy",
!server.isRegistered(testObjectNameD));
//deploy the test jsrs.
server.invoke(serviceDeployerName, "deploy", argsD, sig);
//check deployment registered expected mbeans
assertTrue("test mbean D not registered after deploy",
server.isRegistered(testObjectNameD));
assertTrue("test mbean C not registered after deploy",
server.isRegistered(testObjectNameC));
assertTrue("test mbean A not registered after deploy",
server.isRegistered(testObjectNameA));
assertTrue("test mbean B not registered after deploy",
server.isRegistered(testObjectNameB));
//we'll believe from testDeployJSR that the classes are available.
//deploy the test jsrs again, should undeploy and redeploy.
server.invoke(serviceDeployerName, "deploy", argsA, sig);
//check deployment registered expected mbeans
assertTrue("test mbean not registered after redeploy",
server.isRegistered(testObjectNameA));
assertTrue("test mbean not registered after redeploy",
server.isRegistered(testObjectNameB));
assertTrue("test mbean not registered after redeploy",
server.isRegistered(testObjectNameC));
assertTrue("test mbean not registered after redeploy",
server.isRegistered(testObjectNameD));
//undeploy test xml doc.
server.invoke(serviceDeployerName, "undeploy", argsA, sig);
//check they aren't there any more
assertTrue("test mbean A still registered after undeploy of A",
!server.isRegistered(testObjectNameA));
assertTrue("test mbean C still registered after undeploy of A",
!server.isRegistered(testObjectNameC));
assertTrue("test mbean D still registered after undeploy of A",
!server.isRegistered(testObjectNameD));
assertTrue("test mbean B unregistered after undeploy of A",
server.isRegistered(testObjectNameB));
//check the class for D is not available
try
{
ObjectInstance oe =
server.createMBean("org.jboss.test.jmx.mbean.TestDeployerD", testObjectName3,
classLoaderObjectName);
fail("created mbean when class should not be present: object instance: " +
oe);
}
catch (ReflectionException re)
{
Exception e = re.getTargetException();
if (!(e instanceof ClassNotFoundException))
{
fail("Wrong exception thrown when trying to create mbean" + e);
}
}
//deploy the test jsr A doc a second time.
server.invoke(serviceDeployerName, "deploy", argsA, sig);
//check deployment registered expected mbeans
assertTrue("test mbean A not registered after deploy of A",
server.isRegistered(testObjectNameA));
assertTrue("test mbean B not registered after deploy of A",
server.isRegistered(testObjectNameB));
assertTrue("test mbean C not registered after deploy of A",
server.isRegistered(testObjectNameC));
assertTrue("test mbean D not registered after deploy of A",
server.isRegistered(testObjectNameD));
//undeploy test xml doc.
server.invoke(serviceDeployerName, "undeploy", argsD, sig);
server.invoke(serviceDeployerName, "undeploy", argsC, sig);
server.invoke(serviceDeployerName, "undeploy", argsA, sig);
server.invoke(serviceDeployerName, "undeploy", argsB, sig);
//check they aren't there any more
assertTrue("test mbean A still registered after undeploy",
!server.isRegistered(testObjectNameA));
assertTrue("test mbean A still registered after undeploy",
!server.isRegistered(testObjectNameB));
assertTrue("test mbean A still registered after undeploy",
!server.isRegistered(testObjectNameC));
assertTrue("test mbean A still registered after undeploy",
!server.isRegistered(testObjectNameD));
}
finally
{
server.invoke(serviceDeployerName, "undeploy", argsD, sig);
server.invoke(serviceDeployerName, "undeploy", argsC, sig);
server.invoke(serviceDeployerName, "undeploy", argsA, sig);
server.invoke(serviceDeployerName, "undeploy", argsB, sig);
}
}
/** Return the deployment directory to use. */
private static String getDeployFilename(final String filename)
{
String deployDir = System.getProperty("jbosstest.deploy.dir");
if (deployDir == null)
{
deployDir = "../lib";
}
return deployDir + "/" + filename;
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development