[jboss-cvs] JBossAS SVN: r98093 - in projects/jboss-deployers/trunk/deployers-impl/src: test/java/org/jboss/test/deployers/deployer/test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Dec 21 12:46:47 EST 2009
Author: alesj
Date: 2009-12-21 12:46:46 -0500 (Mon, 21 Dec 2009)
New Revision: 98093
Added:
projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/KahnDeployerSorter.java
Modified:
projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java
Log:
[JBDEPLOY-230]; port Carlo's deployers sort alg.
I just hope the change to tests didn't break any previous test.
(as we all know how Carlo "fixes" tests :-))
Added: projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/KahnDeployerSorter.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/KahnDeployerSorter.java (rev 0)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/KahnDeployerSorter.java 2009-12-21 17:46:46 UTC (rev 98093)
@@ -0,0 +1,364 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright (c) 2009, 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.deployers.plugins.sort;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.IdentityHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.deployers.spi.Ordered;
+import org.jboss.deployers.spi.deployer.Deployer;
+
+/**
+ * @author <a href="cdewolf at redhat.com">Carlo de Wolf</a>
+ */
+public class KahnDeployerSorter implements DeployerSorter
+{
+ private static class Edge
+ {
+ Deployer from;
+ String input;
+ Deployer to;
+
+ Edge(Deployer from, String input, Deployer to)
+ {
+ if(from.equals(to))
+ throw new IllegalArgumentException("cyclic edge");
+ this.from = from;
+ this.input = input;
+ this.to = to;
+ }
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if(this == o) return true;
+ if(o == null || getClass() != o.getClass()) return false;
+
+ Edge edge = (Edge) o;
+
+ if(from != null ? !from.equals(edge.from) : edge.from != null) return false;
+ if(!input.equals(edge.input)) return false;
+ if(!to.equals(edge.to)) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = from != null ? from.hashCode() : 0;
+ result = 31 * result + input.hashCode();
+ result = 31 * result + to.hashCode();
+ return result;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Edge{" +
+ "from=" + from +
+ ", input='" + input + '\'' +
+ ", to=" + to +
+ '}';
+ }
+ }
+
+ private static class ScoredDeployer
+ {
+ Deployer deployer;
+ int score;
+
+ ScoredDeployer(Deployer deployer)
+ {
+ this.deployer = deployer;
+ this.score = deployer.getRelativeOrder();
+ }
+
+ @Override
+ public String toString()
+ {
+ return "ScoredDeployer{" +
+ "deployer=" + deployer +
+ ", score=" + score +
+ '}';
+ }
+ }
+
+ protected int compare(Deployer one, Deployer two)
+ {
+ int relation = one.getRelativeOrder() - two.getRelativeOrder();
+ if(relation == 0)
+ relation = one.hashCode() - two.hashCode();
+ assert relation != 0;
+ return relation;
+ }
+
+ protected Collection<Edge> createEdges(Deployer from, Map<String, Collection<Deployer>> inputCache, Set<String> outputs)
+ {
+ Collection<Edge> result = new ArrayList<Edge>();
+ for(String output : outputs)
+ {
+ Collection<Deployer> deployers = inputCache.get(output);
+ if(deployers != null) for(Deployer to : deployers)
+ {
+ if(from != to)
+ result.add(new Edge(from, output, to));
+ }
+ }
+ return result;
+ }
+
+ protected Collection<Edge> createEdges(Map<String, Collection<Deployer>> outputCache, Set<String> inputs, Deployer to)
+ {
+ Collection<Edge> result = new ArrayList<Edge>();
+ for(String input : inputs)
+ {
+ Collection<Deployer> deployers = outputCache.get(input);
+ if(deployers != null) for(Deployer from : deployers)
+ {
+ result.add(new Edge(from, input, to));
+ }
+ }
+ return result;
+ }
+
+ protected Collection<Edge> findInputs(Map<Deployer, Set<Edge>> edgeCache, Deployer from, Map<String, Collection<Deployer>> cache, Set<String> inputs)
+ {
+ Collection<Edge> result = new ArrayList<Edge>();
+ for(String input : inputs)
+ {
+ //result.addAll(cache.get(input));
+ Collection<Deployer> deployers = cache.get(input);
+ if(deployers != null) for(Deployer d : deployers)
+ {
+ if(d != from)
+ {
+ //result.add(new Edge(from, input, d));
+ Edge potential = new Edge(from, input, d);
+ Set<Edge> edges = edgeCache.get(d);
+ if(edges.contains(potential))
+ result.add(potential);
+ }
+ }
+ }
+ return result;
+ }
+
+ protected boolean isInputMaster(Collection<Deployer> deployers, Deployer deployer, String input)
+ {
+ for(Deployer other : deployers)
+ {
+ if(isTransient(other, input))
+ {
+ if(compare(other, deployer) > 0)
+ return false;
+ }
+ }
+ return true;
+ }
+
+ protected boolean isTransient(Deployer deployer, String input)
+ {
+ return deployer.getInputs().contains(input) && deployer.getOutputs().contains(input);
+ }
+
+ protected void process(Deployer deployer, Collection<Deployer> s, Map<String, Collection<Deployer>> inputCache, Map<Deployer, Set<Edge>> edgeCache, Set<String> outputs, Map<String, Collection<Deployer>> outputCache)
+ {
+ outputs.addAll(deployer.getOutputs());
+ if(deployer.getInputs() == null || deployer.getInputs().size() == 0)
+ s.add(deployer);
+ else
+ {
+ Set<Edge> edges = edgeCache.get(deployer);
+ assert edges == null;
+ edges = new HashSet<Edge>();
+ edgeCache.put(deployer, edges);
+
+ for(String input : deployer.getInputs())
+ {
+ Collection<Deployer> c = inputCache.get(input);
+ if(c == null)
+ {
+ c = new ArrayList<Deployer>();
+ inputCache.put(input, c);
+ }
+ c.add(deployer);
+ }
+
+ Collection<Edge> c = createEdges(outputCache, deployer.getInputs(), deployer);
+ if(c.isEmpty())
+ {
+ // might be a bit premature, see below
+ s.add(deployer);
+ }
+ else
+ {
+ edges.addAll(c);
+ }
+ }
+
+ for(String output : deployer.getOutputs())
+ {
+ Collection<Deployer> c = outputCache.get(output);
+ if(c == null)
+ {
+ c = new ArrayList<Deployer>();
+ outputCache.put(output, c);
+ }
+ c.add(deployer);
+ }
+
+ Collection<Edge> edges = createEdges(deployer, inputCache, deployer.getOutputs());
+ for(Edge e : edges)
+ {
+ Set<Edge> cachedEdges = edgeCache.get(e.to);
+ if(cachedEdges == null)
+ {
+ cachedEdges = new HashSet<Edge>();
+ edgeCache.put(e.to, cachedEdges);
+ }
+ cachedEdges.add(e);
+ // remove a prematurely added deployer
+ s.remove(e.to);
+ }
+ }
+
+ /**
+ * Break the cyclic graph by processing transient deployers. Basically choosing one edge which we want removed.
+ */
+ public void processTransientDeployers(List<Deployer> s, Map<String, Collection<Deployer>> inputCache, Map<String, Collection<Deployer>> outputCache, Map<Deployer, Set<Edge>> edgeCache)
+ {
+ for(String input : inputCache.keySet())
+ {
+ Collection<Deployer> others = outputCache.get(input);
+ if(others == null)
+ continue;
+ List<Deployer> deployers = new ArrayList<Deployer>(inputCache.get(input));
+ deployers.retainAll(others);
+ if(deployers.isEmpty() || deployers.size() == 1)
+ continue;
+
+ List<ScoredDeployer> scoredDeployers = new ArrayList<ScoredDeployer>();
+ // TODO: too slow
+ for(Deployer d : deployers)
+ {
+ ScoredDeployer scoredDeployer = new ScoredDeployer(d);
+ scoredDeployers.add(scoredDeployer);
+
+ Set<Edge> edges = edgeCache.get(d);
+ for(Edge e : new HashSet<Edge>(edges))
+ {
+ if(deployers.contains(e.from) && input.equals(e.input))
+ edges.remove(e);
+ else if(deployers.contains(e.from))
+ scoredDeployer.score++;
+ }
+ }
+
+ Comparator<? super ScoredDeployer> comparator = new Comparator<ScoredDeployer>() {
+ public int compare(ScoredDeployer o1, ScoredDeployer o2)
+ {
+ int relation = o1.score - o2.score;
+ if(relation == 0)
+ relation = Ordered.COMPARATOR.compare(o1.deployer, o2.deployer);
+ return relation;
+ }
+ };
+ Collections.sort(scoredDeployers, comparator);
+
+ for(int i = 1; i < scoredDeployers.size(); i++)
+ {
+ Set<Edge> edges = edgeCache.get(scoredDeployers.get(i).deployer);
+ edges.add(new Edge(scoredDeployers.get(0).deployer, input, scoredDeployers.get(i).deployer));
+ }
+
+ // add the top one if it doesn't have any incoming edges
+ // note that the normal process step does the same thing, so exclude it.
+ Deployer deployer = scoredDeployers.get(0).deployer;
+ if(edgeCache.get(deployer).isEmpty() && !s.contains(deployer))
+ s.add(deployer);
+ }
+ }
+
+ public List<Deployer> sortDeployers(List<Deployer> original, Deployer newDeployer)
+ {
+ List<Deployer> result = new ArrayList<Deployer>();
+ // S ← Set of all nodes with no incoming edges
+ List<Deployer> s = new ArrayList<Deployer>();
+ Map<String, Collection<Deployer>> inputCache = new HashMap<String, Collection<Deployer>>();
+ Map<Deployer, Set<Edge>> edgeCache = new IdentityHashMap<Deployer, Set<Edge>>();
+ Set<String> outputs = new HashSet<String>();
+ Map<String, Collection<Deployer>> outputCache = new HashMap<String, Collection<Deployer>>();
+ for(Deployer deployer : original)
+ {
+ process(deployer, s, inputCache, edgeCache, outputs, outputCache);
+ }
+ process(newDeployer, s, inputCache, edgeCache, outputs, outputCache);
+
+ // find transient deployers and sort them out
+ processTransientDeployers(s, inputCache, outputCache, edgeCache);
+
+ // never, ever ask why this is here.
+ // I really mean it, do not ask.
+ // Seriously I will not give a sensible answer to this one.
+ // Okay, okay, stop bitching. There is a requirement that deployer need to be in name ordering.
+ // setupSillyNameEdges(deployer, newDeployer); // hmm does work out
+ Collections.sort(s, Ordered.COMPARATOR);
+
+ while(!s.isEmpty())
+ {
+ Deployer deployer = s.remove(0);
+ result.add(deployer);
+ // for each node m with an edge e from n to m do
+ for(Edge e : findInputs(edgeCache, deployer, inputCache, deployer.getOutputs()))
+ {
+ // remove edge e from the graph
+ Set<Edge> edges = edgeCache.get(e.to);
+ edges.remove(e);
+ // if m has no other incoming edges then insert m into S
+ if(edges.isEmpty())
+ s.add(e.to);
+ }
+ }
+ // if graph has edges then output error message (graph has at least one cycle)
+ String message = "";
+ for(Set<Edge> edges : edgeCache.values())
+ {
+ if(!edges.isEmpty())
+ message += "edges: " + edges;
+ }
+ if(message.length() > 0)
+ throw new IllegalStateException(message);
+
+ assert result.size() == original.size() + 1 : "not all deployers made it";
+ return result;
+ }
+}
Modified: projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java 2009-12-21 17:37:17 UTC (rev 98092)
+++ projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java 2009-12-21 17:46:46 UTC (rev 98093)
@@ -25,6 +25,8 @@
import junit.framework.TestSuite;
import org.jboss.deployers.client.spi.DeployerClient;
import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.plugins.main.MainDeployerImpl;
+import org.jboss.deployers.spi.deployer.Deployer;
import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
import org.jboss.deployers.spi.deployer.DeploymentStages;
import org.jboss.test.deployers.AbstractDeployerTest;
@@ -40,6 +42,26 @@
*/
public class DeployerFlowUnitTestCase extends AbstractDeployerTest
{
+ private static void assertDeploy(TestFlowDeployer deployer)
+ {
+ assertTrue(deployer + " must deploy", deployer.getDeployOrder() > 0);
+ }
+
+ private static void assertDeployBefore(TestFlowDeployer deployer1, TestFlowDeployer deployer2)
+ {
+ assertTrue(deployer2 + " must deploy before " + deployer1, deployer1.getDeployOrder() > deployer2.getDeployOrder());
+ }
+
+ private static void assertUndeploy(TestFlowDeployer deployer)
+ {
+ assertTrue(deployer + " must undeploy", deployer.getUndeployOrder() > 0);
+ }
+
+ private static void assertUndeployBefore(TestFlowDeployer deployer1, TestFlowDeployer deployer2)
+ {
+ assertTrue(deployer2 + " must undeploy after " + deployer1, deployer1.getUndeployOrder() < deployer2.getUndeployOrder());
+ }
+
public static Test suite()
{
return new TestSuite(DeployerFlowUnitTestCase.class);
@@ -171,9 +193,10 @@
main.addDeployment(deployment);
main.process();
- assertEquals(1, deployer1.getDeployOrder());
- assertEquals(2, deployer2.getDeployOrder());
- assertEquals(3, deployer3.getDeployOrder());
+ // B can appear at any position
+ // BCA, CBA, CAB
+ assertDeployBefore(deployer2, deployer1);
+ assertTrue("C doesn't deploy", deployer1.getDeployOrder() > 0);
assertEquals(-1, deployer1.getUndeployOrder());
assertEquals(-1, deployer2.getUndeployOrder());
assertEquals(-1, deployer3.getUndeployOrder());
@@ -430,6 +453,19 @@
public void testComplicated() throws Exception
{
+ // (1) (2) (3)
+ // \ / |
+ // T1 T2
+ // | |
+ // (4)
+ // |
+ // T3
+ // |
+ // (5)
+ // | |
+ // T1 T3
+ // \ /
+ // (6)
DeployerClient main = createMainDeployer();
TestFlowDeployer deployer6 = new TestFlowDeployer("6");
deployer6.setInputs("test1", "test3");
@@ -456,12 +492,11 @@
main.addDeployment(deployment);
main.process();
- assertEquals(1, deployer1.getDeployOrder());
- assertEquals(2, deployer2.getDeployOrder());
- assertEquals(3, deployer3.getDeployOrder());
- assertEquals(4, deployer4.getDeployOrder());
- assertEquals(5, deployer5.getDeployOrder());
- assertEquals(6, deployer6.getDeployOrder());
+ assertDeployBefore(deployer6, deployer1);
+ assertDeployBefore(deployer6, deployer2);
+ assertDeployBefore(deployer4, deployer3);
+ assertDeployBefore(deployer5, deployer4);
+ assertDeployBefore(deployer6, deployer5);
assertEquals(-1, deployer1.getUndeployOrder());
assertEquals(-1, deployer2.getUndeployOrder());
assertEquals(-1, deployer3.getUndeployOrder());
@@ -472,34 +507,30 @@
main.removeDeployment(deployment);
main.process();
- assertEquals(1, deployer1.getDeployOrder());
- assertEquals(2, deployer2.getDeployOrder());
- assertEquals(3, deployer3.getDeployOrder());
- assertEquals(4, deployer4.getDeployOrder());
- assertEquals(5, deployer5.getDeployOrder());
- assertEquals(6, deployer6.getDeployOrder());
- assertEquals(12, deployer1.getUndeployOrder());
- assertEquals(11, deployer2.getUndeployOrder());
- assertEquals(10, deployer3.getUndeployOrder());
- assertEquals(9, deployer4.getUndeployOrder());
- assertEquals(8, deployer5.getUndeployOrder());
- assertEquals(7, deployer6.getUndeployOrder());
+ assertDeployBefore(deployer6, deployer1);
+ assertDeployBefore(deployer6, deployer2);
+ assertDeployBefore(deployer4, deployer3);
+ assertDeployBefore(deployer5, deployer4);
+ assertDeployBefore(deployer6, deployer5);
+ assertUndeployBefore(deployer6, deployer1);
+ assertUndeployBefore(deployer6, deployer2);
+ assertUndeployBefore(deployer4, deployer3);
+ assertUndeployBefore(deployer5, deployer4);
+ assertUndeployBefore(deployer6, deployer5);
main.addDeployment(deployment);
main.process();
- assertEquals(13, deployer1.getDeployOrder());
- assertEquals(14, deployer2.getDeployOrder());
- assertEquals(15, deployer3.getDeployOrder());
- assertEquals(16, deployer4.getDeployOrder());
- assertEquals(17, deployer5.getDeployOrder());
- assertEquals(18, deployer6.getDeployOrder());
- assertEquals(12, deployer1.getUndeployOrder());
- assertEquals(11, deployer2.getUndeployOrder());
- assertEquals(10, deployer3.getUndeployOrder());
- assertEquals(9, deployer4.getUndeployOrder());
- assertEquals(8, deployer5.getUndeployOrder());
- assertEquals(7, deployer6.getUndeployOrder());
+ assertDeployBefore(deployer6, deployer1);
+ assertDeployBefore(deployer6, deployer2);
+ assertDeployBefore(deployer4, deployer3);
+ assertDeployBefore(deployer5, deployer4);
+ assertDeployBefore(deployer6, deployer5);
+ assertUndeployBefore(deployer6, deployer1);
+ assertUndeployBefore(deployer6, deployer2);
+ assertUndeployBefore(deployer4, deployer3);
+ assertUndeployBefore(deployer5, deployer4);
+ assertUndeployBefore(deployer6, deployer5);
}
public void testIntermediateIsRelativelySorted() throws Exception
@@ -528,22 +559,18 @@
main.removeDeployment(deployment);
main.process();
- assertEquals(1, deployer1.getDeployOrder());
- assertEquals(2, deployer2.getDeployOrder());
- assertEquals(3, deployer3.getDeployOrder());
- assertEquals(6, deployer1.getUndeployOrder());
- assertEquals(5, deployer2.getUndeployOrder());
- assertEquals(4, deployer3.getUndeployOrder());
+ assertDeployBefore(deployer2, deployer1);
+ assertTrue("C doesn't deploy", deployer1.getDeployOrder() > 0);
+ assertUndeployBefore(deployer2, deployer1);
+ assertTrue("C doesn't undeploy", deployer1.getUndeployOrder() > 0);
main.addDeployment(deployment);
main.process();
- assertEquals(7, deployer1.getDeployOrder());
- assertEquals(8, deployer2.getDeployOrder());
- assertEquals(9, deployer3.getDeployOrder());
- assertEquals(6, deployer1.getUndeployOrder());
- assertEquals(5, deployer2.getUndeployOrder());
- assertEquals(4, deployer3.getUndeployOrder());
+ assertDeployBefore(deployer2, deployer1);
+ assertTrue("C doesn't deploy", deployer1.getDeployOrder() > 0);
+ assertUndeployBefore(deployer2, deployer1);
+ assertTrue("C doesn't undeploy", deployer1.getUndeployOrder() > 0);
}
public void testTransitionOrdering() throws Exception
@@ -648,6 +675,15 @@
public void testDoubleCycle() throws Exception
{
+ // (D) (H) (B) (E) (G)
+ // | |
+ // T1 2nd
+ // | |
+ // (F) (C)
+ // |
+ // T2
+ // |
+ // (A)
DeployerClient main = createMainDeployer();
TestFlowDeployer deployer2 = new TestFlowDeployer("A");
@@ -684,14 +720,12 @@
main.addDeployment(deployment);
main.process();
- assertEquals(1, deployer3.getDeployOrder());
- assertEquals(2, deployer8.getDeployOrder());
- assertEquals(3, deployer6.getDeployOrder());
- assertEquals(4, deployer1.getDeployOrder());
- assertEquals(5, deployer4.getDeployOrder());
- assertEquals(6, deployer5.getDeployOrder());
- assertEquals(7, deployer2.getDeployOrder());
- assertEquals(8, deployer7.getDeployOrder());
+ assertDeploy(deployer3);
+ assertDeployBefore(deployer6, deployer8);
+ assertDeployBefore(deployer5, deployer1);
+ assertDeploy(deployer4);
+ assertDeployBefore(deployer2, deployer5);
+ assertDeploy(deployer7);
assertEquals(-1, deployer3.getUndeployOrder());
assertEquals(-1, deployer8.getUndeployOrder());
assertEquals(-1, deployer6.getUndeployOrder());
@@ -704,42 +738,34 @@
main.removeDeployment(deployment);
main.process();
- assertEquals(1, deployer3.getDeployOrder());
- assertEquals(2, deployer8.getDeployOrder());
- assertEquals(3, deployer6.getDeployOrder());
- assertEquals(4, deployer1.getDeployOrder());
- assertEquals(5, deployer4.getDeployOrder());
- assertEquals(6, deployer5.getDeployOrder());
- assertEquals(7, deployer2.getDeployOrder());
- assertEquals(8, deployer7.getDeployOrder());
- assertEquals(16, deployer3.getUndeployOrder());
- assertEquals(15, deployer8.getUndeployOrder());
- assertEquals(14, deployer6.getUndeployOrder());
- assertEquals(13, deployer1.getUndeployOrder());
- assertEquals(12, deployer4.getUndeployOrder());
- assertEquals(11, deployer5.getUndeployOrder());
- assertEquals(10, deployer2.getUndeployOrder());
- assertEquals(9, deployer7.getUndeployOrder());
+ assertDeploy(deployer3);
+ assertDeployBefore(deployer6, deployer8);
+ assertDeployBefore(deployer5, deployer1);
+ assertDeploy(deployer4);
+ assertDeployBefore(deployer2, deployer5);
+ assertDeploy(deployer7);
+ assertUndeploy(deployer3);
+ assertUndeployBefore(deployer6, deployer8);
+ assertUndeployBefore(deployer5, deployer1);
+ assertUndeploy(deployer4);
+ assertUndeployBefore(deployer2, deployer5);
+ assertUndeploy(deployer7);
main.addDeployment(deployment);
main.process();
- assertEquals(17, deployer3.getDeployOrder());
- assertEquals(18, deployer8.getDeployOrder());
- assertEquals(19, deployer6.getDeployOrder());
- assertEquals(20, deployer1.getDeployOrder());
- assertEquals(21, deployer4.getDeployOrder());
- assertEquals(22, deployer5.getDeployOrder());
- assertEquals(23, deployer2.getDeployOrder());
- assertEquals(24, deployer7.getDeployOrder());
- assertEquals(16, deployer3.getUndeployOrder());
- assertEquals(15, deployer8.getUndeployOrder());
- assertEquals(14, deployer6.getUndeployOrder());
- assertEquals(13, deployer1.getUndeployOrder());
- assertEquals(12, deployer4.getUndeployOrder());
- assertEquals(11, deployer5.getUndeployOrder());
- assertEquals(10, deployer2.getUndeployOrder());
- assertEquals(9, deployer7.getUndeployOrder());
+ assertDeploy(deployer3);
+ assertDeployBefore(deployer6, deployer8);
+ assertDeployBefore(deployer5, deployer1);
+ assertDeploy(deployer4);
+ assertDeployBefore(deployer2, deployer5);
+ assertDeploy(deployer7);
+ assertUndeploy(deployer3);
+ assertUndeployBefore(deployer6, deployer8);
+ assertUndeployBefore(deployer5, deployer1);
+ assertUndeploy(deployer4);
+ assertUndeployBefore(deployer2, deployer5);
+ assertUndeploy(deployer7);
}
public void testOrderedThenFlowWithPassThrough() throws Exception
@@ -893,10 +919,21 @@
assertEquals(1, deployer1.getDeployOrder());
assertEquals(2, deployer2.getDeployOrder());
assertEquals(3, deployer3.getDeployOrder());
- assertEquals(4, deployer7.getDeployOrder());
- assertEquals(5, deployer4.getDeployOrder());
- assertEquals(6, deployer5.getDeployOrder());
- assertEquals(7, deployer6.getDeployOrder());
+// assertEquals(4, deployer7.getDeployOrder());
+ assertDeployBefore(deployer2, deployer1);
+ assertDeployBefore(deployer3, deployer1);
+ assertDeployBefore(deployer7, deployer2);
+ assertDeployBefore(deployer7, deployer3);
+ assertDeployBefore(deployer4, deployer2);
+ assertDeployBefore(deployer4, deployer3);
+ assertDeployBefore(deployer5, deployer4);
+ assertDeployBefore(deployer5, deployer7);
+ assertDeployBefore(deployer6, deployer5);
+ assertDeployBefore(deployer6, deployer2);
+ assertDeployBefore(deployer6, deployer3);
+// assertEquals(5, deployer4.getDeployOrder());
+// assertEquals(6, deployer5.getDeployOrder());
+// assertEquals(7, deployer6.getDeployOrder());
assertEquals(-1, deployer1.getUndeployOrder());
assertEquals(-1, deployer2.getUndeployOrder());
assertEquals(-1, deployer3.getUndeployOrder());
@@ -910,17 +947,39 @@
assertEquals(1, deployer1.getDeployOrder());
assertEquals(2, deployer2.getDeployOrder());
assertEquals(3, deployer3.getDeployOrder());
- assertEquals(4, deployer7.getDeployOrder());
- assertEquals(5, deployer4.getDeployOrder());
- assertEquals(6, deployer5.getDeployOrder());
- assertEquals(7, deployer6.getDeployOrder());
+// assertEquals(4, deployer7.getDeployOrder());
+ assertDeployBefore(deployer2, deployer1);
+ assertDeployBefore(deployer3, deployer1);
+ assertDeployBefore(deployer7, deployer2);
+ assertDeployBefore(deployer7, deployer3);
+ assertDeployBefore(deployer4, deployer2);
+ assertDeployBefore(deployer4, deployer3);
+ assertDeployBefore(deployer5, deployer4);
+ assertDeployBefore(deployer5, deployer7);
+ assertDeployBefore(deployer6, deployer5);
+ assertDeployBefore(deployer6, deployer2);
+ assertDeployBefore(deployer6, deployer3);
+// assertEquals(5, deployer4.getDeployOrder());
+// assertEquals(6, deployer5.getDeployOrder());
+// assertEquals(7, deployer6.getDeployOrder());
assertEquals(14, deployer1.getUndeployOrder());
assertEquals(13, deployer2.getUndeployOrder());
assertEquals(12, deployer3.getUndeployOrder());
- assertEquals(11, deployer7.getUndeployOrder());
- assertEquals(10, deployer4.getUndeployOrder());
- assertEquals(9, deployer5.getUndeployOrder());
- assertEquals(8, deployer6.getUndeployOrder());
+// assertEquals(11, deployer7.getUndeployOrder());
+// assertEquals(10, deployer4.getUndeployOrder());
+// assertEquals(9, deployer5.getUndeployOrder());
+// assertEquals(8, deployer6.getUndeployOrder());
+ assertUndeployBefore(deployer2, deployer1);
+ assertUndeployBefore(deployer3, deployer1);
+ assertUndeployBefore(deployer7, deployer2);
+ assertUndeployBefore(deployer7, deployer3);
+ assertUndeployBefore(deployer4, deployer2);
+ assertUndeployBefore(deployer4, deployer3);
+ assertUndeployBefore(deployer5, deployer4);
+ assertUndeployBefore(deployer5, deployer7);
+ assertUndeployBefore(deployer6, deployer5);
+ assertUndeployBefore(deployer6, deployer2);
+ assertUndeployBefore(deployer6, deployer3);
main.addDeployment(deployment);
main.process();
@@ -928,17 +987,39 @@
assertEquals(15, deployer1.getDeployOrder());
assertEquals(16, deployer2.getDeployOrder());
assertEquals(17, deployer3.getDeployOrder());
- assertEquals(18, deployer7.getDeployOrder());
- assertEquals(19, deployer4.getDeployOrder());
- assertEquals(20, deployer5.getDeployOrder());
- assertEquals(21, deployer6.getDeployOrder());
+// assertEquals(18, deployer7.getDeployOrder());
+ assertDeployBefore(deployer2, deployer1);
+ assertDeployBefore(deployer3, deployer1);
+ assertDeployBefore(deployer7, deployer2);
+ assertDeployBefore(deployer7, deployer3);
+ assertDeployBefore(deployer4, deployer2);
+ assertDeployBefore(deployer4, deployer3);
+ assertDeployBefore(deployer5, deployer4);
+ assertDeployBefore(deployer5, deployer7);
+ assertDeployBefore(deployer6, deployer5);
+ assertDeployBefore(deployer6, deployer2);
+ assertDeployBefore(deployer6, deployer3);
+// assertEquals(19, deployer4.getDeployOrder());
+// assertEquals(20, deployer5.getDeployOrder());
+// assertEquals(21, deployer6.getDeployOrder());
assertEquals(14, deployer1.getUndeployOrder());
assertEquals(13, deployer2.getUndeployOrder());
assertEquals(12, deployer3.getUndeployOrder());
- assertEquals(11, deployer7.getUndeployOrder());
- assertEquals(10, deployer4.getUndeployOrder());
- assertEquals(9, deployer5.getUndeployOrder());
- assertEquals(8, deployer6.getUndeployOrder());
+// assertEquals(11, deployer7.getUndeployOrder());
+// assertEquals(10, deployer4.getUndeployOrder());
+// assertEquals(9, deployer5.getUndeployOrder());
+// assertEquals(8, deployer6.getUndeployOrder());
+ assertUndeployBefore(deployer2, deployer1);
+ assertUndeployBefore(deployer3, deployer1);
+ assertUndeployBefore(deployer7, deployer2);
+ assertUndeployBefore(deployer7, deployer3);
+ assertUndeployBefore(deployer4, deployer2);
+ assertUndeployBefore(deployer4, deployer3);
+ assertUndeployBefore(deployer5, deployer4);
+ assertUndeployBefore(deployer5, deployer7);
+ assertUndeployBefore(deployer6, deployer5);
+ assertUndeployBefore(deployer6, deployer2);
+ assertUndeployBefore(deployer6, deployer3);
main.removeDeployment(deployment);
main.process();
More information about the jboss-cvs-commits
mailing list