1 package org.apache.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.configuration.BuildAgentConfiguration;
23 import org.apache.continuum.configuration.BuildAgentGroupConfiguration;
24 import org.apache.continuum.release.distributed.DistributedReleaseUtil;
25 import org.apache.continuum.web.action.stub.ReleaseActionStub;
26 import org.apache.maven.continuum.Continuum;
27 import org.apache.maven.continuum.configuration.ConfigurationService;
28 import org.apache.maven.continuum.model.system.Profile;
29 import org.jmock.Mock;
30
31 import java.util.ArrayList;
32 import java.util.List;
33 import java.util.Map;
34
35 public class AbstractReleaseActionTest
36 extends AbstractActionTest
37 {
38 private ReleaseActionStub action;
39
40 private Mock continuumMock;
41
42 private Mock configurationServiceMock;
43
44 private String defaultBuildagentUrl = "http://localhost:8181/continuum-buildagent/xmlrpc";
45
46 protected void setUp()
47 throws Exception
48 {
49 super.setUp();
50
51 continuumMock = mock( Continuum.class );
52 configurationServiceMock = mock( ConfigurationService.class );
53
54 Profile profile = new Profile();
55 profile.setBuildAgentGroup( "BUILDAGENT_GROUP" );
56
57 action = new ReleaseActionStub();
58 action.setProfile( profile );
59 action.setDefaultBuildagent( defaultBuildagentUrl );
60 action.setContinuum( (Continuum) continuumMock.proxy() );
61 }
62
63 public void testGetEnvironmentsDefaultAgentInGroup()
64 throws Exception
65 {
66 BuildAgentGroupConfiguration buildAgentGroup = createBuildAgentGroupConfiguration( true );
67 buildAgentGroup.addBuildAgent( new BuildAgentConfiguration( defaultBuildagentUrl, "Default Build Agent",
68 true ) );
69
70 continuumMock.expects( atLeastOnce() ).method( "getConfiguration" ).will( returnValue(
71 configurationServiceMock.proxy() ) );
72 configurationServiceMock.expects( atLeastOnce() ).method( "getBuildAgentGroup" ).will( returnValue(
73 buildAgentGroup ) );
74
75 action.getEnvironments();
76 Map<String, String> envVars = action.getEnvironmentVariables();
77 String buildagent = envVars.get( DistributedReleaseUtil.KEY_BUILD_AGENT_URL );
78
79 assertNotNull( envVars );
80 assertTrue( "Default build agent is expected to be used.", defaultBuildagentUrl.equals( buildagent ) );
81 }
82
83 public void testGetEnvironmentsDefaultAgentNotInGroup()
84 throws Exception
85 {
86 BuildAgentGroupConfiguration buildAgentGroup = createBuildAgentGroupConfiguration( true );
87
88 continuumMock.expects( atLeastOnce() ).method( "getConfiguration" ).will( returnValue(
89 configurationServiceMock.proxy() ) );
90 configurationServiceMock.expects( atLeastOnce() ).method( "getBuildAgentGroup" ).will( returnValue(
91 buildAgentGroup ) );
92
93 action.getEnvironments();
94 Map<String, String> envVars = action.getEnvironmentVariables();
95 String buildagent = envVars.get( DistributedReleaseUtil.KEY_BUILD_AGENT_URL );
96
97 assertNotNull( envVars );
98 assertFalse( "Default build agent is not expected to be used.", defaultBuildagentUrl.equals( buildagent ) );
99 }
100
101 public void testGetEnvironmentsNoEnabledAgentInGroup()
102 throws Exception
103 {
104 BuildAgentGroupConfiguration buildAgentGroup = createBuildAgentGroupConfiguration( false );
105 buildAgentGroup.addBuildAgent( new BuildAgentConfiguration( defaultBuildagentUrl, "Default Build Agent",
106 false ) );
107
108 continuumMock.expects( atLeastOnce() ).method( "getConfiguration" ).will( returnValue(
109 configurationServiceMock.proxy() ) );
110 configurationServiceMock.expects( atLeastOnce() ).method( "getBuildAgentGroup" ).will( returnValue(
111 buildAgentGroup ) );
112
113 action.getEnvironments();
114 Map<String, String> envVars = action.getEnvironmentVariables();
115 String buildagent = envVars.get( DistributedReleaseUtil.KEY_BUILD_AGENT_URL );
116
117 assertNotNull( envVars );
118 assertFalse( "Default build agent is not expected to be used.", defaultBuildagentUrl.equals( buildagent ) );
119 assertNull( "Build agent should be empty.", buildagent );
120 }
121
122 public void testGetEnvironmentsNoAgentInGroup()
123 throws Exception
124 {
125 BuildAgentGroupConfiguration buildAgentGroup = new BuildAgentGroupConfiguration();
126
127 continuumMock.expects( atLeastOnce() ).method( "getConfiguration" ).will( returnValue(
128 configurationServiceMock.proxy() ) );
129 configurationServiceMock.expects( atLeastOnce() ).method( "getBuildAgentGroup" ).will( returnValue(
130 buildAgentGroup ) );
131
132 action.getEnvironments();
133 Map<String, String> envVars = action.getEnvironmentVariables();
134 String buildagent = envVars.get( DistributedReleaseUtil.KEY_BUILD_AGENT_URL );
135
136 assertNotNull( envVars );
137 assertFalse( "Default build agent is not expected to be used.", defaultBuildagentUrl.equals( buildagent ) );
138 assertNull( "Build agent should be empty.", buildagent );
139 }
140
141 private BuildAgentGroupConfiguration createBuildAgentGroupConfiguration( boolean isAgentEnabled )
142 {
143 BuildAgentConfiguration buildagent1 = new BuildAgentConfiguration(
144 "http://localhost:9191/continuum-buildagent/xmlrpc", "Other Build Agent", isAgentEnabled );
145 BuildAgentConfiguration buildagent2 = new BuildAgentConfiguration(
146 "http://localhost:9292/continuum-buildagent/xmlrpc", "Other Build Agent", isAgentEnabled );
147
148 List<BuildAgentConfiguration> buildAgents = new ArrayList<BuildAgentConfiguration>();
149 buildAgents.add( buildagent1 );
150 buildAgents.add( buildagent2 );
151
152 BuildAgentGroupConfiguration buildAgentGroup = new BuildAgentGroupConfiguration( "BUILDAGENT_GROUP",
153 buildAgents );
154
155 return buildAgentGroup;
156 }
157 }