blob: 8abe50593c699fa472d33e963b967486ca0e5b3b [file] [log] [blame]
package org.apache.continuum.buildagent.configuration;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.apache.continuum.buildagent.model.Installation;
import org.apache.continuum.buildagent.model.LocalRepository;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class BuildAgentConfigurationTest
extends PlexusInSpringTestCase
{
public void testInitialize()
throws Exception
{
DefaultBuildAgentConfiguration config = (DefaultBuildAgentConfiguration) lookup(
BuildAgentConfiguration.class );
config.setConfigurationFile( new File( getBasedir(),
"target/test-classes/buildagent-config/continuum-buildagent.xml" ) );
config.initialize();
GeneralBuildAgentConfiguration generalConfig = config.getContinuumBuildAgentConfiguration();
assertEquals( "http://localhost:9595/continuum/master-xmlrpc", generalConfig.getContinuumServerUrl() );
assertEquals( new File( "/tmp/data/build-output-directory" ), generalConfig.getBuildOutputDirectory() );
assertEquals( new File( "/tmp/data/working-directory" ), generalConfig.getWorkingDirectory() );
assertEquals( 1, generalConfig.getInstallations().size() );
Installation installation = generalConfig.getInstallations().get( 0 );
assertEquals( "Tool", installation.getType() );
assertEquals( "Maven 2.2.1 Installation", installation.getName() );
assertEquals( "M2_HOME", installation.getVarName() );
assertEquals( "/tmp/apache-maven-2.2.1", installation.getVarValue() );
LocalRepository localRepo = generalConfig.getLocalRepositories().get( 0 );
assertLocalRepository( getExpectedLocalRepo(), localRepo );
}
public void testSaveExistingConfiguration()
throws Exception
{
DefaultBuildAgentConfiguration config = (DefaultBuildAgentConfiguration) lookup(
BuildAgentConfiguration.class );
config.setConfigurationFile( new File( getBasedir(),
"target/test-classes/buildagent-config/continuum-buildagent-edit.xml" ) );
config.initialize();
String expected = "http://192.165.240.12:8080/continuum/master-xmlrpc";
GeneralBuildAgentConfiguration generalConfig = config.getContinuumBuildAgentConfiguration();
assertEquals( "http://localhost:9595/continuum/master-xmlrpc", generalConfig.getContinuumServerUrl() );
assertEquals( 1, generalConfig.getInstallations().size() );
generalConfig.setContinuumServerUrl( expected );
Installation expectedInstallation = getExpectedInstallation();
generalConfig.getInstallations().add( expectedInstallation );
LocalRepository expectedLocalRepo = getExpectedLocalRepo();
List<LocalRepository> localRepos = new ArrayList<LocalRepository>();
localRepos.add( expectedLocalRepo );
generalConfig.setLocalRepositories( localRepos );
config.save();
config.reload();
assertEquals( expected, config.getContinuumBuildAgentConfiguration().getContinuumServerUrl() );
assertEquals( 2, config.getContinuumBuildAgentConfiguration().getInstallations().size() );
Installation installation = generalConfig.getInstallations().get( 1 );
assertInstallation( expectedInstallation, installation );
LocalRepository localRepo = generalConfig.getLocalRepositories().get( 0 );
assertLocalRepository( expectedLocalRepo, localRepo );
}
public void testSaveNewConfiguration()
throws Exception
{
File configFile = new File( getBasedir(),
"target/test-classes/buildagent-config/continuum-buildagent-new.xml" );
DefaultBuildAgentConfiguration config = (DefaultBuildAgentConfiguration) lookup(
BuildAgentConfiguration.class );
config.setConfigurationFile( configFile );
config.initialize();
String expectedUrl = "http://localhost:8080/continuum/master-xmlrpc";
File expectedBuildOutputDir = new File( "/tmp/data/build-output-directory" );
File expectedWorkingDir = new File( "/tmp/data/working-directory" );
GeneralBuildAgentConfiguration generalConfig = config.getContinuumBuildAgentConfiguration();
assertNull( generalConfig.getContinuumServerUrl() );
assertNull( generalConfig.getBuildOutputDirectory() );
assertNull( generalConfig.getWorkingDirectory() );
assertNull( generalConfig.getInstallations() );
Installation expectedInstallation = getExpectedInstallation();
List<Installation> installations = new ArrayList<Installation>();
installations.add( expectedInstallation );
LocalRepository expectedLocalRepo = getExpectedLocalRepo();
List<LocalRepository> localRepos = new ArrayList<LocalRepository>();
localRepos.add( expectedLocalRepo );
generalConfig.setContinuumServerUrl( expectedUrl );
generalConfig.setBuildOutputDirectory( expectedBuildOutputDir );
generalConfig.setWorkingDirectory( expectedWorkingDir );
generalConfig.setInstallations( installations );
generalConfig.setLocalRepositories( localRepos );
config.save();
config.reload();
assertTrue( configFile.exists() );
assertEquals( expectedUrl, config.getContinuumBuildAgentConfiguration().getContinuumServerUrl() );
assertEquals( expectedBuildOutputDir, config.getContinuumBuildAgentConfiguration().getBuildOutputDirectory() );
assertEquals( expectedWorkingDir, config.getContinuumBuildAgentConfiguration().getWorkingDirectory() );
assertEquals( 1, config.getContinuumBuildAgentConfiguration().getInstallations().size() );
Installation installation = generalConfig.getInstallations().get( 0 );
assertInstallation( expectedInstallation, installation );
LocalRepository localRepo = generalConfig.getLocalRepositories().get( 0 );
assertLocalRepository( expectedLocalRepo, localRepo );
}
private Installation getExpectedInstallation()
{
Installation expectedInstallation = new Installation();
expectedInstallation.setName( "Maven 2.0.10 Installation" );
expectedInstallation.setType( "Tool" );
expectedInstallation.setVarName( "M2_HOME" );
expectedInstallation.setVarValue( "/tmp/apache-maven-2.1.10" );
return expectedInstallation;
}
private LocalRepository getExpectedLocalRepo()
{
LocalRepository expectedLocalRepo = new LocalRepository();
expectedLocalRepo.setName( "default" );
expectedLocalRepo.setLayout( "default" );
expectedLocalRepo.setLocation( "/tmp/.m2/repository" );
return expectedLocalRepo;
}
private void assertLocalRepository( LocalRepository expectedLocalRepo, LocalRepository localRepo )
{
assertEquals( expectedLocalRepo.getName(), localRepo.getName() );
assertEquals( expectedLocalRepo.getLayout(), localRepo.getLayout() );
assertEquals( expectedLocalRepo.getLocation(), localRepo.getLocation() );
}
private void assertInstallation( Installation expectedInstallation, Installation installation )
{
assertEquals( expectedInstallation.getType(), installation.getType() );
assertEquals( expectedInstallation.getName(), installation.getName() );
assertEquals( expectedInstallation.getVarName(), installation.getVarName() );
assertEquals( expectedInstallation.getVarValue(), installation.getVarValue() );
}
}