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