You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by oc...@apache.org on 2009/01/06 12:10:16 UTC

svn commit: r731913 - in /continuum/branches/continuum-parallel-builds/continuum-core/src: main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java

Author: oching
Date: Tue Jan  6 03:10:15 2009
New Revision: 731913

URL: http://svn.apache.org/viewvc?rev=731913&view=rev
Log:
fixed and switched over tests in parallel builds manager to jmock

Modified:
    continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
    continuum/branches/continuum-parallel-builds/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java

Modified: continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java?rev=731913&r1=731912&r2=731913&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java Tue Jan  6 03:10:15 2009
@@ -1166,4 +1166,26 @@
         
         return overallBuildQueue;
     }
+    
+    // for unit tests..
+    
+    public void setOverallBuildQueues( Map<Integer, OverallBuildQueue> overallBuildQueues )
+    {
+        this.overallBuildQueues = overallBuildQueues;
+    }
+
+    public void setPrepareBuildQueue( TaskQueue prepareBuildQueue )
+    {
+        this.prepareBuildQueue = prepareBuildQueue;
+    }
+
+    public void setConfigurationService( ConfigurationService configurationService )
+    {
+        this.configurationService = configurationService;
+    }
+
+    public void setBuildQueueService( BuildQueueService buildQueueService )
+    {
+        this.buildQueueService = buildQueueService;
+    }
 }

Modified: continuum/branches/continuum-parallel-builds/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java?rev=731913&r1=731912&r2=731913&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java Tue Jan  6 03:10:15 2009
@@ -21,19 +21,23 @@
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.continuum.buildqueue.BuildQueueService;
 import org.apache.continuum.dao.BuildDefinitionDao;
 import org.apache.continuum.taskqueue.OverallBuildQueue;
+import org.apache.maven.continuum.buildqueue.BuildProjectTask;
 import org.apache.maven.continuum.configuration.ConfigurationService;
 import org.apache.maven.continuum.model.project.BuildDefinition;
 import org.apache.maven.continuum.model.project.BuildQueue;
-import org.apache.maven.continuum.model.project.Project;
 import org.apache.maven.continuum.model.project.Schedule;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.codehaus.plexus.taskqueue.Task;
+import org.codehaus.plexus.taskqueue.TaskQueue;
+import org.codehaus.plexus.taskqueue.TaskQueueException;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.integration.junit3.JUnit3Mockery;
@@ -50,6 +54,18 @@
     Mockery context;
 
     private BuildDefinitionDao buildDefinitionDao;
+    
+    private TaskQueue prepareBuildQueue;
+    
+    private ConfigurationService configurationService;
+    
+    private BuildQueueService buildQueueService;
+    
+    private OverallBuildQueue overallBuildQueue;
+    
+    private TaskQueue buildQueue;
+    
+    private TaskQueue checkoutQueue;
 
     public void setUp()
         throws Exception
@@ -63,6 +79,22 @@
         buildDefinitionDao = context.mock( BuildDefinitionDao.class );
 
         buildsManager.setBuildDefinitionDao( buildDefinitionDao );
+        
+        prepareBuildQueue = context.mock( TaskQueue.class, "prepare-build-queue" );
+        
+        buildsManager.setPrepareBuildQueue( prepareBuildQueue );
+        
+        configurationService = context.mock( ConfigurationService.class );
+        
+        buildsManager.setConfigurationService( configurationService );
+        
+        buildQueueService = context.mock( BuildQueueService.class );
+        
+        buildsManager.setBuildQueueService( buildQueueService );        
+
+        buildQueue = context.mock( TaskQueue.class, "build-queue" );
+        
+        checkoutQueue = context.mock( TaskQueue.class, "checkout-queue" );
     }
 
     public void tearDown()
@@ -107,7 +139,7 @@
         return schedule;
     }
 
