You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ct...@apache.org on 2010/01/08 06:21:13 UTC
svn commit: r897096 - in /continuum/trunk/continuum-webapp/src:
main/java/org/apache/maven/continuum/web/action/
test/java/org/apache/maven/continuum/web/action/
test/java/org/apache/maven/continuum/web/action/stub/
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<String, BuildProjectTask>() ) );
action.execute();
+ continuum.verify();
}
public void testViewCurrentBuildInDistributedBuildAgent()
@@ -71,6 +72,7 @@
distributedBuildManager.expects( once() ).method( "getBuildResult" ).will( returnValue( new HashMap<String, Object>() ) );
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<Project> projectsInGroup = createProjectsInGroup( 1, ContinuumProjectState.BUILDING );
+ Map<Integer, BuildResult> buildResults = createBuildResults( 0, ContinuumProjectState.OK );
+ Map<Integer, BuildResult> buildResultsInSuccess = new HashMap<Integer, BuildResult>();
+
+ 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<ProjectSummary> projects = action.getProjects();
+
+ assertNotNull( projects );
+ assertEquals( 1, projects.size() );
+
+ ProjectSummary summary = projects.get( 0 );
+ assertEquals( 0, summary.getLatestBuildId() );
+ }
+
+ public void testLatestBuildIdInDistributedBuild()
+ throws Exception
+ {
+ Collection<Project> projectsInGroup = createProjectsInGroup( 1, ContinuumProjectState.OK );
+ Map<Integer, BuildResult> buildResults = createBuildResults( 1, ContinuumProjectState.OK );
+ Map<Integer, BuildResult> buildResultsInSuccess = new HashMap<Integer, BuildResult>();
+
+ 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<ProjectSummary> projects = action.getProjects();
+
+ assertNotNull( projects );
+ assertEquals( 1, projects.size() );
+
+ ProjectSummary summary = projects.get( 0 );
+ assertEquals( 1, summary.getLatestBuildId() );
+ }
+
+ public void testLatestBuildIdWhenCurrentlyBuilding()
+ throws Exception
+ {
+ Collection<Project> projectsInGroup = createProjectsInGroup( 1, ContinuumProjectState.BUILDING );
+ Map<Integer, BuildResult> buildResults = createBuildResults( 1, ContinuumProjectState.BUILDING );
+ Map<Integer, BuildResult> buildResultsInSuccess = new HashMap<Integer, BuildResult>();
+
+ 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<ProjectSummary> projects = action.getProjects();
+
+ assertNotNull( projects );
+ assertEquals( 1, projects.size() );
+
+ ProjectSummary summary = projects.get( 0 );
+ assertEquals( 1, summary.getLatestBuildId() );
+ }
+
+ private Collection<Project> createProjectsInGroup( int projectId, int state )
+ {
+ Collection<Project> projectsInGroup = new ArrayList<Project>();
+
+ 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<Integer, BuildResult> createBuildResults( int projectId, int state )
+ {
+ Map<Integer, BuildResult> buildResults = new HashMap<Integer, BuildResult>();
+
+ 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
+ }
+}