blob: e3540a685b052ecaedd520310c0f0bb7fca187b6 [file] [log] [blame]
package org.apache.continuum.profile;
import org.apache.continuum.dao.DaoUtils;
import org.apache.maven.continuum.AbstractContinuumTest;
import org.apache.maven.continuum.installation.InstallationService;
import org.apache.maven.continuum.model.system.Installation;
import org.apache.maven.continuum.model.system.Profile;
import org.apache.maven.continuum.profile.AlreadyExistsProfileException;
import org.apache.maven.continuum.profile.ProfileService;
import java.util.List;
/*
* 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.
*/
/**
* @author <a href="mailto:olamy@codehaus.org">olamy</a>
* @version $Id$
* @since 15 juin 07
*/
public class DefaultProfileServiceTest
extends AbstractContinuumTest
{
Installation jdk1;
String jdk1Name = "jdk1";
Installation jdk2;
String jdk2Name = "jdk2";
Installation mvn205;
String mvn205Name = "mvn 2.0.5";
Installation mvn206;
String mvn206Name = "mvn 2.0.6";
Profile jdk1mvn205;
String jdk1mvn205Name = "jdk1 mvn 2.0.5";
Profile jdk2mvn206;
String jdk2mvn206Name = "jdk2 mvn 2.0.6";
Installation mvnOpts1;
String mvnOpts1Name = "mvnOpts1";
Installation mvnOpts2;
String mvnOpts2Name = "mvnOpts2";
protected void setUp()
throws Exception
{
super.setUp();
DaoUtils daoUtils = (DaoUtils) lookup( DaoUtils.class.getName() );
daoUtils.eraseDatabase();
jdk1 = new Installation();
jdk1.setType( InstallationService.JDK_TYPE );
jdk1.setVarValue( "/foo/bar" );
jdk1.setName( jdk1Name );
jdk1 = getInstallationService().add( jdk1 );
jdk2 = new Installation();
jdk2.setType( InstallationService.JDK_TYPE );
jdk2.setVarValue( "/foo/bar/zloug" );
jdk2.setName( jdk2Name );
jdk2 = getInstallationService().add( jdk2 );
mvn205 = new Installation();
mvn205.setType( InstallationService.MAVEN2_TYPE );
mvn205.setVarValue( "/users/maven-2.0.5" );
mvn205.setName( mvn205Name );
mvn205 = getInstallationService().add( mvn205 );
mvn206 = new Installation();
mvn206.setType( InstallationService.MAVEN2_TYPE );
mvn206.setVarValue( "/users/maven-2.0.6" );
mvn206.setName( mvn206Name );
mvn206 = getInstallationService().add( mvn206 );
jdk1mvn205 = new Profile();
jdk1mvn205.setJdk( jdk1 );
jdk1mvn205.setBuilder( mvn205 );
jdk1mvn205.setName( jdk1mvn205Name );
getProfileService().addProfile( jdk1mvn205 );
jdk2mvn206 = new Profile();
jdk2mvn206.setJdk( jdk2 );
jdk2mvn206.setBuilder( mvn206 );
jdk2mvn206.setName( jdk2mvn206Name );
getProfileService().addProfile( jdk2mvn206 );
mvnOpts1 = new Installation();
mvnOpts1.setType( InstallationService.ENVVAR_TYPE );
mvnOpts1.setVarName( "MAVEN_OPTS" );
mvnOpts1.setVarValue( "-Xmx256m -Djava.awt.headless=true" );
mvnOpts1.setName( mvnOpts1Name );
mvnOpts1 = getInstallationService().add( mvnOpts1 );
mvnOpts2 = new Installation();
mvnOpts2.setType( InstallationService.ENVVAR_TYPE );
mvnOpts2.setVarName( "MAVEN_OPTS" );
mvnOpts2.setVarValue( "-Xmx1024m -Xms1024m" );
mvnOpts2.setName( mvnOpts2Name );
mvnOpts2 = getInstallationService().add( mvnOpts2 );
}
public InstallationService getInstallationService()
throws Exception
{
return (InstallationService) lookup( InstallationService.ROLE, "default" );
}
public ProfileService getProfileService()
throws Exception
{
return (ProfileService) lookup( ProfileService.ROLE, "default" );
}
public void testAddProfile()
throws Exception
{
Profile defaultProfile = new Profile();
String name = "default profile";
defaultProfile.setName( name );
Profile getted = getProfileService().addProfile( defaultProfile );
assertNotNull( getProfileService().getProfile( getted.getId() ) );
assertEquals( name, getProfileService().getProfile( getted.getId() ).getName() );
assertEquals( 3, getProfileService().getAllProfiles().size() );
}
public void testAddDuplicateProfile()
throws Exception
{
Profile defaultProfile = new Profile();
String name = "default profile";
defaultProfile.setName( name );
Profile getted = getProfileService().addProfile( defaultProfile );
assertNotNull( getProfileService().getProfile( getted.getId() ) );
assertEquals( name, getProfileService().getProfile( getted.getId() ).getName() );
assertEquals( 3, getProfileService().getAllProfiles().size() );
defaultProfile = new Profile();
defaultProfile.setName( name );
try
{
getted = getProfileService().addProfile( defaultProfile );
fail( "no AlreadyExistsProfileException with an already exist name " );
}
catch ( AlreadyExistsProfileException e )
{
// we must be here
}
assertEquals( 3, getProfileService().getAllProfiles().size() );
}
public void testDeleteProfile()
throws Exception
{
Profile defaultProfile = new Profile();
defaultProfile.setName( "default profile" );
Profile getted = getProfileService().addProfile( defaultProfile );
int id = getted.getId();
assertNotNull( getProfileService().getProfile( id ) );
getProfileService().deleteProfile( id );
assertNull( getProfileService().getProfile( id ) );
}
public void testgetAllProfile()
throws Exception
{
List<Profile> all = getProfileService().getAllProfiles();
assertNotNull( all );
assertFalse( all.isEmpty() );
assertEquals( 2, all.size() );
}
public void testupdateProfile()
throws Exception
{
Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
assertEquals( jdk1mvn205Name, profile.getName() );
String newName = "new name";
profile.setName( newName );
getProfileService().updateProfile( profile );
Profile getted = getProfileService().getProfile( jdk1mvn205.getId() );
assertNotNull( getted );
assertEquals( newName, getted.getName() );
}
public void testupdateProfileDuplicateName()
throws Exception
{
Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
assertEquals( jdk1mvn205Name, profile.getName() );
profile.setName( jdk2mvn206Name );
try
{
getProfileService().updateProfile( profile );
fail( "no AlreadyExistsProfileException with duplicate name" );
}
catch ( AlreadyExistsProfileException e )
{
// we must be here
}
Profile getted = getProfileService().getProfile( jdk1mvn205.getId() );
assertNotNull( getted );
assertEquals( jdk1mvn205Name, getted.getName() );
}
public void testsetJdkInProfile()
throws Exception
{
Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
getProfileService().setJdkInProfile( profile, jdk2 );
profile = getProfileService().getProfile( jdk1mvn205.getId() );
assertEquals( jdk2.getName(), profile.getJdk().getName() );
assertEquals( jdk2.getVarValue(), profile.getJdk().getVarValue() );
}
public void testsetBuilderInProfile()
throws Exception
{
Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
getProfileService().setBuilderInProfile( profile, mvn206 );
profile = getProfileService().getProfile( jdk1mvn205.getId() );
assertEquals( mvn206.getName(), profile.getBuilder().getName() );
assertEquals( mvn206.getVarValue(), profile.getBuilder().getVarValue() );
}
public void testaddEnvVarInProfile()
throws Exception
{
Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
getProfileService().setBuilderInProfile( profile, mvn206 );
getProfileService().addEnvVarInProfile( profile, mvnOpts1 );
profile = getProfileService().getProfile( jdk1mvn205.getId() );
assertFalse( profile.getEnvironmentVariables().isEmpty() );
assertEquals( 1, profile.getEnvironmentVariables().size() );
}
public void testRemoveInstallationLinkedToAProfile()
throws Exception
{
Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
getProfileService().setJdkInProfile( profile, jdk2 );
profile = getProfileService().getProfile( jdk1mvn205.getId() );
InstallationService installationService = (InstallationService) lookup( InstallationService.ROLE, "default" );
installationService.delete( jdk2 );
}
public void testRemoveEnvVarFromProfile()
throws Exception
{
Profile profile = getProfileService().getProfile( jdk1mvn205.getId() );
getProfileService().setJdkInProfile( profile, jdk2 );
getProfileService().addEnvVarInProfile( profile, mvnOpts1 );
getProfileService().addEnvVarInProfile( profile, mvnOpts2 );
profile = getProfileService().getProfile( jdk1mvn205.getId() );
assertNotNull( profile.getJdk() );
assertEquals( 2, profile.getEnvironmentVariables().size() );
getProfileService().removeInstallationFromProfile( profile, mvnOpts1 );
profile = getProfileService().getProfile( jdk1mvn205.getId() );
assertNotNull( profile.getJdk() );
assertEquals( 1, profile.getEnvironmentVariables().size() );
getProfileService().removeInstallationFromProfile( profile, jdk2 );
profile = getProfileService().getProfile( jdk1mvn205.getId() );
assertNull( profile.getJdk() );
assertEquals( 1, profile.getEnvironmentVariables().size() );
getProfileService().removeInstallationFromProfile( profile, mvnOpts2 );
profile = getProfileService().getProfile( jdk1mvn205.getId() );
assertNull( profile.getJdk() );
assertEquals( 0, profile.getEnvironmentVariables().size() );
}
}