Author: ctan Date: Fri Jan 8 05:20:40 2010 New Revision: 897096 URL: http://svn.apache.org/viewvc?rev=897096&view=rev Log: [CONTINUUM-2394] fixed build result link of project currently building in a distributed build mode merge -r 897083:897084 of 1.3.x branch Added: continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/SummaryActionTest.java continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/stub/SummaryActionStub.java Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/BuildResultActionTest.java Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java?rev=897096&r1=897095&r2=897096&view=diff ============================================================================== --- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java (original) +++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java Fri Jan 8 05:20:40 2010 @@ -93,7 +93,14 @@ // check if there are surefire results to display project = getContinuum().getProject( getProjectId() ); - buildResult = getContinuum().getBuildResult( getBuildId() ); + try + { + buildResult = getContinuum().getBuildResult( getBuildId() ); + } + catch ( ContinuumException e ) + { + buildResult = null; + } ConfigurationService configuration = getContinuum().getConfiguration(); Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java?rev=897096&r1=897095&r2=897096&view=diff ============================================================================== --- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java (original) +++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java Fri Jan 8 05:20:40 2010 @@ -29,6 +29,7 @@ import org.apache.continuum.buildmanager.BuildManagerException; import org.apache.continuum.buildmanager.BuildsManager; import org.apache.maven.continuum.ContinuumException; +import org.apache.maven.continuum.configuration.ConfigurationService; import org.apache.maven.continuum.model.project.BuildResult; import org.apache.maven.continuum.model.project.Project; import org.apache.maven.continuum.project.ContinuumProjectState; @@ -156,6 +157,14 @@ model.setLastBuildDateTime( latestBuild.getEndTime() ); model.setLastBuildDuration( latestBuild.getDurationTime() ); } + + ConfigurationService configuration = getContinuum().getConfiguration(); + + if ( configuration.isDistributedBuildEnabled() && + project.getState() == ContinuumProjectState.BUILDING ) + { + model.setLatestBuildId( 0 ); + } } summary.add( model ); @@ -230,4 +239,10 @@ { this.groupSummary = groupSummary; } + + // test + public void setParallelBuildsManager( BuildsManager parallelBuildsManager ) + { + this.parallelBuildsManager = parallelBuildsManager; + } } Modified: continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/BuildResultActionTest.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/BuildResultActionTest.java?rev=897096&r1=897095&r2=897096&view=diff ============================================================================== --- continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/BuildResultActionTest.java (original) +++ continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/BuildResultActionTest.java Fri Jan 8 05:20:40 2010 @@ -57,6 +57,7 @@ buildsManager.expects( once() ).method( "getCurrentBuilds" ).will( returnValue( new HashMap() ) ); action.execute(); + continuum.verify(); } public void testViewCurrentBuildInDistributedBuildAgent() @@ -71,6 +72,7 @@ distributedBuildManager.expects( once() ).method( "getBuildResult" ).will( returnValue( new HashMap() ) ); action.execute(); + continuum.verify(); } private Project createProject( String name ) Added: continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/SummaryActionTest.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/SummaryActionTest.java?rev=897096&view=auto ============================================================================== --- continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/SummaryActionTest.java (added) +++ continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/SummaryActionTest.java Fri Jan 8 05:20:40 2010 @@ -0,0 +1,172 @@ +package org.apache.maven.continuum.web.action; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.continuum.buildmanager.BuildsManager; +import org.apache.maven.continuum.Continuum; +import org.apache.maven.continuum.configuration.ConfigurationService; +import org.apache.maven.continuum.model.project.BuildResult; +import org.apache.maven.continuum.model.project.Project; +import org.apache.maven.continuum.model.project.ProjectGroup; +import org.apache.maven.continuum.web.action.stub.SummaryActionStub; +import org.apache.maven.continuum.web.model.ProjectSummary; +import org.apache.maven.continuum.xmlrpc.project.ContinuumProjectState; +import org.jmock.Mock; +import org.jmock.MockObjectTestCase; + +public class SummaryActionTest + extends MockObjectTestCase +{ + private SummaryActionStub action; + + private Mock continuum; + + private Mock configurationService; + + private Mock buildsManager; + + protected void setUp() + { + action = new SummaryActionStub(); + + continuum = mock( Continuum.class ); + + configurationService = mock( ConfigurationService.class ); + + buildsManager = mock( BuildsManager.class ); + + action.setContinuum( (Continuum) continuum.proxy() ); + action.setParallelBuildsManager( (BuildsManager ) buildsManager.proxy() ); + } + + public void testLatestBuildIdWhenCurrentlyBuildingInDistributedBuild() + throws Exception + { + Collection projectsInGroup = createProjectsInGroup( 1, ContinuumProjectState.BUILDING ); + Map buildResults = createBuildResults( 0, ContinuumProjectState.OK ); + Map buildResultsInSuccess = new HashMap(); + + continuum.expects( once() ).method( "getProjectsInGroup" ).will( returnValue( projectsInGroup ) ); + continuum.expects( once() ).method( "getLatestBuildResults" ).will( returnValue( buildResults ) ); + continuum.expects( once() ).method( "getBuildResultsInSuccess" ).will( returnValue( buildResultsInSuccess ) ); + + buildsManager.expects( once() ).method( "isInAnyBuildQueue" ).will( returnValue( false ) ); + buildsManager.expects( once() ).method( "isInPrepareBuildQueue").will( returnValue( false ) ); + buildsManager.expects( once() ).method( "isInAnyCheckoutQueue" ).will( returnValue( false ) ); + + continuum.expects( once() ).method( "getConfiguration" ).will( returnValue( (ConfigurationService) configurationService.proxy() ) ); + configurationService.expects( once() ).method( "isDistributedBuildEnabled" ).will( returnValue( true ) ); + + action.execute(); + continuum.verify(); + + List projects = action.getProjects(); + + assertNotNull( projects ); + assertEquals( 1, projects.size() ); + + ProjectSummary summary = projects.get( 0 ); + assertEquals( 0, summary.getLatestBuildId() ); + } + + public void testLatestBuildIdInDistributedBuild() + throws Exception + { + Collection projectsInGroup = createProjectsInGroup( 1, ContinuumProjectState.OK ); + Map buildResults = createBuildResults( 1, ContinuumProjectState.OK ); + Map buildResultsInSuccess = new HashMap(); + + continuum.expects( once() ).method( "getProjectsInGroup" ).will( returnValue( projectsInGroup ) ); + continuum.expects( once() ).method( "getLatestBuildResults" ).will( returnValue( buildResults ) ); + continuum.expects( once() ).method( "getBuildResultsInSuccess" ).will( returnValue( buildResultsInSuccess ) ); + + buildsManager.expects( once() ).method( "isInAnyBuildQueue" ).will( returnValue( false ) ); + buildsManager.expects( once() ).method( "isInPrepareBuildQueue").will( returnValue( false ) ); + buildsManager.expects( once() ).method( "isInAnyCheckoutQueue" ).will( returnValue( false ) ); + + continuum.expects( once() ).method( "getConfiguration" ).will( returnValue( (ConfigurationService) configurationService.proxy() ) ); + configurationService.expects( once() ).method( "isDistributedBuildEnabled" ).will( returnValue( true ) ); + + action.execute(); + continuum.verify(); + + List projects = action.getProjects(); + + assertNotNull( projects ); + assertEquals( 1, projects.size() ); + + ProjectSummary summary = projects.get( 0 ); + assertEquals( 1, summary.getLatestBuildId() ); + } + + public void testLatestBuildIdWhenCurrentlyBuilding() + throws Exception + { + Collection projectsInGroup = createProjectsInGroup( 1, ContinuumProjectState.BUILDING ); + Map buildResults = createBuildResults( 1, ContinuumProjectState.BUILDING ); + Map buildResultsInSuccess = new HashMap(); + + continuum.expects( once() ).method( "getProjectsInGroup" ).will( returnValue( projectsInGroup ) ); + continuum.expects( once() ).method( "getLatestBuildResults" ).will( returnValue( buildResults ) ); + continuum.expects( once() ).method( "getBuildResultsInSuccess" ).will( returnValue( buildResultsInSuccess ) ); + + buildsManager.expects( once() ).method( "isInAnyBuildQueue" ).will( returnValue( false ) ); + buildsManager.expects( once() ).method( "isInPrepareBuildQueue").will( returnValue( false ) ); + buildsManager.expects( once() ).method( "isInAnyCheckoutQueue" ).will( returnValue( false ) ); + + continuum.expects( once() ).method( "getConfiguration" ).will( returnValue( (ConfigurationService) configurationService.proxy() ) ); + configurationService.expects( once() ).method( "isDistributedBuildEnabled" ).will( returnValue( false ) ); + + action.execute(); + continuum.verify(); + + List projects = action.getProjects(); + + assertNotNull( projects ); + assertEquals( 1, projects.size() ); + + ProjectSummary summary = projects.get( 0 ); + assertEquals( 1, summary.getLatestBuildId() ); + } + + private Collection createProjectsInGroup( int projectId, int state ) + { + Collection projectsInGroup = new ArrayList(); + + ProjectGroup group = new ProjectGroup(); + group.setId( 1 ); + group.setName( "test-group" ); + + Project project = new Project(); + project.setId( projectId ); + project.setName( "test-project" ); + project.setVersion( "1.0" ); + project.setBuildNumber( 1 ); + project.setState( state ); + project.setExecutorId( "maven2" ); + project.setProjectGroup( group ); + + projectsInGroup.add( project ); + + return projectsInGroup; + } + + private Map createBuildResults( int projectId, int state ) + { + Map buildResults = new HashMap(); + + BuildResult br = new BuildResult(); + br.setId( 1 ); + br.setStartTime( System.currentTimeMillis() ); + br.setEndTime( System.currentTimeMillis() ); + br.setState( state ); + + buildResults.put( projectId, br ); + + return buildResults; + } +} Added: continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/stub/SummaryActionStub.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/stub/SummaryActionStub.java?rev=897096&view=auto ============================================================================== --- continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/stub/SummaryActionStub.java (added) +++ continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/stub/SummaryActionStub.java Fri Jan 8 05:20:40 2010 @@ -0,0 +1,17 @@ +package org.apache.maven.continuum.web.action.stub; + +import org.apache.maven.continuum.web.action.SummaryAction; + +public class SummaryActionStub + extends SummaryAction +{ + public String getProjectGroupName() + { + return "test-group"; + } + + protected void checkViewProjectGroupAuthorization( String resource ) + { + // skip authorization check + } +}