1 package org.apache.maven.continuum.web.action;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.continuum.buildmanager.BuildsManager;
23 import org.apache.continuum.web.action.AbstractActionTest;
24 import org.apache.maven.continuum.Continuum;
25 import org.apache.maven.continuum.configuration.ConfigurationService;
26 import org.apache.maven.continuum.model.project.BuildResult;
27 import org.apache.maven.continuum.model.project.Project;
28 import org.apache.maven.continuum.model.project.ProjectGroup;
29 import org.apache.maven.continuum.web.action.stub.SummaryActionStub;
30 import org.apache.maven.continuum.web.model.ProjectSummary;
31 import org.apache.maven.continuum.xmlrpc.project.ContinuumProjectState;
32 import org.jmock.Mock;
33
34 import java.util.ArrayList;
35 import java.util.Collection;
36 import java.util.HashMap;
37 import java.util.List;
38 import java.util.Map;
39
40 public class SummaryActionTest
41 extends AbstractActionTest
42 {
43 private SummaryActionStub action;
44
45 private Mock continuum;
46
47 private Mock configurationService;
48
49 private Mock buildsManager;
50
51 protected void setUp()
52 throws Exception
53 {
54 super.setUp();
55
56 action = new SummaryActionStub();
57
58 continuum = mock( Continuum.class );
59
60 configurationService = mock( ConfigurationService.class );
61
62 buildsManager = mock( BuildsManager.class );
63
64 action.setContinuum( (Continuum) continuum.proxy() );
65 action.setParallelBuildsManager( (BuildsManager) buildsManager.proxy() );
66 }
67
68 public void testLatestBuildIdWhenCurrentlyBuildingInDistributedBuild()
69 throws Exception
70 {
71 Collection<Project> projectsInGroup = createProjectsInGroup( 1, ContinuumProjectState.BUILDING );
72 Map<Integer, BuildResult> buildResults = createBuildResults( 0, ContinuumProjectState.OK );
73 Map<Integer, BuildResult> buildResultsInSuccess = new HashMap<Integer, BuildResult>();
74
75 continuum.expects( once() ).method( "getProjectsInGroup" ).will( returnValue( projectsInGroup ) );
76 continuum.expects( once() ).method( "getLatestBuildResults" ).will( returnValue( buildResults ) );
77 continuum.expects( once() ).method( "getBuildResultsInSuccess" ).will( returnValue( buildResultsInSuccess ) );
78
79 buildsManager.expects( once() ).method( "isInAnyBuildQueue" ).will( returnValue( false ) );
80 buildsManager.expects( once() ).method( "isInPrepareBuildQueue" ).will( returnValue( false ) );
81 buildsManager.expects( once() ).method( "isInAnyCheckoutQueue" ).will( returnValue( false ) );
82
83 continuum.expects( once() ).method( "getConfiguration" ).will( returnValue(
84 (ConfigurationService) configurationService.proxy() ) );
85 configurationService.expects( once() ).method( "isDistributedBuildEnabled" ).will( returnValue( true ) );
86
87 action.execute();
88 continuum.verify();
89
90 List<ProjectSummary> projects = action.getProjects();
91
92 assertNotNull( projects );
93 assertEquals( 1, projects.size() );
94
95 ProjectSummary summary = projects.get( 0 );
96 assertEquals( 0, summary.getLatestBuildId() );
97 }
98
99 public void testLatestBuildIdInDistributedBuild()
100 throws Exception
101 {
102 Collection<Project> projectsInGroup = createProjectsInGroup( 1, ContinuumProjectState.OK );
103 Map<Integer, BuildResult> buildResults = createBuildResults( 1, ContinuumProjectState.OK );
104 Map<Integer, BuildResult> buildResultsInSuccess = new HashMap<Integer, BuildResult>();
105
106 continuum.expects( once() ).method( "getProjectsInGroup" ).will( returnValue( projectsInGroup ) );
107 continuum.expects( once() ).method( "getLatestBuildResults" ).will( returnValue( buildResults ) );
108 continuum.expects( once() ).method( "getBuildResultsInSuccess" ).will( returnValue( buildResultsInSuccess ) );
109
110 buildsManager.expects( once() ).method( "isInAnyBuildQueue" ).will( returnValue( false ) );
111 buildsManager.expects( once() ).method( "isInPrepareBuildQueue" ).will( returnValue( false ) );
112 buildsManager.expects( once() ).method( "isInAnyCheckoutQueue" ).will( returnValue( false ) );
113
114 continuum.expects( once() ).method( "getConfiguration" ).will( returnValue(
115 (ConfigurationService) configurationService.proxy() ) );
116 configurationService.expects( once() ).method( "isDistributedBuildEnabled" ).will( returnValue( true ) );
117
118 action.execute();
119 continuum.verify();
120
121 List<ProjectSummary> projects = action.getProjects();
122
123 assertNotNull( projects );
124 assertEquals( 1, projects.size() );
125
126 ProjectSummary summary = projects.get( 0 );
127 assertEquals( 1, summary.getLatestBuildId() );
128 }
129
130 public void testLatestBuildIdWhenCurrentlyBuilding()
131 throws Exception
132 {
133 Collection<Project> projectsInGroup = createProjectsInGroup( 1, ContinuumProjectState.BUILDING );
134 Map<Integer, BuildResult> buildResults = createBuildResults( 1, ContinuumProjectState.BUILDING );
135 Map<Integer, BuildResult> buildResultsInSuccess = new HashMap<Integer, BuildResult>();
136
137 continuum.expects( once() ).method( "getProjectsInGroup" ).will( returnValue( projectsInGroup ) );
138 continuum.expects( once() ).method( "getLatestBuildResults" ).will( returnValue( buildResults ) );
139 continuum.expects( once() ).method( "getBuildResultsInSuccess" ).will( returnValue( buildResultsInSuccess ) );
140
141 buildsManager.expects( once() ).method( "isInAnyBuildQueue" ).will( returnValue( false ) );
142 buildsManager.expects( once() ).method( "isInPrepareBuildQueue" ).will( returnValue( false ) );
143 buildsManager.expects( once() ).method( "isInAnyCheckoutQueue" ).will( returnValue( false ) );
144
145 continuum.expects( once() ).method( "getConfiguration" ).will( returnValue(
146 (ConfigurationService) configurationService.proxy() ) );
147 configurationService.expects( once() ).method( "isDistributedBuildEnabled" ).will( returnValue( false ) );
148
149 action.execute();
150 continuum.verify();
151
152 List<ProjectSummary> projects = action.getProjects();
153
154 assertNotNull( projects );
155 assertEquals( 1, projects.size() );
156
157 ProjectSummary summary = projects.get( 0 );
158 assertEquals( 1, summary.getLatestBuildId() );
159 }
160
161 private Collection<Project> createProjectsInGroup( int projectId, int state )
162 {
163 Collection<Project> projectsInGroup = new ArrayList<Project>();
164
165 ProjectGroup group = new ProjectGroup();
166 group.setId( 1 );
167 group.setName( "test-group" );
168
169 Project project = new Project();
170 project.setId( projectId );
171 project.setName( "test-project" );
172 project.setVersion( "1.0" );
173 project.setBuildNumber( 1 );
174 project.setState( state );
175 project.setExecutorId( "maven2" );
176 project.setProjectGroup( group );
177
178 projectsInGroup.add( project );
179
180 return projectsInGroup;
181 }
182
183 private Map<Integer, BuildResult> createBuildResults( int projectId, int state )
184 {
185 Map<Integer, BuildResult> buildResults = new HashMap<Integer, BuildResult>();
186
187 BuildResult br = new BuildResult();
188 br.setId( 1 );
189 br.setStartTime( System.currentTimeMillis() );
190 br.setEndTime( System.currentTimeMillis() );
191 br.setState( state );
192
193 buildResults.put( projectId, br );
194
195 return buildResults;
196 }
197 }