View Javadoc

1   package org.apache.continuum.buildagent.configuration;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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 }