[jboss-cvs] JBossAS SVN: r99150 - projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 8 05:10:01 EST 2010


Author: richard.opalka at jboss.com
Date: 2010-01-08 05:10:01 -0500 (Fri, 08 Jan 2010)
New Revision: 99150

Added:
   projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DependenciesTopologicalOrderingUnitTestCase.java
Removed:
   projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/OptimizedTopologicalOrderingUnitTestCase.java
Modified:
   projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/AbstractDeployerFlowUnitTest.java
   projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DominoOrderingUnitTestCase.java
   projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/InOutTopologicalOrderingUnitTestCase.java
   projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/KahnOrderingUnitTestCase.java
Log:
[JBDEPLOY-229][JBDEPLOY-230] adding new algorithm performance test plus improving existing one test

Modified: projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/AbstractDeployerFlowUnitTest.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/AbstractDeployerFlowUnitTest.java	2010-01-08 10:06:18 UTC (rev 99149)
+++ projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/AbstractDeployerFlowUnitTest.java	2010-01-08 10:10:01 UTC (rev 99150)
@@ -1237,35 +1237,139 @@
       main.process();
    }
    
+   /**
+    * Tests algorithm performance on complete oriented graph.
+    * All dependencies are specified using inputs/outputs.
+    */
    public void testAlgorithmPerformance() throws Exception
    {
+       
       DeployerClient main = createMainDeployer();
-      AbstractDeployer deployer;
+      TestFlowDeployer deployer;
       final int COUNT_OF_DEPLOYERS = 500;
 
-      List<AbstractDeployer> deployers = new LinkedList<AbstractDeployer>();
+      List<TestFlowDeployer> deployers = new LinkedList<TestFlowDeployer>();
 
       for (int i = 0; i < COUNT_OF_DEPLOYERS; i++)
       {
-         deployer = new TestDeployerAdapter( String.valueOf(i) );
+         deployer = new TestFlowDeployer( String.valueOf(i) );
          deployer.setOutputs( String.valueOf(i) );
          for (int j = 0; j < i; j++) deployer.addInput( String.valueOf(j) );
-         deployer.setStage(DeploymentStages.REAL);
          deployers.add(deployer);
       }
       
       long start = System.currentTimeMillis();
-      for (AbstractDeployer d : deployers)
+      for (TestFlowDeployer d : deployers)
       {
          addDeployer(main, d);
       }
       long end = System.currentTimeMillis();
       
       System.out.println("------------------------------------------------------------------------");
-      System.out.println("Exhaustive deployer sorting (" + getClass().getSimpleName() +  ") took: " + (end - start) + " milliseconds");
+      System.out.println("Exhaustive deployer sorting 1 (" + getClass().getSimpleName() +  ") took: " + (end - start) + " milliseconds");
       System.out.println("------------------------------------------------------------------------");
+
+      // test proper deployers order
+      Deployment deployment = createSimpleDeployment( "exhaustiveDeployersOrderTest" );
+
+      main.addDeployment(deployment);
+      main.process();
+
+      for (int i = 0; i < COUNT_OF_DEPLOYERS; i++)
+      {
+         deployer = deployers.get(i);
+         assertEquals(i + 1, deployer.getDeployOrder());
+         assertEquals(-1, deployer.getUndeployOrder());
+      }
+
+      main.removeDeployment(deployment);
+      main.process();
+
+      for (int i = 0; i < COUNT_OF_DEPLOYERS; i++)
+      {
+         deployer = deployers.get(i);
+         assertEquals(i + 1, deployer.getDeployOrder());
+         assertEquals(2*COUNT_OF_DEPLOYERS - i, deployer.getUndeployOrder());
+      }
    }
 
