1 package org.apache.continuum.buildagent.configuration;
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.buildagent.model.Installation;
23 import org.apache.continuum.buildagent.model.LocalRepository;
24 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
25
26 import java.io.File;
27 import java.util.ArrayList;
28 import java.util.List;
29
30 public class BuildAgentConfigurationTest
31 extends PlexusInSpringTestCase
32 {
33 public void testInitialize()
34 throws Exception
35 {
36 DefaultBuildAgentConfiguration config = (DefaultBuildAgentConfiguration) lookup(
37 BuildAgentConfiguration.class );
38
39 config.setConfigurationFile( new File( getBasedir(),
40 "target/test-classes/buildagent-config/continuum-buildagent.xml" ) );
41
42 config.initialize();
43
44 GeneralBuildAgentConfiguration generalConfig = config.getContinuumBuildAgentConfiguration();
45 assertEquals( "http://localhost:9595/continuum/master-xmlrpc", generalConfig.getContinuumServerUrl() );
46 assertEquals( new File( "/tmp/data/build-output-directory" ), generalConfig.getBuildOutputDirectory() );
47 assertEquals( new File( "/tmp/data/working-directory" ), generalConfig.getWorkingDirectory() );
48 assertEquals( 1, generalConfig.getInstallations().size() );
49
50 Installation installation = generalConfig.getInstallations().get( 0 );
51 assertEquals( "Tool", installation.getType() );
52 assertEquals( "Maven 2.2.1 Installation", installation.getName() );
53 assertEquals( "M2_HOME", installation.getVarName() );
54 assertEquals( "/tmp/apache-maven-2.2.1", installation.getVarValue() );
55
56 LocalRepository localRepo = generalConfig.getLocalRepositories().get( 0 );
57 assertLocalRepository( getExpectedLocalRepo(), localRepo );
58 }
59
60 public void testSaveExistingConfiguration()
61 throws Exception
62 {
63 DefaultBuildAgentConfiguration config = (DefaultBuildAgentConfiguration) lookup(
64 BuildAgentConfiguration.class );
65
66 config.setConfigurationFile( new File( getBasedir(),
67 "target/test-classes/buildagent-config/continuum-buildagent-edit.xml" ) );
68
69 config.initialize();
70
71 String expected = "http://192.165.240.12:8080/continuum/master-xmlrpc";
72
73 GeneralBuildAgentConfiguration generalConfig = config.getContinuumBuildAgentConfiguration();
74
75 assertEquals( "http://localhost:9595/continuum/master-xmlrpc", generalConfig.getContinuumServerUrl() );
76 assertEquals( 1, generalConfig.getInstallations().size() );
77
78 generalConfig.setContinuumServerUrl( expected );
79
80 Installation expectedInstallation = getExpectedInstallation();
81 generalConfig.getInstallations().add( expectedInstallation );
82
83 LocalRepository expectedLocalRepo = getExpectedLocalRepo();
84
85 List<LocalRepository> localRepos = new ArrayList<LocalRepository>();
86 localRepos.add( expectedLocalRepo );
87
88 generalConfig.setLocalRepositories( localRepos );
89
90 config.save();
91
92 config.reload();
93
94 assertEquals( expected, config.getContinuumBuildAgentConfiguration().getContinuumServerUrl() );
95 assertEquals( 2, config.getContinuumBuildAgentConfiguration().getInstallations().size() );
96
97 Installation installation = generalConfig.getInstallations().get( 1 );
98 assertInstallation( expectedInstallation, installation );
99
100 LocalRepository localRepo = generalConfig.getLocalRepositories().get( 0 );
101 assertLocalRepository( expectedLocalRepo, localRepo );
102 }
103
104 public void testSaveNewConfiguration()
105 throws Exception
106 {
107 File configFile = new File( getBasedir(),
108 "target/test-classes/buildagent-config/continuum-buildagent-new.xml" );
109 DefaultBuildAgentConfiguration config = (DefaultBuildAgentConfiguration) lookup(
110 BuildAgentConfiguration.class );
111
112 config.setConfigurationFile( configFile );
113
114 config.initialize();
115
116 String expectedUrl = "http://localhost:8080/continuum/master-xmlrpc";
117 File expectedBuildOutputDir = new File( "/tmp/data/build-output-directory" );
118 File expectedWorkingDir = new File( "/tmp/data/working-directory" );
119
120 GeneralBuildAgentConfiguration generalConfig = config.getContinuumBuildAgentConfiguration();
121
122 assertNull( generalConfig.getContinuumServerUrl() );
123 assertNull( generalConfig.getBuildOutputDirectory() );
124 assertNull( generalConfig.getWorkingDirectory() );
125 assertNull( generalConfig.getInstallations() );
126
127 Installation expectedInstallation = getExpectedInstallation();
128
129 List<Installation> installations = new ArrayList<Installation>();
130 installations.add( expectedInstallation );
131
132 LocalRepository expectedLocalRepo = getExpectedLocalRepo();
133
134 List<LocalRepository> localRepos = new ArrayList<LocalRepository>();
135 localRepos.add( expectedLocalRepo );
136
137 generalConfig.setContinuumServerUrl( expectedUrl );
138 generalConfig.setBuildOutputDirectory( expectedBuildOutputDir );
139 generalConfig.setWorkingDirectory( expectedWorkingDir );
140 generalConfig.setInstallations( installations );
141 generalConfig.setLocalRepositories( localRepos );
142
143 config.save();
144
145 config.reload();
146
147 assertTrue( configFile.exists() );
148 assertEquals( expectedUrl, config.getContinuumBuildAgentConfiguration().getContinuumServerUrl() );
149 assertEquals( expectedBuildOutputDir, config.getContinuumBuildAgentConfiguration().getBuildOutputDirectory() );
150 assertEquals( expectedWorkingDir, config.getContinuumBuildAgentConfiguration().getWorkingDirectory() );
151 assertEquals( 1, config.getContinuumBuildAgentConfiguration().getInstallations().size() );
152
153 Installation installation = generalConfig.getInstallations().get( 0 );
154 assertInstallation( expectedInstallation, installation );
155
156 LocalRepository localRepo = generalConfig.getLocalRepositories().get( 0 );
157 assertLocalRepository( expectedLocalRepo, localRepo );
158 }
159
160 private Installation getExpectedInstallation()
161 {
162 Installation expectedInstallation = new Installation();
163 expectedInstallation.setName( "Maven 2.0.10 Installation" );
164 expectedInstallation.setType( "Tool" );
165 expectedInstallation.setVarName( "M2_HOME" );
166 expectedInstallation.setVarValue( "/tmp/apache-maven-2.1.10" );
167 return expectedInstallation;
168 }
169
170 private LocalRepository getExpectedLocalRepo()
171 {
172 LocalRepository expectedLocalRepo = new LocalRepository();
173 expectedLocalRepo.setName( "default" );
174 expectedLocalRepo.setLayout( "default" );
175 expectedLocalRepo.setLocation( "/tmp/.m2/repository" );
176 return expectedLocalRepo;
177 }
178
179 private void assertLocalRepository( LocalRepository expectedLocalRepo, LocalRepository localRepo )
180 {
181 assertEquals( expectedLocalRepo.getName(), localRepo.getName() );
182 assertEquals( expectedLocalRepo.getLayout(), localRepo.getLayout() );
183 assertEquals( expectedLocalRepo.getLocation(), localRepo.getLocation() );
184 }
185
186 private void assertInstallation( Installation expectedInstallation, Installation installation )
187 {
188 assertEquals( expectedInstallation.getType(), installation.getType() );
189 assertEquals( expectedInstallation.getName(), installation.getName() );
190 assertEquals( expectedInstallation.getVarName(), installation.getVarName() );
191 assertEquals( expectedInstallation.getVarValue(), installation.getVarValue() );
192 }
193 }