[jboss-cvs] JBossAS SVN: r91923 - in projects/kernel/trunk: dependency/src/test/java/org/jboss/test/dependency/controller/support and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Aug 3 08:25:25 EDT 2009
Author: kabir.khan at jboss.com
Date: 2009-08-03 08:25:24 -0400 (Mon, 03 Aug 2009)
New Revision: 91923
Added:
projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/test/TempOnDemandDependencyTestCaseXXXX.java
projects/kernel/trunk/jmx-mc-int/src/test/resources/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependency_3.xml
projects/kernel/trunk/jmx-mc-int/src/test/resources/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandServerDependency_3.xml
projects/kernel/trunk/kernel/src/test/resources/xml-test/org/jboss/test/kernel/dependency/test/testGenericBeanFactoryOnDemandDependencyReinstall2.xml
projects/kernel/trunk/kernel/src/test/resources/xml-test/org/jboss/test/kernel/dependency/test/testOnDemandDependencyReinstall2.xml
Modified:
projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/support/ProxyDependencyInfo.java
projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/support/ProxyDependencyItem.java
projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/test/OnDemandDependencyTestCase.java
projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependencyTest.java
projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependencyUnitTestCase.java
projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandServerDependencyUnitTestCase.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/GenericBeanFactoryOnDemandDependencyTestCase.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java
Log:
[JBKERNEL-4] Enable the uninstall ondemand contexts if there are no more dependencies, and adjust affected tests
Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java 2009-08-03 12:18:40 UTC (rev 91922)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -1421,7 +1421,7 @@
toContexts.add(context);
context.setState(toState);
- //uninstallUnusedOnDemandContexts(context, trace);
+ uninstallUnusedOnDemandContexts(context, trace);
}
catch (Throwable t)
{
@@ -1434,71 +1434,82 @@
}
/**
- * Uninstall On_Demand contexts that are not used anymore.
+ * If the context being uninstalled depends on On_Demand contexts that are not used anymore
+ * those On_Demand contexts are uninstalled back to the DESCRIBED state.<p>
+ *
+ * This method must be called with NO locks taken.
*
* @param context the context which is being uninstalled.
* @param trace do trace log
*/
protected void uninstallUnusedOnDemandContexts(ControllerContext context, boolean trace)
{
- DependencyInfo dependencies = context.getDependencyInfo();
- if (dependencies != null)
+ lockWrite();
+ try
{
- Set<DependencyItem> iDependOn = dependencies.getIDependOn(null);
- if (iDependOn.isEmpty() == false)
+ DependencyInfo dependencies = context.getDependencyInfo();
+ if (dependencies != null)
{
- for (DependencyItem item : iDependOn)
+ Set<DependencyItem> iDependOn = dependencies.getIDependOn(null);
+ if (iDependOn.isEmpty() == false)
{
- if (item.isResolved()) //TODO Is this check necessary
+ for (DependencyItem item : iDependOn)
{
- Object name = item.getIDependOn();
- if (name == null)
- continue;
-
- ControllerContext other = getContext(name, null);
- if (other == null)
+ if (item.isResolved()) //TODO Is this check necessary
{
- log.warn("Could not find dependency while uninstalling on demand contexts for " + item);
- continue;
- }
- if (other.getMode() != ControllerMode.ON_DEMAND)
- continue;
-
- DependencyInfo otherDependencies = other.getDependencyInfo();
- if (otherDependencies == null)
- continue;
-
- Set<DependencyItem> dependsOnOther = otherDependencies.getDependsOnMe(null);
- boolean isRequired = false;
- for (DependencyItem dependsOnOtherItem : dependsOnOther)
- {
- ControllerContext dependsContext = getContext(dependsOnOtherItem.getName(), null);
- if (dependsContext == null)
+ Object name = item.getIDependOn();
+ if (name == null)
+ continue;
+
+ ControllerContext other = getContext(name, null);
+ if (other == null)
{
log.warn("Could not find dependency while uninstalling on demand contexts for " + item);
continue;
}
-
- int requiredIndex = states.indexOf(item.getWhenRequired());
- int actualIndex = states.indexOf(dependsContext.getState());
- if (requiredIndex <= actualIndex)
+ if (other.getMode() != ControllerMode.ON_DEMAND)
+ continue;
+
+ DependencyInfo otherDependencies = other.getDependencyInfo();
+ if (otherDependencies == null)
+ continue;
+
+ Set<DependencyItem> dependsOnOther = otherDependencies.getDependsOnMe(null);
+ boolean isRequired = false;
+ for (DependencyItem dependsOnOtherItem : dependsOnOther)
{
- isRequired = true;
- break;
+ ControllerContext dependsContext = getContext(dependsOnOtherItem.getName(), null);
+ if (dependsContext == null)
+ {
+ log.warn("Could not find dependency while uninstalling on demand contexts for " + item);
+ continue;
+ }
+
+ int requiredIndex = states.indexOf(item.getWhenRequired());
+ int actualIndex = states.indexOf(dependsContext.getState());
+ if (requiredIndex <= actualIndex)
+ {
+ isRequired = true;
+ break;
+ }
}
+ if (!isRequired)
+ {
+ //For some reason uninstallContext() uninstalls to the state below the passed in one, add one
+ int index = states.indexOf(ControllerMode.ON_DEMAND.getRequiredState());
+ index++;
+ ControllerState state = states.get(index);
+ uninstallContext(other, state, trace);
+ }
}
- if (!isRequired)
- {
- //For some reason uninstallContext() uninstalls to the state below the passed in one, add one
- int index = states.indexOf(ControllerMode.ON_DEMAND.getRequiredState());
- index++;
- ControllerState state = states.get(index);
- uninstallContext(other, state, trace);
- }
}
}
}
}
+ finally
+ {
+ unlockWrite();
+ }
}
/**
Modified: projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/support/ProxyDependencyInfo.java
===================================================================
--- projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/support/ProxyDependencyInfo.java 2009-08-03 12:18:40 UTC (rev 91922)
+++ projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/support/ProxyDependencyInfo.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -1,65 +1,83 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* 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.dependency.controller.support;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-
-import org.jboss.dependency.plugins.AbstractDependencyInfo;
-import org.jboss.dependency.spi.DependencyInfo;
-
-/**
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class ProxyDependencyInfo extends AbstractDependencyInfo implements InvocationHandler
-{
- private Method method;
- private int allowedHits;
-
- public ProxyDependencyInfo(Method method, int allowedHits)
- {
- this.method = method;
- this.allowedHits = allowedHits;
- }
-
- public static DependencyInfo createDependencyInfo(Method method, int allowedHits)
- {
- return (DependencyInfo)Proxy.newProxyInstance(
- DependencyInfo.class.getClassLoader(),
- new Class<?>[]{DependencyInfo.class},
- new ProxyDependencyInfo(method, allowedHits));
- }
-
- public Object invoke(Object proxy, Method m, Object[] args) throws Throwable
- {
- if (m.equals(method))
- {
- if (allowedHits <= 0)
- throw new RuntimeException("Failed");
-
- allowedHits--;
- }
-
- return m.invoke(this, args);
- }
-}
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* 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.dependency.controller.support;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
+import org.jboss.dependency.plugins.AbstractDependencyInfo;
+import org.jboss.dependency.spi.DependencyInfo;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ProxyDependencyInfo extends AbstractDependencyInfo implements InvocationHandler
+{
+ private Method method;
+ private int allowedHits;
+ private final int originalAllowedHits;
+
+ public ProxyDependencyInfo(Method method, int allowedHits)
+ {
+ this.method = method;
+ this.allowedHits = allowedHits;
+ this.originalAllowedHits = allowedHits;
+ }
+
+ public static DependencyInfo createDependencyInfo(Method method, int allowedHits)
+ {
+ return (DependencyInfo)Proxy.newProxyInstance(
+ DependencyInfo.class.getClassLoader(),
+ new Class<?>[]{DependencyInfo.class},
+ new ProxyDependencyInfo(method, allowedHits));
+ }
+
+ public Object invoke(Object proxy, Method m, Object[] args) throws Throwable
+ {
+ if (enableChecking())
+ {
+ if (m.equals(method))
+ {
+ if (allowedHits <= 0)
+ throw new RuntimeException("Failed for method " + m.getName() + " " + originalAllowedHits);
+
+ allowedHits--;
+ }
+ }
+
+ return m.invoke(this, args);
+ }
+
+ private boolean enableChecking()
+ {
+// StackTraceElement[] st = new Exception().getStackTrace();
+// for (StackTraceElement element : st)
+// {
+// if (element.getMethodName().equals("uninstallUnusedOnDemandContexts"))
+// {
+// return false;
+// }
+// }
+ return true;
+ }
+}
Modified: projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/support/ProxyDependencyItem.java
===================================================================
--- projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/support/ProxyDependencyItem.java 2009-08-03 12:18:40 UTC (rev 91922)
+++ projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/support/ProxyDependencyItem.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -1,67 +1,69 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* 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.dependency.controller.support;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-
-import org.jboss.dependency.plugins.AbstractDependencyItem;
-import org.jboss.dependency.spi.ControllerState;
-import org.jboss.dependency.spi.DependencyItem;
-
-/**
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class ProxyDependencyItem extends AbstractDependencyItem implements InvocationHandler
-{
- private Method method;
- private int allowedHits;
-
- public ProxyDependencyItem(Method method, int allowedHits, ControllerState whenRequired)
- {
- super(method.getName(), "bean", whenRequired, null);
- this.method = method;
- this.allowedHits = allowedHits;
- }
-
- public static DependencyItem createDependencyInfo(Method method, int allowedHits, ControllerState whenRequired)
- {
- return (DependencyItem)Proxy.newProxyInstance(
- DependencyItem.class.getClassLoader(),
- new Class<?>[]{DependencyItem.class},
- new ProxyDependencyItem(method, allowedHits, whenRequired));
- }
-
- public Object invoke(Object proxy, Method m, Object[] args) throws Throwable
- {
- if (m.equals(method))
- {
- if (allowedHits <= 0)
- throw new RuntimeException("Failed");
-
- allowedHits--;
- }
-
- return m.invoke(this, args);
- }
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* 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.dependency.controller.support;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
+import org.jboss.dependency.plugins.AbstractDependencyItem;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.DependencyItem;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ProxyDependencyItem extends AbstractDependencyItem implements InvocationHandler
+{
+ private Method method;
+ private int allowedHits;
+ private final int originalAllowedHits;
+
+ public ProxyDependencyItem(Method method, int allowedHits, ControllerState whenRequired)
+ {
+ super(method.getName(), "bean", whenRequired, null);
+ this.method = method;
+ this.allowedHits = allowedHits;
+ this.originalAllowedHits = allowedHits;
+ }
+
+ public static DependencyItem createDependencyInfo(Method method, int allowedHits, ControllerState whenRequired)
+ {
+ return (DependencyItem)Proxy.newProxyInstance(
+ DependencyItem.class.getClassLoader(),
+ new Class<?>[]{DependencyItem.class},
+ new ProxyDependencyItem(method, allowedHits, whenRequired));
+ }
+
+ public Object invoke(Object proxy, Method m, Object[] args) throws Throwable
+ {
+ if (m.equals(method))
+ {
+ if (allowedHits <= 0)
+ throw new RuntimeException("Failed for method " + m.getName() + " " + originalAllowedHits);
+
+ allowedHits--;
+ }
+
+ return m.invoke(this, args);
+ }
}
\ No newline at end of file
Modified: projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/test/OnDemandDependencyTestCase.java
===================================================================
--- projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/test/OnDemandDependencyTestCase.java 2009-08-03 12:18:40 UTC (rev 91922)
+++ projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/test/OnDemandDependencyTestCase.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -21,6 +21,7 @@
*/
package org.jboss.test.dependency.controller.test;
+import junit.framework.AssertionFailedError;
import junit.framework.Test;
import org.jboss.dependency.plugins.AbstractDependencyItem;
@@ -193,6 +194,20 @@
assertEquals(-1, delegate1.configureUninstallOrder);
assertEquals(-1, delegate1.instantiateUninstallOrder);
assertEquals(-1, delegate1.describeUninstallOrder);
+ TestDelegate delegate3 = getDelegate3();
+ ControllerContext context3 = assertInstall(delegate3);
+ assertEquals(13, delegate3.describeInstallOrder);
+ assertEquals(14, delegate3.instantiateInstallOrder);
+ assertEquals(15, delegate3.configureInstallOrder);
+ assertEquals(16, delegate3.createInstallOrder);
+ assertEquals(17, delegate3.startInstallOrder);
+ assertEquals(18, delegate3.installInstallOrder);
+ assertEquals(-1, delegate3.installUninstallOrder);
+ assertEquals(-1, delegate3.startUninstallOrder);
+ assertEquals(-1, delegate3.createUninstallOrder);
+ assertEquals(-1, delegate3.configureUninstallOrder);
+ assertEquals(-1, delegate3.instantiateUninstallOrder);
+ assertEquals(-1, delegate3.describeUninstallOrder);
assertUninstall(context2);
assertEquals(2, delegate2.describeInstallOrder);
assertEquals(3, delegate2.instantiateInstallOrder);
@@ -200,12 +215,12 @@
assertEquals(10, delegate2.createInstallOrder);
assertEquals(11, delegate2.startInstallOrder);
assertEquals(12, delegate2.installInstallOrder);
- assertEquals(13, delegate2.installUninstallOrder);
- assertEquals(14, delegate2.startUninstallOrder);
- assertEquals(15, delegate2.createUninstallOrder);
- assertEquals(16, delegate2.configureUninstallOrder);
- assertEquals(17, delegate2.instantiateUninstallOrder);
- assertEquals(18, delegate2.describeUninstallOrder);
+ assertEquals(19, delegate2.installUninstallOrder);
+ assertEquals(20, delegate2.startUninstallOrder);
+ assertEquals(21, delegate2.createUninstallOrder);
+ assertEquals(22, delegate2.configureUninstallOrder);
+ assertEquals(23, delegate2.instantiateUninstallOrder);
+ assertEquals(24, delegate2.describeUninstallOrder);
assertContext("Name1", ControllerState.INSTALLED);
assertEquals(1, delegate1.describeInstallOrder);
assertEquals(5, delegate1.instantiateInstallOrder);
@@ -220,18 +235,18 @@
assertEquals(-1, delegate1.instantiateUninstallOrder);
assertEquals(-1, delegate1.describeUninstallOrder);
context2 = assertInstall(delegate2);
- assertEquals(19, delegate2.describeInstallOrder);
- assertEquals(20, delegate2.instantiateInstallOrder);
- assertEquals(21, delegate2.configureInstallOrder);
- assertEquals(22, delegate2.createInstallOrder);
- assertEquals(23, delegate2.startInstallOrder);
- assertEquals(24, delegate2.installInstallOrder);
- assertEquals(13, delegate2.installUninstallOrder);
- assertEquals(14, delegate2.startUninstallOrder);
- assertEquals(15, delegate2.createUninstallOrder);
- assertEquals(16, delegate2.configureUninstallOrder);
- assertEquals(17, delegate2.instantiateUninstallOrder);
- assertEquals(18, delegate2.describeUninstallOrder);
+ assertEquals(25, delegate2.describeInstallOrder);
+ assertEquals(26, delegate2.instantiateInstallOrder);
+ assertEquals(27, delegate2.configureInstallOrder);
+ assertEquals(28, delegate2.createInstallOrder);
+ assertEquals(29, delegate2.startInstallOrder);
+ assertEquals(30, delegate2.installInstallOrder);
+ assertEquals(19, delegate2.installUninstallOrder);
+ assertEquals(20, delegate2.startUninstallOrder);
+ assertEquals(21, delegate2.createUninstallOrder);
+ assertEquals(22, delegate2.configureUninstallOrder);
+ assertEquals(23, delegate2.instantiateUninstallOrder);
+ assertEquals(24, delegate2.describeUninstallOrder);
assertUninstall(context1);
assertEquals(1, delegate1.describeInstallOrder);
assertEquals(5, delegate1.instantiateInstallOrder);
@@ -239,53 +254,159 @@
assertEquals(7, delegate1.createInstallOrder);
assertEquals(8, delegate1.startInstallOrder);
assertEquals(9, delegate1.installInstallOrder);
- assertEquals(28, delegate1.installUninstallOrder);
- assertEquals(29, delegate1.startUninstallOrder);
- assertEquals(30, delegate1.createUninstallOrder);
- assertEquals(31, delegate1.configureUninstallOrder);
- assertEquals(32, delegate1.instantiateUninstallOrder);
- assertEquals(33, delegate1.describeUninstallOrder);
+ assertEquals(37, delegate1.installUninstallOrder);
+ assertEquals(38, delegate1.startUninstallOrder);
+ assertEquals(39, delegate1.createUninstallOrder);
+ assertEquals(40, delegate1.configureUninstallOrder);
+ assertEquals(41, delegate1.instantiateUninstallOrder);
+ assertEquals(42, delegate1.describeUninstallOrder);
assertContext("Name2", ControllerState.CONFIGURED);
- assertEquals(19, delegate2.describeInstallOrder);
- assertEquals(20, delegate2.instantiateInstallOrder);
- assertEquals(21, delegate2.configureInstallOrder);
- assertEquals(22, delegate2.createInstallOrder);
- assertEquals(23, delegate2.startInstallOrder);
- assertEquals(24, delegate2.installInstallOrder);
- assertEquals(25, delegate2.installUninstallOrder);
- assertEquals(26, delegate2.startUninstallOrder);
- assertEquals(27, delegate2.createUninstallOrder);
- assertEquals(16, delegate2.configureUninstallOrder);
- assertEquals(17, delegate2.instantiateUninstallOrder);
- assertEquals(18, delegate2.describeUninstallOrder);
+ assertEquals(25, delegate2.describeInstallOrder);
+ assertEquals(26, delegate2.instantiateInstallOrder);
+ assertEquals(27, delegate2.configureInstallOrder);
+ assertEquals(28, delegate2.createInstallOrder);
+ assertEquals(29, delegate2.startInstallOrder);
+ assertEquals(30, delegate2.installInstallOrder);
+ assertEquals(22, delegate2.configureUninstallOrder);
+ assertEquals(23, delegate2.instantiateUninstallOrder);
+ assertEquals(24, delegate2.describeUninstallOrder);
+ assertContext("Name3", ControllerState.CONFIGURED);
+ assertEquals(13, delegate3.describeInstallOrder);
+ assertEquals(14, delegate3.instantiateInstallOrder);
+ assertEquals(15, delegate3.configureInstallOrder);
+ assertEquals(16, delegate3.createInstallOrder);
+ assertEquals(17, delegate3.startInstallOrder);
+ assertEquals(18, delegate3.installInstallOrder);
+ assertEquals(-1, delegate3.configureUninstallOrder);
+ assertEquals(-1, delegate3.instantiateUninstallOrder);
+ assertEquals(-1, delegate3.describeUninstallOrder);
+ assertDoubleEquals(31, 34, delegate2.installUninstallOrder, delegate3.installUninstallOrder);
+ assertDoubleEquals(32, 35, delegate2.startUninstallOrder, delegate3.startUninstallOrder);
+ assertDoubleEquals(33, 36, delegate2.createUninstallOrder, delegate3.createUninstallOrder);
context1 = assertInstall(delegate1);
- assertEquals(34, delegate1.describeInstallOrder);
- assertEquals(35, delegate1.instantiateInstallOrder);
- assertEquals(36, delegate1.configureInstallOrder);
- assertEquals(37, delegate1.createInstallOrder);
- assertEquals(38, delegate1.startInstallOrder);
- assertEquals(39, delegate1.installInstallOrder);
- assertEquals(28, delegate1.installUninstallOrder);
- assertEquals(29, delegate1.startUninstallOrder);
- assertEquals(30, delegate1.createUninstallOrder);
- assertEquals(31, delegate1.configureUninstallOrder);
- assertEquals(32, delegate1.instantiateUninstallOrder);
- assertEquals(33, delegate1.describeUninstallOrder);
+ assertEquals(43, delegate1.describeInstallOrder);
+ assertEquals(44, delegate1.instantiateInstallOrder);
+ assertEquals(45, delegate1.configureInstallOrder);
+ assertEquals(46, delegate1.createInstallOrder);
+ assertEquals(47, delegate1.startInstallOrder);
+ assertEquals(48, delegate1.installInstallOrder);
+ assertEquals(37, delegate1.installUninstallOrder);
+ assertEquals(38, delegate1.startUninstallOrder);
+ assertEquals(39, delegate1.createUninstallOrder);
+ assertEquals(40, delegate1.configureUninstallOrder);
+ assertEquals(41, delegate1.instantiateUninstallOrder);
+ assertEquals(42, delegate1.describeUninstallOrder);
assertContext("Name2", ControllerState.INSTALLED);
- assertEquals(19, delegate2.describeInstallOrder);
- assertEquals(20, delegate2.instantiateInstallOrder);
- assertEquals(21, delegate2.configureInstallOrder);
- assertEquals(40, delegate2.createInstallOrder);
- assertEquals(41, delegate2.startInstallOrder);
- assertEquals(42, delegate2.installInstallOrder);
- assertEquals(25, delegate2.installUninstallOrder);
- assertEquals(26, delegate2.startUninstallOrder);
- assertEquals(27, delegate2.createUninstallOrder);
- assertEquals(16, delegate2.configureUninstallOrder);
- assertEquals(17, delegate2.instantiateUninstallOrder);
- assertEquals(18, delegate2.describeUninstallOrder);
+ assertEquals(25, delegate2.describeInstallOrder);
+ assertEquals(26, delegate2.instantiateInstallOrder);
+ assertEquals(27, delegate2.configureInstallOrder);
+ assertEquals(22, delegate2.configureUninstallOrder);
+ assertEquals(23, delegate2.instantiateUninstallOrder);
+ assertEquals(24, delegate2.describeUninstallOrder);
+ assertContext("Name3", ControllerState.INSTALLED);
+ assertEquals(13, delegate3.describeInstallOrder);
+ assertEquals(14, delegate3.instantiateInstallOrder);
+ assertEquals(15, delegate3.configureInstallOrder);
+ assertEquals(-1, delegate3.configureUninstallOrder);
+ assertEquals(-1, delegate3.instantiateUninstallOrder);
+ assertEquals(-1, delegate3.describeUninstallOrder);
+ assertDoubleEquals(49, 50, delegate2.createInstallOrder, delegate3.createInstallOrder);
+ assertDoubleEquals(51, 52, delegate2.startInstallOrder, delegate3.startInstallOrder);
+ assertDoubleEquals(53, 54, delegate2.installInstallOrder, delegate3.installInstallOrder);
+ assertDoubleEquals(31, 34, delegate2.installUninstallOrder, delegate3.installUninstallOrder);
+ assertDoubleEquals(32, 35, delegate2.startUninstallOrder, delegate3.startUninstallOrder);
+ assertDoubleEquals(33, 36, delegate2.createUninstallOrder, delegate3.createUninstallOrder);
+ //Uninstall both dependencies and check that the on demand context goes back to described
+ assertUninstall(context3);
+ assertEquals(13, delegate3.describeInstallOrder);
+ assertEquals(14, delegate3.instantiateInstallOrder);
+ assertEquals(15, delegate3.configureInstallOrder);
+ assertDoubleEquals(49, 50, delegate2.createInstallOrder, delegate3.createInstallOrder);
+ assertDoubleEquals(51, 52, delegate2.startInstallOrder, delegate3.startInstallOrder);
+ assertDoubleEquals(53, 54, delegate2.installInstallOrder, delegate3.installInstallOrder);
+ assertEquals(55, delegate3.installUninstallOrder);
+ assertEquals(56, delegate3.startUninstallOrder);
+ assertEquals(57, delegate3.createUninstallOrder);
+ assertEquals(58, delegate3.configureUninstallOrder);
+ assertEquals(59, delegate3.instantiateUninstallOrder);
+ assertEquals(60, delegate3.describeUninstallOrder);
+ assertUninstall(context2);
+ assertEquals(25, delegate2.describeInstallOrder);
+ assertEquals(26, delegate2.instantiateInstallOrder);
+ assertEquals(27, delegate2.configureInstallOrder);
+ assertDoubleEquals(49, 50, delegate2.createInstallOrder, delegate3.createInstallOrder);
+ assertDoubleEquals(51, 52, delegate2.startInstallOrder, delegate3.startInstallOrder);
+ assertDoubleEquals(53, 54, delegate2.installInstallOrder, delegate3.installInstallOrder);
+ assertEquals(61, delegate2.installUninstallOrder);
+ assertEquals(62, delegate2.startUninstallOrder);
+ assertEquals(63, delegate2.createUninstallOrder);
+ assertEquals(69, delegate2.configureUninstallOrder);
+ assertEquals(70, delegate2.instantiateUninstallOrder);
+ assertEquals(71, delegate2.describeUninstallOrder);
+ assertContext(context1, ControllerState.DESCRIBED);
+ assertEquals(64, delegate1.installUninstallOrder);
+ assertEquals(65, delegate1.startUninstallOrder);
+ assertEquals(66, delegate1.createUninstallOrder);
+ assertEquals(67, delegate1.configureUninstallOrder);
+ assertEquals(68, delegate1.instantiateUninstallOrder);
}
+
+ public void testAssertDoubleEquals() throws Exception
+ {
+ assertDoubleEquals(1, 2, 1, 2);
+ assertDoubleEquals(1, 2, 2, 1);
+ assertEqualsExpectFailure(1, 2, 1, 3);
+ assertEqualsExpectFailure(1, 2, 3, 2);
+ assertEqualsExpectFailure(1, 2, 3, 1);
+ assertEqualsExpectFailure(1, 2, 2, 3);
+
+ try
+ {
+ assertEqualsExpectFailure(1, 2, 1, 2);
+ }
+ catch(AssertionFailedError expected)
+ {
+ return;
+ }
+ fail("Should have had a failure");
+ }
+
+
+ /**
+ * When installing 2 contexts as a result of resolving their dependencies or uninstalling
+ * 2 contexts as a result of undeploying their dependencies we cannot count on the order the 2 contexts are
+ * (un)installed (that is an implementation detail), so check them both
+ */
+ private void assertDoubleEquals(int expectedA, int expectedB, int actualA, int actualB)
+ {
+ if (expectedA == expectedB)
+ {
+ fail("Did not expect same expected values <" + expectedA + ">, <" + expectedB + ">");
+ }
+ if (actualA == actualB)
+ {
+ fail("Did not expect same actual values <" + actualA + ">, <" + actualB + ">");
+ }
+ if ((expectedA != actualA && expectedA != actualB) || (expectedB != actualA && expectedB != actualB))
+ {
+ fail("expected <" + expectedA + ", " + expectedB + "> but was <" + actualA + ", " + actualB + ">");
+ }
+ }
+ private void assertEqualsExpectFailure(int expectedA, int expectedB, int actualA, int actualB)
+ {
+ try
+ {
+ assertDoubleEquals(expectedA, expectedB, actualA, actualB);
+ }
+ catch(AssertionFailedError expected)
+ {
+ return;
+ }
+ fail("Should have picked up failure");
+ }
+
+
protected TestDelegate getDelegate1()
{
TestDelegate result = new TestDelegate("Name1");
@@ -299,4 +420,11 @@
result.addDependency(new AbstractDependencyItem("Name2", "Name1", ControllerState.CREATE, ControllerState.INSTALLED));
return result;
}
+
+ protected TestDelegate getDelegate3()
+ {
+ TestDelegate result = new TestDelegate("Name3");
+ result.addDependency(new AbstractDependencyItem("Name3", "Name1", ControllerState.CREATE, ControllerState.INSTALLED));
+ return result;
+ }
}
Added: projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/test/TempOnDemandDependencyTestCaseXXXX.java
===================================================================
--- projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/test/TempOnDemandDependencyTestCaseXXXX.java (rev 0)
+++ projects/kernel/trunk/dependency/src/test/java/org/jboss/test/dependency/controller/test/TempOnDemandDependencyTestCaseXXXX.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -0,0 +1,320 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* 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.dependency.controller.test;
+
+import junit.framework.Test;
+
+import org.jboss.dependency.plugins.AbstractDependencyItem;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.test.dependency.controller.support.TestDelegate;
+
+/**
+ * A OnDemandDependencyTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 88815 $
+ */
+public class TempOnDemandDependencyTestCaseXXXX extends AbstractDependencyTest
+{
+ public static Test suite()
+ {
+ return suite(TempOnDemandDependencyTestCaseXXXX.class);
+ }
+
+ public TempOnDemandDependencyTestCaseXXXX(String name)
+ {
+ super(name);
+ }
+
+ public void testOnDemandDependencyOnDemandFirst() throws Throwable
+ {
+ TestDelegate delegate1 = getDelegate1();
+ ControllerContext context1 = assertInstall(delegate1, ControllerState.DESCRIBED);
+ assertEquals(1, delegate1.describeInstallOrder);
+ assertEquals(-1, delegate1.instantiateInstallOrder);
+ assertEquals(-1, delegate1.configureInstallOrder);
+ assertEquals(-1, delegate1.createInstallOrder);
+ assertEquals(-1, delegate1.startInstallOrder);
+ assertEquals(-1, delegate1.installInstallOrder);
+ assertEquals(-1, delegate1.installUninstallOrder);
+ assertEquals(-1, delegate1.startUninstallOrder);
+ assertEquals(-1, delegate1.createUninstallOrder);
+ assertEquals(-1, delegate1.configureUninstallOrder);
+ assertEquals(-1, delegate1.instantiateUninstallOrder);
+ assertEquals(-1, delegate1.describeUninstallOrder);
+ TestDelegate delegate2 = getDelegate2();
+ ControllerContext context2 = assertInstall(delegate2);
+ assertEquals(2, delegate2.describeInstallOrder);
+ assertEquals(3, delegate2.instantiateInstallOrder);
+ assertEquals(4, delegate2.configureInstallOrder);
+ assertEquals(10, delegate2.createInstallOrder);
+ assertEquals(11, delegate2.startInstallOrder);
+ assertEquals(12, delegate2.installInstallOrder);
+ assertEquals(-1, delegate2.installUninstallOrder);
+ assertEquals(-1, delegate2.startUninstallOrder);
+ assertEquals(-1, delegate2.createUninstallOrder);
+ assertEquals(-1, delegate2.configureUninstallOrder);
+ assertEquals(-1, delegate2.instantiateUninstallOrder);
+ assertEquals(-1, delegate2.describeUninstallOrder);
+ assertContext(context1);
+ assertEquals(1, delegate1.describeInstallOrder);
+ assertEquals(5, delegate1.instantiateInstallOrder);
+ assertEquals(6, delegate1.configureInstallOrder);
+ assertEquals(7, delegate1.createInstallOrder);
+ assertEquals(8, delegate1.startInstallOrder);
+ assertEquals(9, delegate1.installInstallOrder);
+ assertEquals(-1, delegate1.installUninstallOrder);
+ assertEquals(-1, delegate1.startUninstallOrder);
+ assertEquals(-1, delegate1.createUninstallOrder);
+ assertEquals(-1, delegate1.configureUninstallOrder);
+ assertEquals(-1, delegate1.instantiateUninstallOrder);
+ assertEquals(-1, delegate1.describeUninstallOrder);
+
+ assertUninstall(context2);
+ assertContext(context1, ControllerState.DESCRIBED);
+
+ assertEquals(13, delegate2.installUninstallOrder);
+ assertEquals(14, delegate2.startUninstallOrder);
+ assertEquals(15, delegate2.createUninstallOrder);
+
+ assertEquals(16, delegate1.installUninstallOrder);
+ assertEquals(17, delegate1.startUninstallOrder);
+ assertEquals(18, delegate1.createUninstallOrder);
+ assertEquals(19, delegate1.configureUninstallOrder);
+ assertEquals(20, delegate1.instantiateUninstallOrder);
+ assertEquals(-1, delegate1.describeUninstallOrder);
+
+ assertEquals(21, delegate2.configureUninstallOrder);
+ assertEquals(22, delegate2.instantiateUninstallOrder);
+ assertEquals(23, delegate2.describeUninstallOrder);
+ }
+
+// public void testOnDemandDependencyOnDemandSecond() throws Throwable
+// {
+// TestDelegate delegate2 = getDelegate2();
+// ControllerContext context2 = assertInstall(delegate2, ControllerState.CONFIGURED);
+// assertEquals(1, delegate2.describeInstallOrder);
+// assertEquals(2, delegate2.instantiateInstallOrder);
+// assertEquals(3, delegate2.configureInstallOrder);
+// assertEquals(-1, delegate2.createInstallOrder);
+// assertEquals(-1, delegate2.startInstallOrder);
+// assertEquals(-1, delegate2.installInstallOrder);
+// assertEquals(-1, delegate2.installUninstallOrder);
+// assertEquals(-1, delegate2.startUninstallOrder);
+// assertEquals(-1, delegate2.createUninstallOrder);
+// assertEquals(-1, delegate2.configureUninstallOrder);
+// assertEquals(-1, delegate2.instantiateUninstallOrder);
+// assertEquals(-1, delegate2.describeUninstallOrder);
+// assertChange(context2, ControllerState.INSTALLED, ControllerState.CONFIGURED);
+// assertEquals(1, delegate2.describeInstallOrder);
+// assertEquals(2, delegate2.instantiateInstallOrder);
+// assertEquals(3, delegate2.configureInstallOrder);
+// assertEquals(-1, delegate2.createInstallOrder);
+// assertEquals(-1, delegate2.startInstallOrder);
+// assertEquals(-1, delegate2.installInstallOrder);
+// assertEquals(-1, delegate2.installUninstallOrder);
+// assertEquals(-1, delegate2.startUninstallOrder);
+// assertEquals(-1, delegate2.createUninstallOrder);
+// assertEquals(-1, delegate2.configureUninstallOrder);
+// assertEquals(-1, delegate2.instantiateUninstallOrder);
+// assertEquals(-1, delegate2.describeUninstallOrder);
+// TestDelegate delegate1 = getDelegate1();
+// assertInstall(delegate1);
+// assertEquals(4, delegate1.describeInstallOrder);
+// assertEquals(5, delegate1.instantiateInstallOrder);
+// assertEquals(6, delegate1.configureInstallOrder);
+// assertEquals(7, delegate1.createInstallOrder);
+// assertEquals(8, delegate1.startInstallOrder);
+// assertEquals(9, delegate1.installInstallOrder);
+// assertEquals(-1, delegate1.installUninstallOrder);
+// assertEquals(-1, delegate1.startUninstallOrder);
+// assertEquals(-1, delegate1.createUninstallOrder);
+// assertEquals(-1, delegate1.configureUninstallOrder);
+// assertEquals(-1, delegate1.instantiateUninstallOrder);
+// assertEquals(-1, delegate1.describeUninstallOrder);
+// assertContext(context2, ControllerState.INSTALLED);
+// assertEquals(1, delegate2.describeInstallOrder);
+// assertEquals(2, delegate2.instantiateInstallOrder);
+// assertEquals(3, delegate2.configureInstallOrder);
+// assertEquals(10, delegate2.createInstallOrder);
+// assertEquals(11, delegate2.startInstallOrder);
+// assertEquals(12, delegate2.installInstallOrder);
+// assertEquals(-1, delegate2.installUninstallOrder);
+// assertEquals(-1, delegate2.startUninstallOrder);
+// assertEquals(-1, delegate2.createUninstallOrder);
+// assertEquals(-1, delegate2.configureUninstallOrder);
+// assertEquals(-1, delegate2.instantiateUninstallOrder);
+// assertEquals(-1, delegate2.describeUninstallOrder);
+// }
+//
+// public void testChangeDependencyReinstall() throws Throwable
+// {
+// TestDelegate delegate1 = getDelegate1();
+// ControllerContext context1 = assertInstall(delegate1, ControllerState.DESCRIBED);
+// assertEquals(1, delegate1.describeInstallOrder);
+// assertEquals(-1, delegate1.instantiateInstallOrder);
+// assertEquals(-1, delegate1.configureInstallOrder);
+// assertEquals(-1, delegate1.createInstallOrder);
+// assertEquals(-1, delegate1.startInstallOrder);
+// assertEquals(-1, delegate1.installInstallOrder);
+// assertEquals(-1, delegate1.installUninstallOrder);
+// assertEquals(-1, delegate1.startUninstallOrder);
+// assertEquals(-1, delegate1.createUninstallOrder);
+// assertEquals(-1, delegate1.configureUninstallOrder);
+// assertEquals(-1, delegate1.instantiateUninstallOrder);
+// assertEquals(-1, delegate1.describeUninstallOrder);
+// TestDelegate delegate2 = getDelegate2();
+// ControllerContext context2 = assertInstall(delegate2);
+// assertEquals(2, delegate2.describeInstallOrder);
+// assertEquals(3, delegate2.instantiateInstallOrder);
+// assertEquals(4, delegate2.configureInstallOrder);
+// assertEquals(10, delegate2.createInstallOrder);
+// assertEquals(11, delegate2.startInstallOrder);
+// assertEquals(12, delegate2.installInstallOrder);
+// assertEquals(-1, delegate2.installUninstallOrder);
+// assertEquals(-1, delegate2.startUninstallOrder);
+// assertEquals(-1, delegate2.createUninstallOrder);
+// assertEquals(-1, delegate2.configureUninstallOrder);
+// assertEquals(-1, delegate2.instantiateUninstallOrder);
+// assertEquals(-1, delegate2.describeUninstallOrder);
+// assertContext(context1);
+// assertEquals(1, delegate1.describeInstallOrder);
+// assertEquals(5, delegate1.instantiateInstallOrder);
+// assertEquals(6, delegate1.configureInstallOrder);
+// assertEquals(7, delegate1.createInstallOrder);
+// assertEquals(8, delegate1.startInstallOrder);
+// assertEquals(9, delegate1.installInstallOrder);
+// assertEquals(-1, delegate1.installUninstallOrder);
+// assertEquals(-1, delegate1.startUninstallOrder);
+// assertEquals(-1, delegate1.createUninstallOrder);
+// assertEquals(-1, delegate1.configureUninstallOrder);
+// assertEquals(-1, delegate1.instantiateUninstallOrder);
+// assertEquals(-1, delegate1.describeUninstallOrder);
+// assertUninstall(context2);
+// assertEquals(2, delegate2.describeInstallOrder);
+// assertEquals(3, delegate2.instantiateInstallOrder);
+// assertEquals(4, delegate2.configureInstallOrder);
+// assertEquals(10, delegate2.createInstallOrder);
+// assertEquals(11, delegate2.startInstallOrder);
+// assertEquals(12, delegate2.installInstallOrder);
+// assertEquals(13, delegate2.installUninstallOrder);
+// assertEquals(14, delegate2.startUninstallOrder);
+// assertEquals(15, delegate2.createUninstallOrder);
+// assertEquals(16, delegate2.configureUninstallOrder);
+// assertEquals(17, delegate2.instantiateUninstallOrder);
+// assertEquals(18, delegate2.describeUninstallOrder);
+// assertContext("Name1", ControllerState.INSTALLED);
+// assertEquals(1, delegate1.describeInstallOrder);
+// assertEquals(5, delegate1.instantiateInstallOrder);
+// assertEquals(6, delegate1.configureInstallOrder);
+// assertEquals(7, delegate1.createInstallOrder);
+// assertEquals(8, delegate1.startInstallOrder);
+// assertEquals(9, delegate1.installInstallOrder);
+// assertEquals(-1, delegate1.installUninstallOrder);
+// assertEquals(-1, delegate1.startUninstallOrder);
+// assertEquals(-1, delegate1.createUninstallOrder);
+// assertEquals(-1, delegate1.configureUninstallOrder);
+// assertEquals(-1, delegate1.instantiateUninstallOrder);
+// assertEquals(-1, delegate1.describeUninstallOrder);
+// context2 = assertInstall(delegate2);
+// assertEquals(19, delegate2.describeInstallOrder);
+// assertEquals(20, delegate2.instantiateInstallOrder);
+// assertEquals(21, delegate2.configureInstallOrder);
+// assertEquals(22, delegate2.createInstallOrder);
+// assertEquals(23, delegate2.startInstallOrder);
+// assertEquals(24, delegate2.installInstallOrder);
+// assertEquals(13, delegate2.installUninstallOrder);
+// assertEquals(14, delegate2.startUninstallOrder);
+// assertEquals(15, delegate2.createUninstallOrder);
+// assertEquals(16, delegate2.configureUninstallOrder);
+// assertEquals(17, delegate2.instantiateUninstallOrder);
+// assertEquals(18, delegate2.describeUninstallOrder);
+// assertUninstall(context1);
+// assertEquals(1, delegate1.describeInstallOrder);
+// assertEquals(5, delegate1.instantiateInstallOrder);
+// assertEquals(6, delegate1.configureInstallOrder);
+// assertEquals(7, delegate1.createInstallOrder);
+// assertEquals(8, delegate1.startInstallOrder);
+// assertEquals(9, delegate1.installInstallOrder);
+// assertEquals(28, delegate1.installUninstallOrder);
+// assertEquals(29, delegate1.startUninstallOrder);
+// assertEquals(30, delegate1.createUninstallOrder);
+// assertEquals(31, delegate1.configureUninstallOrder);
+// assertEquals(32, delegate1.instantiateUninstallOrder);
+// assertEquals(33, delegate1.describeUninstallOrder);
+// assertContext("Name2", ControllerState.CONFIGURED);
+// assertEquals(19, delegate2.describeInstallOrder);
+// assertEquals(20, delegate2.instantiateInstallOrder);
+// assertEquals(21, delegate2.configureInstallOrder);
+// assertEquals(22, delegate2.createInstallOrder);
+// assertEquals(23, delegate2.startInstallOrder);
+// assertEquals(24, delegate2.installInstallOrder);
+// assertEquals(25, delegate2.installUninstallOrder);
+// assertEquals(26, delegate2.startUninstallOrder);
+// assertEquals(27, delegate2.createUninstallOrder);
+// assertEquals(16, delegate2.configureUninstallOrder);
+// assertEquals(17, delegate2.instantiateUninstallOrder);
+// assertEquals(18, delegate2.describeUninstallOrder);
+// context1 = assertInstall(delegate1);
+// assertEquals(34, delegate1.describeInstallOrder);
+// assertEquals(35, delegate1.instantiateInstallOrder);
+// assertEquals(36, delegate1.configureInstallOrder);
+// assertEquals(37, delegate1.createInstallOrder);
+// assertEquals(38, delegate1.startInstallOrder);
+// assertEquals(39, delegate1.installInstallOrder);
+// assertEquals(28, delegate1.installUninstallOrder);
+// assertEquals(29, delegate1.startUninstallOrder);
+// assertEquals(30, delegate1.createUninstallOrder);
+// assertEquals(31, delegate1.configureUninstallOrder);
+// assertEquals(32, delegate1.instantiateUninstallOrder);
+// assertEquals(33, delegate1.describeUninstallOrder);
+// assertContext("Name2", ControllerState.INSTALLED);
+// assertEquals(19, delegate2.describeInstallOrder);
+// assertEquals(20, delegate2.instantiateInstallOrder);
+// assertEquals(21, delegate2.configureInstallOrder);
+// assertEquals(40, delegate2.createInstallOrder);
+// assertEquals(41, delegate2.startInstallOrder);
+// assertEquals(42, delegate2.installInstallOrder);
+// assertEquals(25, delegate2.installUninstallOrder);
+// assertEquals(26, delegate2.startUninstallOrder);
+// assertEquals(27, delegate2.createUninstallOrder);
+// assertEquals(16, delegate2.configureUninstallOrder);
+// assertEquals(17, delegate2.instantiateUninstallOrder);
+// assertEquals(18, delegate2.describeUninstallOrder);
+// }
+
+ protected TestDelegate getDelegate1()
+ {
+ TestDelegate result = new TestDelegate("Name1");
+ result.setMode(ControllerMode.ON_DEMAND);
+ return result;
+ }
+
+ protected TestDelegate getDelegate2()
+ {
+ TestDelegate result = new TestDelegate("Name2");
+ result.addDependency(new AbstractDependencyItem("Name2", "Name1", ControllerState.CREATE, ControllerState.INSTALLED));
+ return result;
+ }
+}
Modified: projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependencyTest.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependencyTest.java 2009-08-03 12:18:40 UTC (rev 91922)
+++ projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependencyTest.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -40,9 +40,11 @@
{
private static ObjectName NAME_ONE = ObjectNameFactory.create("test:name=1");
private static ObjectName NAME_TWO = ObjectNameFactory.create("test:name=2");
+ private static ObjectName NAME_THREE = ObjectNameFactory.create("test:name=3");
protected String resourceName1;
protected String resourceName2;
+ protected String resourceName3;
public NewOnDemandDependencyTest(String name)
{
@@ -58,17 +60,21 @@
{
Simple test1 = null;
Simple test2 = null;
+ Simple test3 = null;
boolean error = false;
List<ObjectName> mbeans1 = deploy(resourceName1);
+ List<ObjectName> mbeans3 = null;
try
{
assertServiceInstalled(NAME_ONE);
assertNotRegistered(NAME_ONE);
assertNoService(NAME_TWO);
+ assertNoService(NAME_THREE);
List<ObjectName> mbeans2 = deploy(resourceName2);
+ mbeans3 = deploy(resourceName3);
try
{
assertServiceRunning(NAME_ONE);
@@ -85,6 +91,13 @@
assertEquals(4, test2.startOrder);
assertEquals(0, test2.stopOrder);
assertEquals(0, test2.destroyOrder);
+ test3 = getMBean(Simple.class, NAME_THREE, "Instance");
+ assertEquals("()", test3.constructorUsed);
+ assertEquals(5, test3.createOrder);
+ assertEquals(6, test3.startOrder);
+ assertEquals(0, test3.stopOrder);
+ assertEquals(0, test3.destroyOrder);
+
}
catch (Exception e)
{
@@ -111,8 +124,13 @@
assertNotRegistered(NAME_TWO);
assertEquals(2, test2.createOrder);
assertEquals(4, test2.startOrder);
- assertEquals(5, test2.stopOrder);
- assertEquals(6, test2.destroyOrder);
+ assertEquals(7, test2.stopOrder);
+ assertEquals(8, test2.destroyOrder);
+ assertServiceRunning(NAME_THREE);
+ assertEquals(5, test3.createOrder);
+ assertEquals(6, test3.startOrder);
+ assertEquals(0, test3.stopOrder);
+ assertEquals(0, test3.destroyOrder);
}
}
}
@@ -136,17 +154,28 @@
assertNotRegistered(NAME_ONE);
assertEquals(1, test1.createOrder);
assertEquals(3, test1.startOrder);
- assertEquals(7, test1.stopOrder);
- assertEquals(8, test1.destroyOrder);
+ assertEquals(10, test1.stopOrder);
+ assertEquals(12, test1.destroyOrder);
assertNoService(NAME_TWO);
assertNotRegistered(NAME_TWO);
if (test2 != null)
{
assertEquals(2, test2.createOrder);
assertEquals(4, test2.startOrder);
- assertEquals(5, test2.stopOrder);
- assertEquals(6, test2.destroyOrder);
+ assertEquals(7, test2.stopOrder);
+ assertEquals(8, test2.destroyOrder);
}
+ if (test3 != null)
+ {
+ assertEquals(5, test3.createOrder);
+ assertEquals(6, test3.startOrder);
+ assertEquals(9, test3.stopOrder);
+ assertEquals(11, test3.destroyOrder);
+ }
+
+ undeploy(mbeans3);
+ assertNoService(NAME_THREE);
+ assertNotRegistered(NAME_THREE);
}
}
}
@@ -255,17 +284,21 @@
{
Simple test1 = null;
Simple test2 = null;
+ Simple test3 = null;
boolean error = false;
List<ObjectName> mbeans1 = deploy(resourceName1);
+ List<ObjectName> mbeans3 = null;
try
{
List<ObjectName> mbeans2 = deploy(resourceName2);
+ mbeans3 = deploy(resourceName3);
try
{
assertServiceRunning(NAME_ONE);
assertServiceRunning(NAME_TWO);
+ assertServiceRunning(NAME_THREE);
test1 = getMBean(Simple.class, NAME_ONE, "Instance");
assertEquals("()", test1.constructorUsed);
@@ -279,36 +312,47 @@
assertEquals(4, test2.startOrder);
assertEquals(0, test2.stopOrder);
assertEquals(0, test2.destroyOrder);
+ test3 = getMBean(Simple.class, NAME_THREE, "Instance");
+ assertEquals("()", test2.constructorUsed);
+ assertEquals(5, test3.createOrder);
+ assertEquals(6, test3.startOrder);
+ assertEquals(0, test3.stopOrder);
+ assertEquals(0, test3.destroyOrder);
undeploy(mbeans1);
assertNotRegistered(NAME_ONE);
assertServiceDestroyed(NAME_TWO);
+ assertServiceDestroyed(NAME_THREE);
assertEquals(1, test1.createOrder);
assertEquals(3, test1.startOrder);
- assertEquals(6, test1.stopOrder);
- assertEquals(8, test1.destroyOrder);
+ assertEquals(9, test1.stopOrder);
+ assertEquals(12, test1.destroyOrder);
+ assertDoubleEquals(7, 8, test2.stopOrder, test3.stopOrder);
+ assertDoubleEquals(10, 11, test2.destroyOrder, test3.destroyOrder);
assertEquals(2, test2.createOrder);
assertEquals(4, test2.startOrder);
- assertEquals(5, test2.stopOrder);
- assertEquals(7, test2.destroyOrder);
+ assertEquals(5, test3.createOrder);
+ assertEquals(6, test3.startOrder);
mbeans1 = deploy(resourceName1);
assertServiceRunning(NAME_ONE);
assertServiceRunning(NAME_TWO);
+ assertServiceRunning(NAME_THREE);
test1 = getMBean(Simple.class, NAME_ONE, "Instance");
assertEquals("()", test1.constructorUsed);
- assertEquals(9, test1.createOrder);
- assertEquals(11, test1.startOrder);
+ assertEquals(13, test1.createOrder);
+ assertEquals(16, test1.startOrder);
assertEquals(0, test1.stopOrder);
assertEquals(0, test1.destroyOrder);
- assertEquals(10, test2.createOrder);
- assertEquals(12, test2.startOrder);
- assertEquals(5, test2.stopOrder);
- assertEquals(7, test2.destroyOrder);
+ assertDoubleEquals(14, 15, test2.createOrder, test3.createOrder);
+ assertDoubleEquals(17, 18, test2.startOrder, test3.startOrder);
+ assertDoubleEquals(7, 8, test2.stopOrder, test3.stopOrder);
+ assertDoubleEquals(10, 11, test2.destroyOrder, test3.destroyOrder);
+
}
catch (Exception e)
{
@@ -327,16 +371,18 @@
if (error == false)
{
assertServiceRunning(NAME_ONE);
- assertEquals(9, test1.createOrder);
- assertEquals(11, test1.startOrder);
+ assertEquals(13, test1.createOrder);
+ assertEquals(16, test1.startOrder);
assertEquals(0, test1.stopOrder);
assertEquals(0, test1.destroyOrder);
assertNoService(NAME_TWO);
assertNotRegistered(NAME_TWO);
- assertEquals(10, test2.createOrder);
- assertEquals(12, test2.startOrder);
- assertEquals(13, test2.stopOrder);
- assertEquals(14, test2.destroyOrder);
+ assertDoubleEquals(14, 15, test2.createOrder, test3.createOrder);
+ assertDoubleEquals(17, 18, test2.startOrder, test3.startOrder);
+ assertEquals(19, test2.stopOrder);
+ assertEquals(20, test2.destroyOrder);
+ assertEitherEquals(7, 8, test3.stopOrder);
+ assertEitherEquals(10, 11, test3.destroyOrder);
}
}
}
@@ -358,20 +404,30 @@
{
assertNoService(NAME_ONE);
assertNotRegistered(NAME_ONE);
- assertEquals(9, test1.createOrder);
- assertEquals(11, test1.startOrder);
- assertEquals(15, test1.stopOrder);
- assertEquals(16, test1.destroyOrder);
+ assertEquals(13, test1.createOrder);
+ assertEquals(16, test1.startOrder);
+ assertEquals(22, test1.stopOrder);
+ assertEquals(24, test1.destroyOrder);
assertNoService(NAME_TWO);
assertNotRegistered(NAME_TWO);
if (test2 != null)
{
- assertEquals(10, test2.createOrder);
- assertEquals(12, test2.startOrder);
- assertEquals(13, test2.stopOrder);
- assertEquals(14, test2.destroyOrder);
+ assertEitherEquals(14, 15, test2.createOrder);
+ assertEitherEquals(17, 18, test2.startOrder);
+ assertEquals(19, test2.stopOrder);
+ assertEquals(20, test2.destroyOrder);
}
+ if (test3 != null)
+ {
+ assertEitherEquals(14, 15, test3.createOrder);
+ assertEitherEquals(17, 18, test3.startOrder);
+ assertEquals(21, test3.stopOrder);
+ assertEquals(23, test3.destroyOrder);
+ }
}
+ undeploy(mbeans3);
+ assertNoService(NAME_THREE);
+ assertNotRegistered(NAME_THREE);
}
}
@@ -379,17 +435,21 @@
{
Simple test1 = null;
Simple test2 = null;
+ Simple test3 = null;
boolean error = false;
List<ObjectName> mbeans1 = deploy(resourceName1);
+ List<ObjectName> mbeans3 = null;
try
{
List<ObjectName> mbeans2 = deploy(resourceName2);
+ mbeans3 = deploy(resourceName3);
try
{
assertServiceRunning(NAME_ONE);
assertServiceRunning(NAME_TWO);
+ assertServiceRunning(NAME_THREE);
test1 = getMBean(Simple.class, NAME_ONE, "Instance");
assertEquals("()", test1.constructorUsed);
@@ -403,11 +463,18 @@
assertEquals(4, test2.startOrder);
assertEquals(0, test2.stopOrder);
assertEquals(0, test2.destroyOrder);
+ test3 = getMBean(Simple.class, NAME_THREE, "Instance");
+ assertEquals("()", test3.constructorUsed);
+ assertEquals(5, test3.createOrder);
+ assertEquals(6, test3.startOrder);
+ assertEquals(0, test3.stopOrder);
+ assertEquals(0, test3.destroyOrder);
undeploy(mbeans2);
assertServiceRunning(NAME_ONE);
assertNoService(NAME_TWO);
+ assertServiceRunning(NAME_THREE);
assertEquals(1, test1.createOrder);
assertEquals(3, test1.startOrder);
@@ -415,13 +482,18 @@
assertEquals(0, test1.destroyOrder);
assertEquals(2, test2.createOrder);
assertEquals(4, test2.startOrder);
- assertEquals(5, test2.stopOrder);
- assertEquals(6, test2.destroyOrder);
+ assertEquals(7, test2.stopOrder);
+ assertEquals(8, test2.destroyOrder);
+ assertEquals(5, test3.createOrder);
+ assertEquals(6, test3.startOrder);
+ assertEquals(0, test3.stopOrder);
+ assertEquals(0, test3.destroyOrder);
mbeans2 = deploy(resourceName2);
assertServiceRunning(NAME_ONE);
assertServiceRunning(NAME_TWO);
+ assertServiceRunning(NAME_THREE);
assertEquals(1, test1.createOrder);
assertEquals(3, test1.startOrder);
@@ -429,10 +501,14 @@
assertEquals(0, test1.destroyOrder);
test2 = getMBean(Simple.class, NAME_TWO, "Instance");
assertEquals("()", test1.constructorUsed);
- assertEquals(7, test2.createOrder);
- assertEquals(8, test2.startOrder);
+ assertEquals(9, test2.createOrder);
+ assertEquals(10, test2.startOrder);
assertEquals(0, test2.stopOrder);
assertEquals(0, test2.destroyOrder);
+ assertEquals(5, test3.createOrder);
+ assertEquals(6, test3.startOrder);
+ assertEquals(0, test3.stopOrder);
+ assertEquals(0, test3.destroyOrder);
}
catch (Exception e)
{
@@ -457,10 +533,10 @@
assertEquals(0, test1.destroyOrder);
assertNoService(NAME_TWO);
assertNotRegistered(NAME_TWO);
- assertEquals(7, test2.createOrder);
- assertEquals(8, test2.startOrder);
- assertEquals(9, test2.stopOrder);
- assertEquals(10, test2.destroyOrder);
+ assertEquals(9, test2.createOrder);
+ assertEquals(10, test2.startOrder);
+ assertEquals(11, test2.stopOrder);
+ assertEquals(12, test2.destroyOrder);
}
}
}
@@ -484,18 +560,190 @@
assertNotRegistered(NAME_ONE);
assertEquals(1, test1.createOrder);
assertEquals(3, test1.startOrder);
- assertEquals(11, test1.stopOrder);
- assertEquals(12, test1.destroyOrder);
+ assertEquals(14, test1.stopOrder);
+ assertEquals(16, test1.destroyOrder);
assertNoService(NAME_TWO);
assertNotRegistered(NAME_TWO);
if (test2 != null)
{
- assertEquals(7, test2.createOrder);
- assertEquals(8, test2.startOrder);
- assertEquals(9, test2.stopOrder);
- assertEquals(10, test2.destroyOrder);
+ assertEquals(9, test2.createOrder);
+ assertEquals(10, test2.startOrder);
+ assertEquals(11, test2.stopOrder);
+ assertEquals(12, test2.destroyOrder);
}
+ if (test3 != null)
+ {
+ assertEquals(5, test3.createOrder);
+ assertEquals(6, test3.startOrder);
+ assertEquals(13, test3.stopOrder);
+ assertEquals(15, test3.destroyOrder);
+ }
}
+
+ undeploy(mbeans3);
}
}
+
+ public void testRedeployOnlyDependency() throws Exception
+ {
+ Simple test1 = null;
+ Simple test2 = null;
+
+ boolean error = false;
+
+ List<ObjectName> mbeans1 = deploy(resourceName1);
+ try
+ {
+ List<ObjectName> mbeans2 = deploy(resourceName2);
+ try
+ {
+ assertServiceRunning(NAME_ONE);
+ assertServiceRunning(NAME_TWO);
+
+ test1 = getMBean(Simple.class, NAME_ONE, "Instance");
+ assertEquals("()", test1.constructorUsed);
+ assertEquals(1, test1.createOrder);
+ assertEquals(3, test1.startOrder);
+ assertEquals(0, test1.stopOrder);
+ assertEquals(0, test1.destroyOrder);
+ test2 = getMBean(Simple.class, NAME_TWO, "Instance");
+ assertEquals("()", test2.constructorUsed);
+ assertEquals(2, test2.createOrder);
+ assertEquals(4, test2.startOrder);
+ assertEquals(0, test2.stopOrder);
+ assertEquals(0, test2.destroyOrder);
+
+ undeploy(mbeans2);
+
+ assertServiceDestroyed(NAME_ONE);
+ assertNoService(NAME_TWO);
+
+ assertEquals(1, test1.createOrder);
+ assertEquals(3, test1.startOrder);
+ assertEquals(6, test1.stopOrder);
+ assertEquals(8, test1.destroyOrder);
+ assertEquals(2, test2.createOrder);
+ assertEquals(4, test2.startOrder);
+ assertEquals(5, test2.stopOrder);
+ assertEquals(7, test2.destroyOrder);
+
+ mbeans2 = deploy(resourceName2);
+
+ assertServiceRunning(NAME_ONE);
+ assertServiceRunning(NAME_TWO);
+
+ test1 = getMBean(Simple.class, NAME_ONE, "Instance");
+ assertEquals(9, test1.createOrder);
+ assertEquals(10, test1.startOrder);
+ assertEquals(0, test1.stopOrder);
+ assertEquals(0, test1.destroyOrder);
+ test2 = getMBean(Simple.class, NAME_TWO, "Instance");
+ assertEquals("()", test1.constructorUsed);
+ assertEquals(11, test2.createOrder);
+ assertEquals(12, test2.startOrder);
+ assertEquals(0, test2.stopOrder);
+ assertEquals(0, test2.destroyOrder);
+ }
+ catch (Exception e)
+ {
+ error = true;
+ throw e;
+ }
+ catch (Error e)
+ {
+ error = true;
+ throw e;
+ }
+ finally
+ {
+ undeploy(mbeans2);
+
+ if (error == false)
+ {
+ assertServiceDestroyed(NAME_ONE);
+ assertEquals(9, test1.createOrder);
+ assertEquals(10, test1.startOrder);
+ assertEquals(14, test1.stopOrder);
+ assertEquals(16, test1.destroyOrder);
+ assertNoService(NAME_TWO);
+ assertNotRegistered(NAME_TWO);
+ assertEquals(11, test2.createOrder);
+ assertEquals(12, test2.startOrder);
+ assertEquals(13, test2.stopOrder);
+ assertEquals(15, test2.destroyOrder);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ error = true;
+ throw e;
+ }
+ catch (Error e)
+ {
+ error = true;
+ throw e;
+ }
+ finally
+ {
+ undeploy(mbeans1);
+
+ if (error == false)
+ {
+ assertNoService(NAME_ONE);
+ assertNotRegistered(NAME_ONE);
+ assertEquals(9, test1.createOrder);
+ assertEquals(10, test1.startOrder);
+ assertEquals(14, test1.stopOrder);
+ assertEquals(16, test1.destroyOrder);
+ assertNoService(NAME_TWO);
+ assertNotRegistered(NAME_TWO);
+ if (test2 != null)
+ {
+ assertEquals(11, test2.createOrder);
+ assertEquals(12, test2.startOrder);
+ assertEquals(13, test2.stopOrder);
+ assertEquals(15, test2.destroyOrder);
+ }
+ }
+ }
+ }
+
+ /**
+ * When installing 2 contexts as a result of resolving their dependencies or uninstalling
+ * 2 contexts as a result of undeploying their dependencies we cannot count on the order the 2 contexts are
+ * (un)installed (that is an implementation detail), so check them both
+ */
+ private void assertDoubleEquals(int expectedA, int expectedB, int actualA, int actualB)
+ {
+ if (expectedA == expectedB)
+ {
+ fail("Did not expect same expected values <" + expectedA + ">, <" + expectedB + ">");
+ }
+ if (actualA == actualB)
+ {
+ fail("Did not expect same actual values <" + actualA + ">, <" + actualB + ">");
+ }
+ if ((expectedA != actualA && expectedA != actualB) || (expectedB != actualA && expectedB != actualB))
+ {
+ fail("expected <" + expectedA + ", " + expectedB + "> but was <" + actualA + ", " + actualB + ">");
+ }
+ }
+
+ /**
+ * When installing 2 contexts as a result of resolving their dependencies or uninstalling
+ * 2 contexts as a result of undeploying their dependencies we cannot count on the order the 2 contexts are
+ * (un)installed (that is an implementation detail), so check the expected set
+ */
+ private void assertEitherEquals(int expectedA, int expectedB, int actual)
+ {
+ if (expectedA == expectedB)
+ {
+ fail("Did not expect same expected values <" + expectedA + ">, <" + expectedB + ">");
+ }
+ if (expectedA != actual && expectedB != actual)
+ {
+ fail("expected <" + expectedA + ", " + expectedB + "> but was <" + actual + ">");
+ }
+ }
}
Modified: projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependencyUnitTestCase.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependencyUnitTestCase.java 2009-08-03 12:18:40 UTC (rev 91922)
+++ projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependencyUnitTestCase.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -41,5 +41,6 @@
super(name);
resourceName1 = "NewOnDemandDependency_1.xml";
resourceName2 = "NewOnDemandDependency_2.xml";
+ resourceName3 = "NewOnDemandDependency_3.xml";
}
}
Modified: projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandServerDependencyUnitTestCase.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandServerDependencyUnitTestCase.java 2009-08-03 12:18:40 UTC (rev 91922)
+++ projects/kernel/trunk/jmx-mc-int/src/test/java/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandServerDependencyUnitTestCase.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -41,5 +41,6 @@
super(name);
resourceName1 = "NewOnDemandServerDependency_1.xml";
resourceName2 = "NewOnDemandServerDependency_2.xml";
+ resourceName3 = "NewOnDemandServerDependency_3.xml";
}
}
Added: projects/kernel/trunk/jmx-mc-int/src/test/resources/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependency_3.xml
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/test/resources/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependency_3.xml (rev 0)
+++ projects/kernel/trunk/jmx-mc-int/src/test/resources/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandDependency_3.xml 2009-08-03 12:25:24 UTC (rev 91923)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<server>
+ <mbean name="test:name=3" code="org.jboss.test.system.controller.support.Simple">
+ <depends>test:name=1</depends>
+ </mbean>
+</server>
\ No newline at end of file
Added: projects/kernel/trunk/jmx-mc-int/src/test/resources/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandServerDependency_3.xml
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/test/resources/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandServerDependency_3.xml (rev 0)
+++ projects/kernel/trunk/jmx-mc-int/src/test/resources/org/jboss/test/system/controller/lifecycle/seperated/test/NewOnDemandServerDependency_3.xml 2009-08-03 12:25:24 UTC (rev 91923)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<server>
+ <mbean name="test:name=3" code="org.jboss.test.system.controller.support.Simple">
+ <depends>test:name=1</depends>
+ </mbean>
+</server>
\ No newline at end of file
Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/GenericBeanFactoryOnDemandDependencyTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/GenericBeanFactoryOnDemandDependencyTestCase.java 2009-08-03 12:18:40 UTC (rev 91922)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/GenericBeanFactoryOnDemandDependencyTestCase.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -115,6 +115,7 @@
ControllerContext context1 = assertInstall(0, "Name1", ControllerState.DESCRIBED);
ControllerContext context2 = assertInstall(1, "Name2");
+ ControllerContext context3 = assertInstall(2, "Name3");
assertContext("Name1");
GenericBeanFactory factory1 = (GenericBeanFactory) context1.getTarget();
@@ -128,16 +129,26 @@
assertEquals("String2", bean2.getString());
assertEquals(factory1, bean2.getFactory());
+ GenericBeanFactory factory3 = (GenericBeanFactory) context3.getTarget();
+ SimpleBeanWithDependency bean3 = (SimpleBeanWithDependency) factory3.createBean();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(factory1, bean3.getFactory());
+
assertUninstall("Name1");
assertEquals(ControllerState.ERROR, context1.getState());
assertEquals(ControllerState.INSTANTIATED, context2.getState());
assertNotInstalled("Name2");
+ assertEquals(ControllerState.INSTANTIATED, context3.getState());
+ assertNotInstalled("Name3");
context2 = assertContext("Name2", ControllerState.INSTANTIATED);
+ context3 = assertContext("Name3", ControllerState.INSTANTIATED);
context1 = assertInstall(0, "Name1");
assertEquals(ControllerState.INSTALLED, context2.getState());
+ assertEquals(ControllerState.INSTALLED, context3.getState());
factory1 = (GenericBeanFactory) context1.getTarget();
bean1 = (SimpleBean) factory1.createBean();
@@ -150,6 +161,12 @@
assertEquals("String2", bean2.getString());
assertEquals(factory1, bean2.getFactory());
+ factory3 = (GenericBeanFactory) context3.getTarget();
+ bean3 = (SimpleBeanWithDependency) factory3.createBean();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(factory1, bean3.getFactory());
+
assertUninstall("Name2");
context1 = assertContext("Name1");
@@ -158,6 +175,13 @@
assertNotNull(bean1);
assertEquals("String1", bean1.getString());
+ context3 = assertContext("Name3");
+ factory3 = (GenericBeanFactory) context3.getTarget();
+ bean3 = (SimpleBeanWithDependency) factory3.createBean();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(factory1, bean3.getFactory());
+
context2 = assertInstall(1, "Name2");
factory1 = (GenericBeanFactory) context1.getTarget();
@@ -170,6 +194,49 @@
assertNotNull(bean2);
assertEquals("String2", bean2.getString());
assertEquals(factory1, bean2.getFactory());
+
+ factory3 = (GenericBeanFactory) context3.getTarget();
+ bean3 = (SimpleBeanWithDependency) factory3.createBean();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(factory1, bean3.getFactory());
+
+ assertUninstall("Name2");
+ factory1 = (GenericBeanFactory) context1.getTarget();
+ bean1 = (SimpleBean) factory1.createBean();
+ assertNotNull(bean1);
+ assertEquals("String1", bean1.getString());
+
+ context3 = assertContext("Name3");
+ bean3 = (SimpleBeanWithDependency) factory3.createBean();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(factory1, bean3.getFactory());
+
+ assertUninstall("Name3");
+ //On demand bean has no remaining dependencies so it gets uninstalled back to the described state
+ context1 = assertContext("Name1", ControllerState.DESCRIBED);
+ assertNull(context1.getTarget());
+
+ context2 = assertInstall(1, "Name2");
+
+ factory1 = (GenericBeanFactory) context1.getTarget();
+ bean1 = (SimpleBean) factory1.createBean();
+ assertNotNull(bean1);
+ assertEquals("String1", bean1.getString());
+
+ factory2 = (GenericBeanFactory) context2.getTarget();
+ bean2 = (SimpleBeanWithDependency) factory2.createBean();
+ assertNotNull(bean2);
+ assertEquals("String2", bean2.getString());
+ assertEquals(factory1, bean2.getFactory());
+
+ context3 = assertInstall(2, "Name3");
+ factory3 = (GenericBeanFactory) context3.getTarget();
+ bean3 = (SimpleBeanWithDependency) factory3.createBean();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(factory1, bean3.getFactory());
}
public void onDemandDependencyReinstall() throws Throwable
@@ -187,6 +254,10 @@
addBeanProperty(metaData2, new AbstractPropertyMetaData("string", "String2"));
addBeanProperty(metaData2, new AbstractPropertyMetaData("factory", new AbstractDependencyValueMetaData("Name1")));
- setBeanMetaDatas(new BeanMetaData[] { getBeanMetaData(metaData1), getBeanMetaData(metaData2) });
+ GenericBeanFactoryMetaData metaData3 = new GenericBeanFactoryMetaData("Name3", SimpleBeanWithDependencyImpl.class.getName());
+ addBeanProperty(metaData3, new AbstractPropertyMetaData("string", "String3"));
+ addBeanProperty(metaData3, new AbstractPropertyMetaData("factory", new AbstractDependencyValueMetaData("Name1")));
+
+ setBeanMetaDatas(new BeanMetaData[] { getBeanMetaData(metaData1), getBeanMetaData(metaData2), getBeanMetaData(metaData3) });
}
}
\ No newline at end of file
Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java 2009-08-03 12:18:40 UTC (rev 91922)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java 2009-08-03 12:25:24 UTC (rev 91923)
@@ -113,6 +113,7 @@
ControllerContext context1 = assertInstall(0, "Name1", ControllerState.DESCRIBED);
ControllerContext context2 = assertInstall(1, "Name2");
+ ControllerContext context3 = assertInstall(2, "Name3");
assertContext("Name1");
SimpleBean bean1 = (SimpleBean) context1.getTarget();
@@ -123,17 +124,26 @@
assertNotNull(bean2);
assertEquals("String2", bean2.getString());
assertEquals(bean1, bean2.getSimpleBean());
+
+ SimpleBeanWithDependency bean3 = (SimpleBeanWithDependency) context3.getTarget();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(bean1, bean3.getSimpleBean());
assertUninstall("Name1");
assertEquals(ControllerState.ERROR, context1.getState());
assertEquals(ControllerState.INSTANTIATED, context2.getState());
assertNotInstalled("Name2");
+ assertEquals(ControllerState.INSTANTIATED, context3.getState());
+ assertNotInstalled("Name3");
context2 = assertContext("Name2", ControllerState.INSTANTIATED);
+ context3 = assertContext("Name3", ControllerState.INSTANTIATED);
context1 = assertInstall(0, "Name1");
assertEquals(ControllerState.INSTALLED, context2.getState());
+ assertEquals(ControllerState.INSTALLED, context3.getState());
bean1 = (SimpleBean) context1.getTarget();
assertNotNull(bean1);
@@ -144,6 +154,11 @@
assertEquals("String2", bean2.getString());
assertEquals(bean1, bean2.getSimpleBean());
+ bean3 = (SimpleBeanWithDependency) context3.getTarget();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(bean1, bean3.getSimpleBean());
+
assertUninstall("Name2");
context1 = assertContext("Name1");
@@ -151,6 +166,12 @@
assertNotNull(bean1);
assertEquals("String1", bean1.getString());
+ context3 = assertContext("Name3");
+ bean3 = (SimpleBeanWithDependency) context3.getTarget();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(bean1, bean3.getSimpleBean());
+
context2 = assertInstall(1, "Name2");
bean1 = (SimpleBean) context1.getTarget();
@@ -161,6 +182,44 @@
assertNotNull(bean2);
assertEquals("String2", bean2.getString());
assertEquals(bean1, bean2.getSimpleBean());
+
+ bean3 = (SimpleBeanWithDependency) context3.getTarget();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(bean1, bean3.getSimpleBean());
+
+ assertUninstall("Name2");
+ context1 = assertContext("Name1");
+ bean1 = (SimpleBean) context1.getTarget();
+ assertNotNull(bean1);
+ assertEquals("String1", bean1.getString());
+
+ context3 = assertContext("Name3");
+ bean3 = (SimpleBeanWithDependency) context3.getTarget();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(bean1, bean3.getSimpleBean());
+
+ assertUninstall("Name3");
+ context1 = assertContext("Name1", ControllerState.DESCRIBED);
+ assertNull(context1.getTarget());
+
+ context2 = assertInstall(1, "Name2");
+
+ bean1 = (SimpleBean) context1.getTarget();
+ assertNotNull(bean1);
+ assertEquals("String1", bean1.getString());
+
+ bean2 = (SimpleBeanWithDependency) context2.getTarget();
+ assertNotNull(bean2);
+ assertEquals("String2", bean2.getString());
+ assertEquals(bean1, bean2.getSimpleBean());
+
+ context3 = assertInstall(2, "Name3");
+ bean3 = (SimpleBeanWithDependency) context3.getTarget();
+ assertNotNull(bean3);
+ assertEquals("String3", bean3.getString());
+ assertEquals(bean1, bean3.getSimpleBean());
}
public void onDemandDependencyReinstall() throws Throwable
@@ -182,6 +241,12 @@
attributes2.add(new AbstractPropertyMetaData("simpleBean", new AbstractDependencyValueMetaData("Name1")));
metaData2.setProperties(attributes2);
- setBeanMetaDatas(new BeanMetaData[] { metaData1, metaData2 });
+ AbstractBeanMetaData metaData3 = new AbstractBeanMetaData("Name3", SimpleBeanWithDependencyImpl.class.getName());
+ HashSet<PropertyMetaData> attributes3 = new HashSet<PropertyMetaData>();
+ attributes3.add(new AbstractPropertyMetaData("string", "String3"));
+ attributes3.add(new AbstractPropertyMetaData("simpleBean", new AbstractDependencyValueMetaData("Name1")));
+ metaData3.setProperties(attributes3);
+
+ setBeanMetaDatas(new BeanMetaData[] { metaData1, metaData2, metaData3});
}
}
\ No newline at end of file
Added: projects/kernel/trunk/kernel/src/test/resources/xml-test/org/jboss/test/kernel/dependency/test/testGenericBeanFactoryOnDemandDependencyReinstall2.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/xml-test/org/jboss/test/kernel/dependency/test/testGenericBeanFactoryOnDemandDependencyReinstall2.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/xml-test/org/jboss/test/kernel/dependency/test/testGenericBeanFactoryOnDemandDependencyReinstall2.xml 2009-08-03 12:25:24 UTC (rev 91923)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+ xmlns="urn:jboss:bean-deployer">
+ <beanfactory name="Name3" class="org.jboss.test.kernel.dependency.support.SimpleBeanWithDependencyImpl">
+ <property name="string">String3</property>
+ <property name="factory"><inject bean="Name1"/></property>
+ </beanfactory>
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/xml-test/org/jboss/test/kernel/dependency/test/testOnDemandDependencyReinstall2.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/xml-test/org/jboss/test/kernel/dependency/test/testOnDemandDependencyReinstall2.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/xml-test/org/jboss/test/kernel/dependency/test/testOnDemandDependencyReinstall2.xml 2009-08-03 12:25:24 UTC (rev 91923)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+ xmlns="urn:jboss:bean-deployer">
+ <bean name="Name3" class="org.jboss.test.kernel.dependency.support.SimpleBeanWithDependencyImpl">
+ <property name="string">String3</property>
+ <property name="simpleBean"><inject bean="Name1"/></property>
+ </bean>
+</deployment>
More information about the jboss-cvs-commits
mailing list