+   /**
+    * Tests algorithm performance on complete oriented graph
+    * where vertex in this graph is represented as set of deployers.
+    * Deployers that are in specific vertex are ordered using deployer ordering feature. 
+    */
+   public void testAlgorithmPerformance2() throws Exception
+   {
+      DeployerClient main = createMainDeployer();
+      TestFlowDeployer deployer;
+      final int COUNT_OF_DEPLOYERS = 1000; 
+      final int MODULO = 50; // count of deployers in particular vertex
+
+      List<TestFlowDeployer> deployers = new LinkedList<TestFlowDeployer>();
+
+      for (int i = 0; i < COUNT_OF_DEPLOYERS; i++)
+      {
+         deployer = new TestFlowDeployer( String.valueOf(i) );
+         deployer.setOutputs( String.valueOf(i / MODULO) );
+         deployer.setRelativeOrder(i % MODULO);
+         for (int j = 0; j < i/MODULO; j++) 
+            deployer.addInput( String.valueOf(j) );
+         
+         deployers.add(deployer);
+      }
+      
+      long start = System.currentTimeMillis();
+      for (TestFlowDeployer d : deployers)
+      {
+         addDeployer(main, d);
+      }
+      long end = System.currentTimeMillis();
+      
+      System.out.println("------------------------------------------------------------------------");
+      System.out.println("Exhaustive deployer sorting 2 (" + getClass().getSimpleName() +  ") took: " + (end - start) + " milliseconds");
+      System.out.println("------------------------------------------------------------------------");
+
+      // test proper deployers order
+      Deployment deployment = createSimpleDeployment( "exhaustiveDeployersOrderTest" );
+
+      main.addDeployment(deployment);
+      main.process();
+
+      int deployerDeployOrder;
+      int deployerUndeployOrder;
+      int deployerDeployOrderInModulo;
+      int deployerUndeployOrderInModulo;
+      int level;
+      for (int i = 0; i < COUNT_OF_DEPLOYERS; i++)
+      {
+         level = i / MODULO;
+         deployer = deployers.get(i);
+         deployerDeployOrder = deployer.getDeployOrder();
+         deployerDeployOrderInModulo = (deployerDeployOrder - 1) / MODULO;
+         deployerUndeployOrder = deployer.getUndeployOrder();
+         assertTrue("Wrong deployer(" + i + ") deploy order: " + deployerDeployOrder, level <= deployerDeployOrderInModulo && deployerDeployOrderInModulo < (level + 1));
+         assertEquals(i + 1, deployerDeployOrder); // remove if [JBDEPLOY-233] will be fixed
+         assertEquals(-1, deployerUndeployOrder);
+      }
+
+      main.removeDeployment(deployment);
+      main.process();
+
+      for (int i = 0; i < COUNT_OF_DEPLOYERS; i++)
+      {
+         level = i / MODULO;
+         deployer = deployers.get(i);
+         deployerDeployOrder = deployer.getDeployOrder();
+         deployerDeployOrderInModulo = (deployerDeployOrder - 1) / MODULO;
+         deployerUndeployOrder = deployer.getUndeployOrder();
+         deployerUndeployOrderInModulo = (deployerUndeployOrder - 1) / MODULO;
+         assertTrue("Wrong deployer(" + i + ") deploy order: " + deployerDeployOrder, level <= deployerDeployOrderInModulo && deployerDeployOrderInModulo < (level + 1));
+         assertEquals(i + 1, deployer.getDeployOrder()); // remove if [JBDEPLOY-233] will be fixed
+         assertTrue("Wrong deployer(" + i + ") undeploy order: " + deployerUndeployOrder, (2 * COUNT_OF_DEPLOYERS - level) >= deployerUndeployOrderInModulo && deployerUndeployOrderInModulo < (2 * COUNT_OF_DEPLOYERS - (level + 1)));
+         assertEquals(2 * COUNT_OF_DEPLOYERS - i, deployer.getUndeployOrder()); // remove if [JBDEPLOY-233] will be fixed
+      }
+   }
+
    public void testRealWorldAS6DeployersScenario() throws Exception
    {
       // THIS IS REAL WORLD SCENARIO - AS deployers with their dependencies

Added: projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DependenciesTopologicalOrderingUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DependenciesTopologicalOrderingUnitTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DependenciesTopologicalOrderingUnitTestCase.java	2010-01-08 10:10:01 UTC (rev 99150)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright (c) 2010, 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.deployers.deployer.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.deployers.plugins.sort.DeployerSorter;
+import org.jboss.deployers.plugins.sort.DependenciesTopologicalDeployerSorter;
+
+/**
+ * Tests topological sorting.
+ *
+ * @author <a href="mailto:ropalka at redhat.com">Richard Opalka</a>
+ */
+public class DependenciesTopologicalOrderingUnitTestCase extends AbstractSorterOrderingUnitTest
+{
+
+   public DependenciesTopologicalOrderingUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return new TestSuite(DependenciesTopologicalOrderingUnitTestCase.class);
+   }
+
+   @Override
+   protected DeployerSorter createSorter()
+   {
+      return new DependenciesTopologicalDeployerSorter();
+   }
+
+}

