1 package org.apache.continuum.profile;
2
3 import java.util.List;
4
5 import org.apache.continuum.dao.DaoUtils;
6 import org.apache.maven.continuum.AbstractContinuumTest;
7 import org.apache.maven.continuum.installation.InstallationService;
8 import org.apache.maven.continuum.model.system.Installation;
9 import org.apache.maven.continuum.model.system.Profile;
10 import org.apache.maven.continuum.profile.AlreadyExistsProfileException;
11 import org.apache.maven.continuum.profile.ProfileService;
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public class DefaultProfileServiceTest
38 extends AbstractContinuumTest
39 {
40
41 Installation jdk1;
42
43 private static final String jdk1Name = "jdk1";
44
45 private Installation jdk2;
46
47 private static final String jdk2Name = "jdk2";
48
49 Installation mvn205;
50
51 private static final String mvn205Name = "mvn 2.0.5";
52
53 Installation mvn206;
54
55 private static final String mvn206Name = "mvn 2.0.6";
56
57 Profile jdk1mvn205;
58
59 private static final String jdk1mvn205Name = "jdk1 mvn 2.0.5";
60
61 Profile jdk2mvn206;
62
63 private static final String jdk2mvn206Name = "jdk2 mvn 2.0.6";
64
65 Installation mvnOpts1;
66
67 private static final String mvnOpts1Name = "mvnOpts1";
68
69 Installation mvnOpts2;
70
71 private static final String mvnOpts2Name = "mvnOpts2";
72
73 protected void setUp()
74 throws Exception
75 {
76 super.setUp();
77 DaoUtils daoUtils = (DaoUtils) lookup( DaoUtils.class.getName() );
78 daoUtils.eraseDatabase();
79
80 jdk1 = new Installation();
81 jdk1.setType( InstallationService.JDK_TYPE );
82 jdk1.setVarValue( "/foo/bar" );
83 jdk1.setName( jdk1Name );
84 jdk1 = getInstallationService().add( jdk1 );
85
86 jdk2 = new Installation();
87 jdk2.setType( InstallationService.JDK_TYPE );
88 jdk2.setVarValue( "/foo/bar/zloug" );
89 jdk2.setName( jdk2Name );
90 jdk2 = getInstallationService().add( jdk2 );
91
92 mvn205 = new Installation();
93 mvn205.setType( InstallationService.MAVEN2_TYPE );
94 mvn205.setVarValue( "/users/maven-2.0.5" );
95 mvn205.setName( mvn205Name );
96 mvn205 = getInstallationService().add( mvn205 );
97
98 mvn206 = new Installation();
99 mvn206.setType( InstallationService.MAVEN2_TYPE );
100 mvn206.setVarValue( "/users/maven-2.0.6" );
101 mvn206.setName( mvn206Name );
102 mvn206 = getInstallationService().add( mvn206 );
103
104 jdk1mvn205 = new Profile();
105 jdk1mvn205.setJdk( jdk1 );
106 jdk1mvn205.setBuilder( mvn205 );
107 jdk1mvn205.setName( jdk1mvn205Name );
108 getProfileService().addProfile( jdk1mvn205 );
109
110 jdk2mvn206 = new Profile();
111 jdk2mvn206.setJdk( jdk2 );
112 jdk2mvn206.setBuilder( mvn206 );
113 jdk2mvn206.setName( jdk2mvn206Name );
114 getProfileService().addProfile( jdk2mvn206 );
115
116 mvnOpts1 = new Installation();
117 mvnOpts1.setType( InstallationService.ENVVAR_TYPE );
118 mvnOpts1.setVarName( "MAVEN_OPTS" );
119 mvnOpts1.setVarValue( "-Xmx256m -Djava.awt.headless=true" );
120 mvnOpts1.setName( mvnOpts1Name );
121 mvnOpts1 = getInstallationService().add( mvnOpts1 );
122
123 mvnOpts2 = new Installation();
124 mvnOpts2.setType( InstallationService.ENVVAR_TYPE );
125 mvnOpts2.setVarName( "MAVEN_OPTS" );
126 mvnOpts2.setVarValue( "-Xmx1024m -Xms1024m" );
127 mvnOpts2.setName( mvnOpts2Name );
128 mvnOpts2 = getInstallationService().add( mvnOpts2 );
129
130 }
131
132 public InstallationService getInstallationService()
133 throws Exception
134 {
135 return (InstallationService) lookup( InstallationService.ROLE, "default" );
136 }
137
138 public ProfileService getProfileService()
139 throws Exception
140 {
141 return (ProfileService) lookup( ProfileService.ROLE, "default" );
142 }
143
144 public void testAddProfile()
145 throws Exception
146 {
147 Profile defaultProfile = new Profile();
148 String name = "default profile";
149 defaultProfile.setName( name );
150 Profile getted = getProfileService().addProfile( defaultProfile );
151 assertNotNull( getProfileService().getProfile( getted.getId() ) );
152 assertEquals( name, getProfileService().getProfile( getted.getId() ).getName() );
153 assertEquals( 3, getProfileService().getAllProfiles().size() );
154 }
155
156 public void testAddDuplicateProfile()
157 throws Exception
158 {
159 Profile defaultProfile = new Profile();
160 String name = "default profile";
161 defaultProfile.setName( name );
162 Profile getted = getProfileService().addProfile( defaultProfile );
163 assertNotNull( getProfileService().getProfile( getted.getId() ) );
164 assertEquals( name, getProfileService().getProfile( getted.getId() ).getName() );
165 assertEquals( 3, getProfileService().getAllProfiles().size() );
166
167 defaultProfile = new Profile();
168 defaultProfile.setName( name );
169 try
170 {
171 getProfileService().addProfile( defaultProfile );
172 fail( "no AlreadyExistsProfileException with an already exist name " );
173 }
174 catch ( AlreadyExistsProfileException e )
175 {
176
177 }
178 assertEquals( 3, getProfileService().getAllProfiles().size() );
179 }
180
181 public void testDeleteProfile()
182 throws Exception
183 {
184 Profile defaultProfile = new Profile();
185 defaultProfile.setName( "default profile" );
186 Profile getted = getProfileService().addProfile( defaultProfile );
187 int id = getted.getId();
188 assertNotNull( getProfileService().getProfile( id ) );
189 getProfileService().deleteProfile( id );
190 assertNull( getProfileService().getProfile( id ) );
191 }
192
193 public void testgetAllProfile()
194 throws Exception
195 {
196 List<Profile> all = getProfileService().getAllProfiles();
197 assertNotNull( all );
198 assertFalse( all.isEmpty() );
199 assertEquals( 2, all.size() );
200 }
201
202 public void testupdateProfile()
203 throws Exception
204 {
205 Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
206 assertEquals( jdk1mvn205Name, profile.getName() );
207 String newName = "new name";
208 profile.setName( newName );
209 getProfileService().updateProfile( profile );
210
211 Profile getted = getProfileService().getProfile( jdk1mvn205.getId() );
212 assertNotNull( getted );
213 assertEquals( newName, getted.getName() );
214 }
215
216 public void testupdateProfileDuplicateName()
217 throws Exception
218 {
219 Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
220 assertEquals( jdk1mvn205Name, profile.getName() );
221 profile.setName( jdk2mvn206Name );
222
223 try
224 {
225 getProfileService().updateProfile( profile );
226
227
228 }
229 catch ( AlreadyExistsProfileException e )
230 {
231
232 }
233 Profile getted = getProfileService().getProfile( jdk1mvn205.getId() );
234 assertNotNull( getted );
235 assertEquals( jdk2mvn206Name, getted.getName() );
236 }
237
238 public void testsetJdkInProfile()
239 throws Exception
240 {
241 Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
242 getProfileService().setJdkInProfile( profile, jdk2 );
243
244 profile = getProfileService().getProfile( jdk1mvn205.getId() );
245 assertEquals( jdk2.getName(), profile.getJdk().getName() );
246 assertEquals( jdk2.getVarValue(), profile.getJdk().getVarValue() );
247 }
248
249 public void testsetBuilderInProfile()
250 throws Exception
251 {
252 Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
253 getProfileService().setBuilderInProfile( profile, mvn206 );
254 profile = getProfileService().getProfile( jdk1mvn205.getId() );
255 assertEquals( mvn206.getName(), profile.getBuilder().getName() );
256 assertEquals( mvn206.getVarValue(), profile.getBuilder().getVarValue() );
257
258 }
259
260 public void testaddEnvVarInProfile()
261 throws Exception
262 {
263 Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
264 getProfileService().setBuilderInProfile( profile, mvn206 );
265 getProfileService().addEnvVarInProfile( profile, mvnOpts1 );
266 profile = getProfileService().getProfile( jdk1mvn205.getId() );
267 assertFalse( profile.getEnvironmentVariables().isEmpty() );
268 assertEquals( 1, profile.getEnvironmentVariables().size() );
269 }
270
271 public void testRemoveInstallationLinkedToAProfile()
272 throws Exception
273 {
274 Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
275 getProfileService().setJdkInProfile( profile, jdk2 );
276
277 getProfileService().getProfile( jdk1mvn205.getId() );
278 InstallationService installationService = (InstallationService) lookup( InstallationService.ROLE, "default" );
279 installationService.delete( jdk2 );
280 }
281
282 public void testRemoveEnvVarFromProfile()
283 throws Exception
284 {
285 Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
286 getProfileService().setJdkInProfile( profile, jdk2 );
287 getProfileService().addEnvVarInProfile( profile, mvnOpts1 );
288 getProfileService().addEnvVarInProfile( profile, mvnOpts2 );
289
290 profile = getProfileService().getProfile( jdk1mvn205.getId() );
291 assertNotNull( profile.getJdk() );
292 assertEquals( 2, profile.getEnvironmentVariables().size() );
293
294 getProfileService().removeInstallationFromProfile( profile, mvnOpts1 );
295
296 profile = getProfileService().getProfile( jdk1mvn205.getId() );
297 assertNotNull( profile.getJdk() );
298 assertEquals( 1, profile.getEnvironmentVariables().size() );
299
300 getProfileService().removeInstallationFromProfile( profile, jdk2 );
301
302 profile = getProfileService().getProfile( jdk1mvn205.getId() );
303 assertNull( profile.getJdk() );
304 assertEquals( 1, profile.getEnvironmentVariables().size() );
305
306 getProfileService().removeInstallationFromProfile( profile, mvnOpts2 );
307 profile = getProfileService().getProfile( jdk1mvn205.getId() );
308 assertNull( profile.getJdk() );
309 assertEquals( 0, profile.getEnvironmentVariables().size() );
310 }
311
312
313 }