-    private void setupOverallBuildQueues()
+    /*private void setupOverallBuildQueues()
         throws Exception
     {   
         for ( int i = 2; i <= 5; i++ )
@@ -120,568 +152,305 @@
         }
 
         assertEquals( 5, buildsManager.getOverallBuildQueues().size() );
+    }*/
+    
+    public void setupMockOverallBuildQueues()
+        throws Exception
+    {   
+        Map<Integer, OverallBuildQueue> overallBuildQueues =
+            Collections.synchronizedMap( new HashMap<Integer, OverallBuildQueue>() );
+        overallBuildQueue = context.mock( OverallBuildQueue.class );        
+        for ( int i = 1; i <=5; i++ )
+        {   
+            overallBuildQueues.put( new Integer( i ), overallBuildQueue );
+        }
+        
+        buildsManager.setOverallBuildQueues( overallBuildQueues );
+    }
+    
+    private void recordStartOfProcess( )
+        throws TaskQueueException
+    {
+        context.checking( new Expectations()
+        {
+            {
+                exactly(5).of( overallBuildQueue ).isInBuildQueue( with( any(int.class) ) );
+                will( returnValue( false ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
+        {
+            {
+                one( configurationService ).getNumberOfBuildsInParallel();
+                will( returnValue( 2 ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
+        {
+            {
+                exactly(2).of( overallBuildQueue ).getBuildQueue();
+                will( returnValue( buildQueue ) );
+            }
+        } );
+    }
+    
+    private void recordBuildProjectBuildQueuesAreEmpty()
+        throws TaskQueueException
+    {
+        // shouldn't only the build queues attached to the schedule be checked?
+        recordStartOfProcess();
+        
+        final List<Task> tasks = new ArrayList<Task>();        
+        context.checking( new Expectations()
+        {
+            {
+                exactly(3).of( buildQueue ).getQueueSnapshot();
+                will( returnValue( tasks ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
+        {
+            {
+                one( overallBuildQueue).getName();
+                will( returnValue( "BUILD_QUEUE_2" ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
+        {
+            {
+                one( overallBuildQueue).addToBuildQueue( with( any( Task.class ) ) );
+            }
+        } );
     }
 
+    // start of tests...
+    
     public void testContainer()
         throws Exception
     {
         buildsManager.setContainer( getContainer() );
-
+    
         buildsManager.isProjectInAnyCurrentBuild( 1 );
-
+    
         assertTrue( true );
     }
-
-    // start of tests...
-
+    
     public void testBuildProjectNoProjectQueuedInAnyOverallBuildQueues()
         throws Exception
     {
-        setupOverallBuildQueues();
+        setupMockOverallBuildQueues();
 
         BuildDefinition buildDef = new BuildDefinition();
         buildDef.setId( 1 );
         buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
 
+        recordBuildProjectBuildQueuesAreEmpty();
+        
         buildsManager.buildProject( 1, buildDef, "continuum-project-test-1", 1 );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-        OverallBuildQueue whereBuildIsQueued = overallBuildQueues.get( 1 );
-
-        assertNotNull( whereBuildIsQueued );
-        assertEquals( 1, whereBuildIsQueued.getId() );
-        assertEquals( ConfigurationService.DEFAULT_BUILD_QUEUE_NAME, whereBuildIsQueued.getName() );
-
-        // verify that other build queues are not used
-        assertFalse( overallBuildQueues.get( 2 ).isInBuildQueue( 1 ) );
-        assertFalse( overallBuildQueues.get( 3 ).isInBuildQueue( 1 ) );
-        assertFalse( overallBuildQueues.get( 4 ).isInBuildQueue( 1 ) );
-        assertFalse( overallBuildQueues.get( 5 ).isInBuildQueue( 1 ) );
+        
+        context.assertIsSatisfied();
     }
-
+    
     public void testBuildProjectProjectsAreAlreadyQueuedInOverallBuildQueues()
         throws Exception
     {
-        setupOverallBuildQueues();
+        setupMockOverallBuildQueues();
 
         BuildDefinition buildDef = new BuildDefinition();
         buildDef.setId( 1 );
         buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
 
-        buildsManager.buildProject( 1, buildDef, "continuum-project-test-1", 1 );
-        buildsManager.buildProject( 2, buildDef, "continuum-project-test-2", 1 );
-        buildsManager.buildProject( 3, buildDef, "continuum-project-test-3", 1 );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-
-        assertNotNull( overallBuildQueues.get( 1 ) );
-        assertNotNull( overallBuildQueues.get( 2 ) );
+        recordBuildProjectBuildQueuesAreEmpty();
         
-        /*assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 1, buildDef.getId() ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 3, buildDef.getId() ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 2, buildDef.getId() ) );*/
-    }
-
-    public void testBuildProjects()
-        throws Exception
-    {
-        setupOverallBuildQueues();
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
-
-        List<Project> projects = new ArrayList<Project>();
-        Project project = new Project();
-        project.setId( 4 );
-        project.setGroupId( "org.apache.continuum" );
-        project.setArtifactId( "continuum-test-1" );
-        project.addBuildDefinition( buildDef );
-        projects.add( project );
-
-        project = new Project();
-        project.setId( 5 );
-        project.setGroupId( "org.apache.continuum" );
-        project.setArtifactId( "continuum-test-2" );
-        project.addBuildDefinition( buildDef );
-        projects.add( project );
-
-        project = new Project();
-        project.setId( 6 );
-        project.setGroupId( "org.apache.continuum" );
-        project.setArtifactId( "continuum-test-3" );
-        project.addBuildDefinition( buildDef );
-        projects.add( project );
-
-        Map<Integer, BuildDefinition> projectsBuildDefinitionsMap = new HashMap<Integer, BuildDefinition>();
-        projectsBuildDefinitionsMap.put( 4, buildDef );
-        projectsBuildDefinitionsMap.put( 5, buildDef );
-        projectsBuildDefinitionsMap.put( 6, buildDef );
-
-        // populate build queue
         buildsManager.buildProject( 1, buildDef, "continuum-project-test-1", 1 );
+        context.assertIsSatisfied();
+        
+        //queue second project - 1st queue is not empty, 2nd queue is empty 
+        recordStartOfProcess();
+        
+        // the first build queue already has a task queued
+        final List<Task> tasksOfFirstBuildQueue = new ArrayList<Task>();
+        tasksOfFirstBuildQueue.add( new BuildProjectTask( 2, 1, 1, "continuum-project-test-2", buildDef.getDescription() ) );        
+        context.checking( new Expectations()
+        {
+            {
+                exactly(2).of( buildQueue ).getQueueSnapshot();
+                will( returnValue( tasksOfFirstBuildQueue ) );
+            }
+        } );
+        
+        final List<Task> tasks = new ArrayList<Task>();
+        
+        // the second build queue has no tasks queued, so it should return 0
+        context.checking( new Expectations()
+        {
+            {
+                exactly(2).of(buildQueue).getQueueSnapshot();
+                will( returnValue( tasks ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
+        {
+            {
+                one( overallBuildQueue).getName();
+                will( returnValue( "BUILD_QUEUE_3" ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
+        {
+            {
+                one( overallBuildQueue).addToBuildQueue( with( any( Task.class ) ) );
+            }
+        } );
+        
         buildsManager.buildProject( 2, buildDef, "continuum-project-test-2", 1 );
+        context.assertIsSatisfied();
+        
+        // queue third project - both queues have 1 task queued each
+        recordStartOfProcess();
+        
+        // both queues have 1 task each        
+        context.checking( new Expectations()
+        {
+            {
+                exactly(3).of( buildQueue ).getQueueSnapshot();
+                will( returnValue( tasksOfFirstBuildQueue ) );
+            }
+        } );
+                
+        context.checking( new Expectations()
+        {
+            {
+                one( overallBuildQueue).getName();
+                will( returnValue( "BUILD_QUEUE_2" ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
+        {
+            {
+                one( overallBuildQueue).addToBuildQueue( with( any( Task.class ) ) );
+            }
+        } );
+        
         buildsManager.buildProject( 3, buildDef, "continuum-project-test-3", 1 );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-
-        /*assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 1, buildDef.getId() ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 3, buildDef.getId() ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 2, buildDef.getId() ) );*/
-
-        // build a set of projects
-        buildsManager.buildProjects( projects, projectsBuildDefinitionsMap, 1 );
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-
-        assertFalse( overallBuildQueues.get( 1 ).isInBuildQueue( 4 ) );
-        assertFalse( overallBuildQueues.get( 1 ).isInBuildQueue( 5 ) );
-        assertFalse( overallBuildQueues.get( 1 ).isInBuildQueue( 6 ) );
-
-        /*assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 4 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 5 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 6 ) );*/
+        context.assertIsSatisfied();
     }
-
+    
     public void testRemoveProjectFromBuildQueue()
         throws Exception
     {
-        // - if project is built from a group, should the whole group be cancelled?
-        setupOverallBuildQueues();
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
-
-        // populate build queue
-        buildsManager.buildProject( 1, buildDef, "continuum-project-test-1", 1 );
-        buildsManager.buildProject( 2, buildDef, "continuum-project-test-2", 1 );
-        buildsManager.buildProject( 3, buildDef, "continuum-project-test-3", 1 );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-
-        /*assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 1, buildDef.getId() ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 3, buildDef.getId() ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 2, buildDef.getId() ) );*/
-
-        // remove project 1
+        setupMockOverallBuildQueues();
+        
+        context.checking( new Expectations()
+        {
+            {
+                one(overallBuildQueue).isInBuildQueue( 1 );
+                will( returnValue( true ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
+        {
+            {
+                one(overallBuildQueue).removeProjectFromBuildQueue( 1 );
+            }
+        } );
+        
         buildsManager.removeProjectFromBuildQueue( 1 );
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertFalse( overallBuildQueues.get( 1 ).isInBuildQueue( 1, buildDef.getId() ) );
-
-        // remove project 2
-        buildsManager.removeProjectFromBuildQueue( 2 );
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertFalse( overallBuildQueues.get( 2 ).isInBuildQueue( 2, buildDef.getId() ) );
-
-        // remove project 3
-        buildsManager.removeProjectFromBuildQueue( 3 );
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertFalse( overallBuildQueues.get( 1 ).isInBuildQueue( 3, buildDef.getId() ) );
+        context.assertIsSatisfied();
     }
-
+    
     public void testRemoveProjectsFromBuildQueue()
         throws Exception
     {
-        setupOverallBuildQueues();
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
-
+        setupMockOverallBuildQueues();
         int[] projectIds = new int[] { 1, 2, 3 };
-
-        // populate build queue
-        buildsManager.buildProject( 1, buildDef, "continuum-project-test-1", 1 );
-        buildsManager.buildProject( 2, buildDef, "continuum-project-test-2", 1 );
-        buildsManager.buildProject( 3, buildDef, "continuum-project-test-3", 1 );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-
-       /* assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 1, buildDef.getId() ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 3, buildDef.getId() ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 2, buildDef.getId() ) );*/
-
-        // remove all projects
+    
+        context.checking( new Expectations()
+        {
+            {
+                exactly(3).of(overallBuildQueue).isInBuildQueue( with( any( int.class ) ) );
+                will( returnValue( true ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
+        {
+            {
+                exactly(3).of(overallBuildQueue).removeProjectFromBuildQueue( with( any( int.class ) ) );
+            }
+        } );
+        
         buildsManager.removeProjectsFromBuildQueue( projectIds );
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertFalse( overallBuildQueues.get( 1 ).isInBuildQueue( 1, buildDef.getId() ) );
-        assertFalse( overallBuildQueues.get( 2 ).isInBuildQueue( 2, buildDef.getId() ) );
-        assertFalse( overallBuildQueues.get( 1 ).isInBuildQueue( 3, buildDef.getId() ) );
+        context.assertIsSatisfied();
     }
-
+    
     public void testCheckoutProjectSingle()
         throws Exception
     {
-        setupOverallBuildQueues();
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
-
-        buildsManager.checkoutProject( 1, "continuum-test-1", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-        //assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 1 ) );
-
-        // verify that other build queues are not used
-        assertFalse( overallBuildQueues.get( 2 ).isInCheckoutQueue( 1 ) );
-        assertFalse( overallBuildQueues.get( 3 ).isInCheckoutQueue( 1 ) );
-        assertFalse( overallBuildQueues.get( 4 ).isInCheckoutQueue( 1 ) );
-        assertFalse( overallBuildQueues.get( 5 ).isInCheckoutQueue( 1 ) );
-    }
-
-    public void testCheckoutProjectMultiple()
-        throws Exception
-    {
-        setupOverallBuildQueues();
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
-
-        buildsManager.checkoutProject( 1, "continuum-test-1", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 2, "continuum-test-2", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 3, "continuum-test-3", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 4, "continuum-test-4", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 5, "continuum-test-5", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-
-        /*assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 1 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInCheckoutQueue( 2 ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 3 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInCheckoutQueue( 4 ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 5 ) );*/
-    }
-
-    public void testRemoveProjectFromCheckoutQueue()
-        throws Exception
-    {
-        setupOverallBuildQueues();
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
-
-        buildsManager.checkoutProject( 1, "continuum-test-1", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 2, "continuum-test-2", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 3, "continuum-test-3", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-        /*assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 1 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInCheckoutQueue( 2 ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 3 ) );*/
-
-        buildsManager.removeProjectFromCheckoutQueue( 1 );
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertFalse( overallBuildQueues.get( 1 ).isInCheckoutQueue( 1 ) );
-
-        buildsManager.removeProjectFromCheckoutQueue( 2 );
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertFalse( overallBuildQueues.get( 2 ).isInCheckoutQueue( 2 ) );
-
-        buildsManager.removeProjectFromCheckoutQueue( 3 );
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertFalse( overallBuildQueues.get( 1 ).isInCheckoutQueue( 3 ) );
-    }
-
-    public void testRemoveProjectsFromCheckoutQueue()
-        throws Exception
-    {
-        setupOverallBuildQueues();
-
+        setupMockOverallBuildQueues();
+    
         BuildDefinition buildDef = new BuildDefinition();
         buildDef.setId( 1 );
         buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
-
-        buildsManager.checkoutProject( 1, "continuum-test-1", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 2, "continuum-test-2", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 3, "continuum-test-3", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-        /*assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 1 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInCheckoutQueue( 2 ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 3 ) );*/
-
-        int[] projectIds = new int[] { 1, 2, 3 };
-        buildsManager.removeProjectsFromCheckoutQueue( projectIds );
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertFalse( overallBuildQueues.get( 1 ).isInCheckoutQueue( 1 ) );
-        assertFalse( overallBuildQueues.get( 2 ).isInCheckoutQueue( 2 ) );
-        assertFalse( overallBuildQueues.get( 1 ).isInCheckoutQueue( 3 ) );
-    }
-
-    /*public void testRemoveProjectFromPrepareBuildQueue()
-        throws Exception
-    {
-
-    }*/
-
-    public void testRemoveDefaultOverallBuildQueue()
-        throws Exception
-    {
-        try
-        {
-            buildsManager.removeOverallBuildQueue( 1 );
-            fail( "An exception should have been thrown." );
-        }
-        catch ( BuildManagerException e )
-        {
-            assertEquals( "Cannot remove default build queue.", e.getMessage() );
-        }
-    }
-
-    /*public void testRemoveOverallBuildQueue()
-        throws Exception
-    {
-        // queued tasks (both checkout & build tasks) must be transferred to the other queues!
-        setupOverallBuildQueues();
-        assertEquals( 5, buildsManager.getOverallBuildQueues().size() );
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 1, 3 ) );
-
-        // populate build queue
-        buildsManager.buildProject( 1, buildDef, "continuum-build-test-1", 1 );
-        buildsManager.buildProject( 2, buildDef, "continuum-build-test-2", 1 );
-        buildsManager.buildProject( 3, buildDef, "continuum-build-test-3", 1 );
-        buildsManager.buildProject( 4, buildDef, "continuum-build-test-4", 1 );
-        buildsManager.buildProject( 5, buildDef, "continuum-build-test-5", 1 );
-
-        Map<Integer, OverallBuildQueue> overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 1 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 2 ) );
-        assertTrue( overallBuildQueues.get( 3 ).isInBuildQueue( 3 ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 4 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 5 ) );
-
-        // populate checkout queue
-        buildsManager.checkoutProject( 6, "continuum-checkout-test-6", new File( getBasedir(),
-                                                                                 "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 7, "continuum-checkout-test-7", new File( getBasedir(),
-                                                                                 "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 8, "continuum-checkout-test-8", new File( getBasedir(),
-                                                                                 "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 9, "continuum-checkout-test-9", new File( getBasedir(),
-                                                                                 "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 10, "continuum-checkout-test-10", new File( getBasedir(),
-                                                                                   "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-
-        assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 6 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInCheckoutQueue( 7 ) );
-        assertTrue( overallBuildQueues.get( 3 ).isInCheckoutQueue( 8 ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 9 ) );
-        assertTrue( overallBuildQueues.get( 2 ).isInCheckoutQueue( 10 ) );
-
-        final BuildDefinition buildDefinition = new BuildDefinition();
-        buildDefinition.setId( 1 );
-        buildDefinition.setSchedule( getSchedule( 1, 2, 3 ) );
-
-        // set expectations
+    
         context.checking( new Expectations()
         {
             {
-                exactly( 2 ).of( buildDefinitionDao ).getBuildDefinition( 1 );
-                will( returnValue( buildDefinition ) );
+                exactly(5).of(overallBuildQueue).isInCheckoutQueue( 1 );
+                will( returnValue( false ) );
             }
         } );
-
+        
         context.checking( new Expectations()
         {
             {
-                one( buildDefinitionDao ).getDefaultBuildDefinition( 7 );
-                will( returnValue( buildDefinition ) );
-
-                one( buildDefinitionDao ).getDefaultBuildDefinition( 10 );
-                will( returnValue( buildDefinition ) );
+                one( configurationService ).getNumberOfBuildsInParallel();
+                will( returnValue( 2 ) );
             }
         } );
-
-        buildsManager.removeOverallBuildQueue( 2 );
-
-        // verify
-        context.assertIsSatisfied();
-
-        overallBuildQueues = buildsManager.getOverallBuildQueues();
-        assertEquals( 4, overallBuildQueues.size() );
-
-        // checkout queues
-        assertNull( overallBuildQueues.get( 2 ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 6 ) );
-        assertTrue( overallBuildQueues.get( 3 ).isInCheckoutQueue( 7 ) );
-        assertTrue( overallBuildQueues.get( 3 ).isInCheckoutQueue( 8 ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 9 ) );
-        // shouldn't this be queued in build queue #1?
-        assertTrue( overallBuildQueues.get( 3 ).isInCheckoutQueue( 10 ) );
-
-        // build queues                   
-        assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 1 ) );
-        assertTrue( overallBuildQueues.get( 3 ).isInBuildQueue( 2 ) );
-        assertTrue( overallBuildQueues.get( 3 ).isInBuildQueue( 3 ) );
-        assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 4 ) );
-        // shouldn't this be queued in build queue #1?
-        assertTrue( overallBuildQueues.get( 3 ).isInBuildQueue( 5 ) );
-    }*/
-
-    // TODO use the default build queue instead!
-    public void testNoBuildQueuesConfigured()
-        throws Exception
-    {
-        BuildQueue buildQueue = new BuildQueue();
-        buildQueue.setId( 1 );
-        buildQueue.setName( "BUILD_QUEUE_1" );
-
-        buildsManager.addOverallBuildQueue( buildQueue );
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 2, 3 ) );
-
-        // test if buildProject(...) is invoked
-        try
-        {
-            buildsManager.buildProject( 1, buildDef, "continuum-project-test-1", 1 );
-            fail( "An exception should have been thrown." );
-        }
-        catch ( BuildManagerException e )
-        {
-            assertEquals( "No build queue found.", e.getMessage() );
-        }
-
-        // test if buildProjects(...) is invoked
-        List<Project> projects = new ArrayList<Project>();
-        Project project = new Project();
-        project.setId( 4 );
-        project.setGroupId( "org.apache.continuum" );
-        project.setArtifactId( "continuum-test-4" );
-        project.addBuildDefinition( buildDef );
-        projects.add( project );
-
-        project = new Project();
-        project.setId( 5 );
-        project.setGroupId( "org.apache.continuum" );
-        project.setArtifactId( "continuum-test-5" );
-        project.addBuildDefinition( buildDef );
-        projects.add( project );
-
-        Map<Integer, BuildDefinition> projectsBuildDefinitionsMap = new HashMap<Integer, BuildDefinition>();
-        projectsBuildDefinitionsMap.put( 4, buildDef );
-        projectsBuildDefinitionsMap.put( 5, buildDef );
-
-        try
+        
+        context.checking( new Expectations()
         {
-            buildsManager.buildProjects( projects, projectsBuildDefinitionsMap, 1 );
-            fail( "An exception should have been thrown." );
-        }
-        catch ( BuildManagerException e )
+            {
+                exactly(2).of( overallBuildQueue ).getCheckoutQueue();
+                will( returnValue( checkoutQueue ) );
+            }
+        } );
+        
+        final List<Task> tasks = new ArrayList<Task>();        
+        context.checking( new Expectations()
         {
-            assertEquals( "No build queue found.", e.getMessage() );
-        }
-
-        // test if checkoutProject(..) is invoked        
-        try
+            {
+                exactly(3).of( checkoutQueue ).getQueueSnapshot();
+                will( returnValue( tasks ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
         {
-            buildsManager.checkoutProject( 6, "continuum-checkout-test-1", new File( getBasedir(),
-                                                                                     "/target/test-working-dir/1" ),
-                                           "dummy", "dummypass", buildDef );
-            fail( "An exception should have been thrown." );
-        }
-        catch ( BuildManagerException e )
+            {
+                one( overallBuildQueue).getName();
+                will( returnValue( "BUILD_QUEUE_2" ) );
+            }
+        } );
+        
+        context.checking( new Expectations()
         {
-            assertEquals( "No build queue found.", e.getMessage() );
-        }
-    }
-
-    public void testGetProjectsInBuildQueue()
-        throws Exception
-    {
-        setupOverallBuildQueues();
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
-
-        // populate build queue
-        buildsManager.buildProject( 1, buildDef, "continuum-project-test-1", 1 );
-        buildsManager.buildProject( 2, buildDef, "continuum-project-test-2", 1 );
-        buildsManager.buildProject( 3, buildDef, "continuum-project-test-3", 1 );
-
-        Map<String, List<Task>> buildsInQueue = buildsManager.getProjectsInBuildQueues();
-
-        assertEquals( 5, buildsInQueue.size() );
-        assertTrue( buildsInQueue.containsKey( ConfigurationService.DEFAULT_BUILD_QUEUE_NAME ) );
-        assertTrue( buildsInQueue.containsKey( "BUILD_QUEUE_2" ) );
-
-        /*assertEquals( 2, buildsInQueue.get( ConfigurationService.DEFAULT_BUILD_QUEUE_NAME ).size() );
-        assertEquals( 1, buildsInQueue.get( "BUILD_QUEUE_2" ).size() );*/
-    }
-
-    public void testGetProjectsInCheckoutQueue()
-        throws Exception
-    {
-        setupOverallBuildQueues();
-
-        BuildDefinition buildDef = new BuildDefinition();
-        buildDef.setId( 1 );
-        buildDef.setSchedule( getSchedule( 1, 1, 2 ) );
-
-        buildsManager.checkoutProject( 1, "continuum-test-1", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 2, "continuum-test-2", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 3, "continuum-test-3", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 4, "continuum-test-4", new File( getBasedir(), "/target/test-working-dir/1" ),
-                                       "dummy", "dummypass", buildDef );
-        buildsManager.checkoutProject( 5, "continuum-test-5", new File( getBasedir(), "/target/test-working-dir/1" ),
+            {
+                one( overallBuildQueue).addToCheckoutQueue( with( any( Task.class ) ) );
+            }
+        } );
+        
+        buildsManager.checkoutProject( 1, "continuum-project-test-1", new File( getBasedir(), "/target/test-working-dir/1" ),
                                        "dummy", "dummypass", buildDef );
-
-        Map<String, List<Task>> checkoutsInQueue = buildsManager.getProjectsInCheckoutQueues();
-
-        assertEquals( 5, checkoutsInQueue.size() );
-        assertTrue( checkoutsInQueue.containsKey( ConfigurationService.DEFAULT_BUILD_QUEUE_NAME ) );
-        assertTrue( checkoutsInQueue.containsKey( "BUILD_QUEUE_2" ) );
-
-        /*assertEquals( 3, checkoutsInQueue.get( ConfigurationService.DEFAULT_BUILD_QUEUE_NAME ).size() );
-        assertEquals( 2, checkoutsInQueue.get( "BUILD_QUEUE_2" ).size() );*/
-    }
-
-    /*public void testRemoveProjectsFromCheckoutQueueWithHashcodes() 
-        throws Exception
-    {
-    
+        context.assertIsSatisfied();
     }
-    
-    public void testRemoveProjectsFromBuildQueueWithHashcodes() 
-        throws Exception
-    {
-    
-    }*/
 }