Modified: projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DominoOrderingUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DominoOrderingUnitTestCase.java	2010-01-08 10:06:18 UTC (rev 99149)
+++ projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DominoOrderingUnitTestCase.java	2010-01-08 10:10:01 UTC (rev 99150)
@@ -54,4 +54,9 @@
    {
       // ignored
    }
+
+   public void testAlgorithmPerformance2()
+   {
+      // ignored
+   }
 }
\ No newline at end of file

Modified: projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/InOutTopologicalOrderingUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/InOutTopologicalOrderingUnitTestCase.java	2010-01-08 10:06:18 UTC (rev 99149)
+++ projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/InOutTopologicalOrderingUnitTestCase.java	2010-01-08 10:10:01 UTC (rev 99150)
@@ -54,10 +54,16 @@
    public void testDeployersOrder1() throws Exception
    {
       // TODO - how much do we allow pass-through to participate in ordering?
+      // This just creates duplicit edges from vertex A to vertex B in final graph.
    }
 
    public void testAlgorithmPerformance()
    {
       // ignored
    }
+
+   public void testAlgorithmPerformance2()
+   {
+      // ignored
+   }
 }
\ No newline at end of file

Modified: projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/KahnOrderingUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/KahnOrderingUnitTestCase.java	2010-01-08 10:06:18 UTC (rev 99149)
+++ projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/KahnOrderingUnitTestCase.java	2010-01-08 10:10:01 UTC (rev 99150)
@@ -54,4 +54,9 @@
    {
       // ignored
    }
+
+   public void testAlgorithmPerformance2()
+   {
+      // ignored
+   }
 }
\ No newline at end of file

Deleted: projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/OptimizedTopologicalOrderingUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/OptimizedTopologicalOrderingUnitTestCase.java	2010-01-08 10:06:18 UTC (rev 99149)
+++ projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/OptimizedTopologicalOrderingUnitTestCase.java	2010-01-08 10:10:01 UTC (rev 99150)
@@ -1,52 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright (c) 2010, 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.deployers.deployer.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.jboss.deployers.plugins.sort.DeployerSorter;
-import org.jboss.deployers.plugins.sort.TopologicalOrderingDeployerSorter;
-
-/**
- * Tests topological sorting.
- *
- * @author <a href="mailto:ropalka at redhat.com">Richard Opalka</a>
- */
-public class OptimizedTopologicalOrderingUnitTestCase extends AbstractSorterOrderingUnitTest
-{
-   public OptimizedTopologicalOrderingUnitTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return new TestSuite(OptimizedTopologicalOrderingUnitTestCase.class);
-   }
-
-   @Override
-   protected DeployerSorter createSorter()
-   {
-      return new TopologicalOrderingDeployerSorter();
-   }
-}




More information about the jboss-cvs-commits mailing list