blob: e97b0fa8d25584ae4b1e4908002a7442e033a463 [file] [log] [blame]
package org.apache.maven.continuum.store;
/*
* 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.dao.ContinuumReleaseResultDao;
import org.apache.continuum.dao.DaoUtils;
import org.apache.continuum.dao.DirectoryPurgeConfigurationDao;
import org.apache.continuum.dao.InstallationDao;
import org.apache.continuum.dao.LocalRepositoryDao;
import org.apache.continuum.dao.ProfileDao;
import org.apache.continuum.dao.ProjectDao;
import org.apache.continuum.dao.ProjectGroupDao;
import org.apache.continuum.dao.RepositoryPurgeConfigurationDao;
import org.apache.continuum.dao.ScheduleDao;
import org.apache.continuum.dao.SystemConfigurationDao;
import org.apache.continuum.model.release.ContinuumReleaseResult;
import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
import org.apache.continuum.model.repository.LocalRepository;
import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
import org.apache.maven.continuum.installation.InstallationService;
import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.model.project.ProjectDependency;
import org.apache.maven.continuum.model.project.ProjectDeveloper;
import org.apache.maven.continuum.model.project.ProjectGroup;
import org.apache.maven.continuum.model.project.ProjectNotifier;
import org.apache.maven.continuum.model.project.Schedule;
import org.apache.maven.continuum.model.scm.ChangeFile;
import org.apache.maven.continuum.model.scm.ChangeSet;
import org.apache.maven.continuum.model.scm.ScmResult;
import org.apache.maven.continuum.model.system.Installation;
import org.apache.maven.continuum.model.system.Profile;
import org.apache.maven.continuum.model.system.SystemConfiguration;
import org.codehaus.plexus.jdo.DefaultConfigurableJdoFactory;
import org.codehaus.plexus.jdo.JdoFactory;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* Base class for tests using the continuum store.
*/
public abstract class AbstractContinuumStoreTestCase
extends PlexusInSpringTestCase
{
protected DaoUtils daoUtilsImpl;
protected DirectoryPurgeConfigurationDao directoryPurgeConfigurationDao;
protected LocalRepositoryDao localRepositoryDao;
protected RepositoryPurgeConfigurationDao repositoryPurgeConfigurationDao;
protected InstallationDao installationDao;
protected ProfileDao profileDao;
protected ProjectGroupDao projectGroupDao;
protected ProjectDao projectDao;
protected ScheduleDao scheduleDao;
protected SystemConfigurationDao systemConfigurationDao;
protected ContinuumReleaseResultDao releaseResultDao;
protected ProjectGroup defaultProjectGroup;
protected ProjectGroup testProjectGroup2;
protected Project testProject1;
protected Project testProject2;
protected Schedule testSchedule1;
protected Schedule testSchedule2;
protected Schedule testSchedule3;
protected Profile testProfile1;
protected Profile testProfile2;
protected Profile testProfile3;
protected Installation testInstallationJava13;
protected Installation testInstallationJava14;
protected Installation testInstallationMaven20a3;
protected BuildResult testBuildResult1;
protected BuildResult testBuildResult2;
protected BuildResult testBuildResult3;
protected ScmResult testCheckoutResult1;
protected LocalRepository testLocalRepository1;
protected LocalRepository testLocalRepository2;
protected LocalRepository testLocalRepository3;
protected RepositoryPurgeConfiguration testRepoPurgeConfiguration1;
protected RepositoryPurgeConfiguration testRepoPurgeConfiguration2;
protected RepositoryPurgeConfiguration testRepoPurgeConfiguration3;
protected DirectoryPurgeConfiguration testDirectoryPurgeConfig;
private SystemConfiguration systemConfiguration;
@Override
protected void setUp()
throws Exception
{
super.setUp();
createStore();
directoryPurgeConfigurationDao =
(DirectoryPurgeConfigurationDao) lookup( DirectoryPurgeConfigurationDao.class.getName() );
localRepositoryDao = (LocalRepositoryDao) lookup( LocalRepositoryDao.class.getName() );
repositoryPurgeConfigurationDao =
(RepositoryPurgeConfigurationDao) lookup( RepositoryPurgeConfigurationDao.class.getName() );
installationDao = (InstallationDao) lookup( InstallationDao.class.getName() );
profileDao = (ProfileDao) lookup( ProfileDao.class.getName() );
projectGroupDao = (ProjectGroupDao) lookup( ProjectGroupDao.class.getName() );
projectDao = (ProjectDao) lookup( ProjectDao.class.getName() );
scheduleDao = (ScheduleDao) lookup( ScheduleDao.class.getName() );
systemConfigurationDao = (SystemConfigurationDao) lookup( SystemConfigurationDao.class.getName() );
releaseResultDao = (ContinuumReleaseResultDao) lookup( ContinuumReleaseResultDao.class.getName() );
}
protected void createBuildDatabase()
throws Exception
{
createBuildDatabase( true );
}
protected void createBuildDatabase( boolean addToStore )
throws Exception
{
// Setting up test data
testLocalRepository1 = createTestLocalRepository( "name1", "location1", "layout1" );
LocalRepository localRepository1 = createTestLocalRepository( testLocalRepository1 );
if ( addToStore )
{
localRepository1 = localRepositoryDao.addLocalRepository( localRepository1 );
testLocalRepository1.setId( localRepository1.getId() );
}
else
{
localRepository1.setId( 1 );
testLocalRepository1.setId( 1 );
}
testLocalRepository2 = createTestLocalRepository( "name2", "location2", "layout2" );
LocalRepository localRepository2 = createTestLocalRepository( testLocalRepository2 );
if ( addToStore )
{
localRepository2 = localRepositoryDao.addLocalRepository( localRepository2 );
testLocalRepository2.setId( localRepository2.getId() );
}
else
{
localRepository2.setId( 2 );
testLocalRepository2.setId( 2 );
}
testLocalRepository3 = createTestLocalRepository( "name3", "location3", "layout3" );
LocalRepository localRepository3 = createTestLocalRepository( testLocalRepository3 );
if ( addToStore )
{
localRepository3 = localRepositoryDao.addLocalRepository( localRepository3 );
testLocalRepository3.setId( localRepository3.getId() );
}
else
{
localRepository3.setId( 3 );
testLocalRepository3.setId( 3 );
}
defaultProjectGroup = createTestProjectGroup( "Default Group", "The Default Group",
"org.apache.maven.test.default", localRepository1 );
testProjectGroup2 =
createTestProjectGroup( "test group 2", "test group 2 desc", "test group 2 groupId", localRepository2 );
testProject1 = createTestProject( "artifactId1", 1, "description1", defaultProjectGroup.getGroupId(), "name1",
"scmUrl1", 1, "url1", "version1", "workingDirectory1" );
// state must be 1 unless we setup a build in the correct state
testProject2 = createTestProject( "artifactId2", 2, "description2", defaultProjectGroup.getGroupId(), "name2",
"scmUrl2", 1, "url2", "version2", "workingDirectory2" );
testSchedule1 = createTestSchedule( "name1", "description1", 1, "cronExpression1", true );
testSchedule2 = createTestSchedule( "name2", "description2", 2, "cronExpression2", true );
testSchedule3 = createTestSchedule( "name3", "description3", 3, "cronExpression3", true );
testInstallationJava13 =
createTestInstallation( "JDK 1.3", InstallationService.JDK_TYPE, "JAVA_HOME", "/usr/local/java-1.3" );
testInstallationJava14 =
createTestInstallation( "JDK 1.4", InstallationService.JDK_TYPE, "JAVA_HOME", "/usr/local/java-1.4" );
testInstallationMaven20a3 = createTestInstallation( "Maven 2.0 alpha 3", InstallationService.MAVEN2_TYPE,
"M2_HOME", "/usr/local/maven-2.0-alpha-3" );
ProjectNotifier testGroupNotifier1 = createTestNotifier( 1, true, false, true, "type1" );
ProjectNotifier testGroupNotifier2 = createTestNotifier( 2, false, true, false, "type2" );
ProjectNotifier testGroupNotifier3 = createTestNotifier( 3, true, false, false, "type3" );
ProjectNotifier testNotifier1 = createTestNotifier( 11, true, true, false, "type11" );
ProjectNotifier testNotifier2 = createTestNotifier( 12, false, false, true, "type12" );
ProjectNotifier testNotifier3 = createTestNotifier( 13, false, true, false, "type13" );
ProjectDeveloper testDeveloper1 = createTestDeveloper( 1, "email1", "name1", "scmId1" );
ProjectDeveloper testDeveloper2 = createTestDeveloper( 2, "email2", "name2", "scmId2" );
ProjectDeveloper testDeveloper3 = createTestDeveloper( 3, "email3", "name3", "scmId3" );
ProjectDependency testDependency1 = createTestDependency( "groupId1", "artifactId1", "version1" );
ProjectDependency testDependency2 = createTestDependency( "groupId2", "artifactId2", "version2" );
ProjectDependency testDependency3 = createTestDependency( "groupId3", "artifactId3", "version3" );
// TODO: simplify by deep copying the relationships in createTest... ?
long baseTime = System.currentTimeMillis();
testBuildResult1 = createTestBuildResult( 1, true, 1, 1, "error1", 1, baseTime, baseTime + 1000 );
BuildResult buildResult1 = createTestBuildResult( testBuildResult1 );
ScmResult scmResult = createTestScmResult( "commandOutput1", "providerMessage1", true, "1" );
buildResult1.setScmResult( scmResult );
ScmResult testBuildResult1ScmResult = createTestScmResult( scmResult, "1" );
testBuildResult1.setScmResult( testBuildResult1ScmResult );
testCheckoutResult1 = createTestScmResult( "commandOutputCO1", "providerMessageCO1", false, "CO1" );
ScmResult checkoutResult1 = createTestScmResult( testCheckoutResult1, "CO1" );
testProject1.setCheckoutResult( checkoutResult1 );
testProject1.addBuildResult( buildResult1 );
testBuildResult2 = createTestBuildResult( 2, false, 2, 2, "error2", 2, baseTime + 2000, baseTime + 3000 );
BuildResult buildResult2 = createTestBuildResult( testBuildResult2 );
testProject1.addBuildResult( buildResult2 );
testBuildResult3 = createTestBuildResult( 3, true, 3, 3, "error3", 3, baseTime + 4000, baseTime + 5000 );
BuildResult buildResult3 = createTestBuildResult( testBuildResult3 );
scmResult = createTestScmResult( "commandOutput3", "providerMessage3", true, "3" );
buildResult3.setScmResult( scmResult );
testBuildResult3.setScmResult( createTestScmResult( scmResult, "3" ) );
testProject2.addBuildResult( buildResult3 );
// TODO: better way? this assumes that some untested methods already work!
Schedule schedule2 = createTestSchedule( testSchedule2 );
if ( addToStore )
{
schedule2 = scheduleDao.addSchedule( schedule2 );
testSchedule2.setId( schedule2.getId() );
}
else
{
// from expected.xml, continuum-data-management
testSchedule2.setId( 1 );
}
Schedule schedule1 = createTestSchedule( testSchedule1 );
if ( addToStore )
{
schedule1 = scheduleDao.addSchedule( schedule1 );
testSchedule1.setId( schedule1.getId() );
}
else
{
// from expected.xml, continuum-data-management
testSchedule1.setId( 2 );
}
Schedule schedule3 = createTestSchedule( testSchedule3 );
if ( addToStore )
{
schedule3 = scheduleDao.addSchedule( schedule3 );
testSchedule3.setId( schedule3.getId() );
}
else
{
// from expected.xml, continuum-data-management
testSchedule3.setId( 3 );
}
Installation installationJava14 = createTestInstallation( testInstallationJava14 );
if ( addToStore )
{
installationJava14 = installationDao.addInstallation( installationJava14 );
}
else
{
installationJava14.setInstallationId( 1 );
}
Installation installationMaven20a3 = createTestInstallation( testInstallationMaven20a3 );
if ( addToStore )
{
installationMaven20a3 = installationDao.addInstallation( installationMaven20a3 );
}
else
{
installationMaven20a3.setInstallationId( 2 );
}
Installation installationJava13 = createTestInstallation( testInstallationJava13 );
if ( addToStore )
{
installationJava13 = installationDao.addInstallation( installationJava13 );
}
else
{
installationJava13.setInstallationId( 3 );
}
testProfile1 =
createTestProfile( "name1", "description1", 1, true, true, installationJava13, installationMaven20a3 );
testProfile2 =
createTestProfile( "name2", "description2", 2, false, true, installationJava14, installationMaven20a3 );
testProfile3 =
createTestProfile( "name3", "description3", 3, true, false, installationJava14, installationMaven20a3 );
Profile profile1 = createTestProfile( testProfile1 );
if ( addToStore )
{
profile1 = profileDao.addProfile( profile1 );
testProfile1.setId( profile1.getId() );
}
else
{
testProfile1.setId( 1 );
}
Profile profile2 = createTestProfile( testProfile2 );
if ( addToStore )
{
profile2 = profileDao.addProfile( profile2 );
testProfile2.setId( profile2.getId() );
}
else
{
testProfile2.setId( 2 );
}
Profile profile3 = createTestProfile( testProfile3 );
if ( addToStore )
{
profile3 = profileDao.addProfile( profile3 );
testProfile3.setId( profile3.getId() );
}
else
{
profile3.setId( 3 );
}
testRepoPurgeConfiguration1 =
createTestRepositoryPurgeConfiguration( true, 5, 50, false, schedule2, true, localRepository1 );
if ( addToStore )
{
testRepoPurgeConfiguration1 =
repositoryPurgeConfigurationDao.addRepositoryPurgeConfiguration( testRepoPurgeConfiguration1 );
}
else
{
testRepoPurgeConfiguration1.setId( 1 );
}
testRepoPurgeConfiguration2 =
createTestRepositoryPurgeConfiguration( false, 10, 200, true, schedule1, true, localRepository2 );
if ( addToStore )
{
testRepoPurgeConfiguration2 =
repositoryPurgeConfigurationDao.addRepositoryPurgeConfiguration( testRepoPurgeConfiguration2 );
}
else
{
testRepoPurgeConfiguration2.setId( 2 );
}
testRepoPurgeConfiguration3 =
createTestRepositoryPurgeConfiguration( false, 10, 200, true, schedule2, true, localRepository1 );
if ( addToStore )
{
testRepoPurgeConfiguration3 =
repositoryPurgeConfigurationDao.addRepositoryPurgeConfiguration( testRepoPurgeConfiguration3 );
}
else
{
testRepoPurgeConfiguration3.setId( 3 );
}
testDirectoryPurgeConfig =
createTestDirectoryPurgeConfiguration( "location1", "directoryType1", true, 10, 50, schedule2, true );
if ( addToStore )
{
testDirectoryPurgeConfig =
directoryPurgeConfigurationDao.addDirectoryPurgeConfiguration( testDirectoryPurgeConfig );
}
else
{
testDirectoryPurgeConfig.setId( 1 );
}
BuildDefinition testGroupBuildDefinition1 =
createTestBuildDefinition( "arguments1", "buildFile1", "goals1", profile1, schedule2, false, false );
BuildDefinition testGroupBuildDefinition2 =
createTestBuildDefinition( "arguments2", "buildFile2", "goals2", profile1, schedule1, false, false );
BuildDefinition testGroupBuildDefinition3 =
createTestBuildDefinition( "arguments3", "buildFile3", "goals3", profile2, schedule1, false, false );
BuildDefinition testGroupBuildDefinition4 =
createTestBuildDefinition( null, null, "deploy", null, null, false, false );
BuildDefinition testBuildDefinition1 =
createTestBuildDefinition( "arguments11", "buildFile11", "goals11", profile2, schedule1, false, false );
BuildDefinition testBuildDefinition2 =
createTestBuildDefinition( "arguments12", "buildFile12", "goals12", profile2, schedule2, false, false );
BuildDefinition testBuildDefinition3 =
createTestBuildDefinition( "arguments13", "buildFile13", "goals13", profile1, schedule2, false, false );
BuildDefinition testBuildDefinition4 =
createTestBuildDefinition( null, null, "deploy", null, null, false, false );
ProjectGroup group = createTestProjectGroup( defaultProjectGroup );
Project project1 = createTestProject( testProject1 );
project1.addBuildResult( buildResult1 );
project1.addBuildResult( buildResult2 );
project1.setCheckoutResult( checkoutResult1 );
ProjectNotifier notifier1 = createTestNotifier( testNotifier1 );
project1.addNotifier( notifier1 );
testProject1.addNotifier( testNotifier1 );
BuildDefinition buildDefinition1 = createTestBuildDefinition( testBuildDefinition1 );
project1.addBuildDefinition( buildDefinition1 );
testProject1.addBuildDefinition( testBuildDefinition1 );
BuildDefinition buildDefinition2 = createTestBuildDefinition( testBuildDefinition2 );
project1.addBuildDefinition( buildDefinition2 );
testProject1.addBuildDefinition( testBuildDefinition2 );
ProjectDeveloper projectDeveloper1 = createTestDeveloper( testDeveloper1 );
project1.addDeveloper( projectDeveloper1 );
testProject1.addDeveloper( testDeveloper1 );
ProjectDependency projectDependency1 = createTestDependency( testDependency1 );
project1.addDependency( projectDependency1 );
testProject1.addDependency( testDependency1 );
ProjectDependency projectDependency2 = createTestDependency( testDependency2 );
project1.addDependency( projectDependency2 );
testProject1.addDependency( testDependency2 );
group.addProject( project1 );
defaultProjectGroup.addProject( project1 );
Project project2 = createTestProject( testProject2 );
project2.addBuildResult( buildResult3 );
ProjectNotifier notifier2 = createTestNotifier( testNotifier2 );
project2.addNotifier( notifier2 );
testProject2.addNotifier( testNotifier2 );
ProjectNotifier notifier3 = createTestNotifier( testNotifier3 );
project2.addNotifier( notifier3 );
testProject2.addNotifier( testNotifier3 );
BuildDefinition buildDefinition3 = createTestBuildDefinition( testBuildDefinition3 );
project2.addBuildDefinition( buildDefinition3 );
testProject2.addBuildDefinition( testBuildDefinition3 );
BuildDefinition buildDefinition4 = createTestBuildDefinition( testBuildDefinition4 );
project2.addBuildDefinition( buildDefinition4 );
testProject2.addBuildDefinition( testBuildDefinition4 );
ProjectDeveloper projectDeveloper2 = createTestDeveloper( testDeveloper2 );
project2.addDeveloper( projectDeveloper2 );
testProject2.addDeveloper( testDeveloper2 );
ProjectDeveloper projectDeveloper3 = createTestDeveloper( testDeveloper3 );
project2.addDeveloper( projectDeveloper3 );
testProject2.addDeveloper( testDeveloper3 );
ProjectDependency projectDependency3 = createTestDependency( testDependency3 );
project2.addDependency( projectDependency3 );
testProject2.addDependency( testDependency3 );
group.addProject( project2 );
defaultProjectGroup.addProject( project2 );
ProjectNotifier groupNotifier1 = createTestNotifier( testGroupNotifier1 );
group.addNotifier( groupNotifier1 );
defaultProjectGroup.addNotifier( testGroupNotifier1 );
ProjectNotifier groupNotifier2 = createTestNotifier( testGroupNotifier2 );
group.addNotifier( groupNotifier2 );
defaultProjectGroup.addNotifier( testGroupNotifier2 );
BuildDefinition groupBuildDefinition1 = createTestBuildDefinition( testGroupBuildDefinition1 );
group.addBuildDefinition( groupBuildDefinition1 );
defaultProjectGroup.addBuildDefinition( testGroupBuildDefinition1 );
if ( addToStore )
{
projectGroupDao.addProjectGroup( group );
defaultProjectGroup.setId( group.getId() );
testProject1.setId( project1.getId() );
testProject2.setId( project2.getId() );
testBuildResult1.setId( buildResult1.getId() );
testBuildResult2.setId( buildResult2.getId() );
testBuildResult3.setId( buildResult3.getId() );
}
else
{
// from expected.xml, continuum-data-management
defaultProjectGroup.setId( 1 );
testProject1.setId( 1 );
testProject2.setId( 2 );
}
group = createTestProjectGroup( testProjectGroup2 );
ProjectNotifier groupNotifier3 = createTestNotifier( testGroupNotifier3 );
group.addNotifier( groupNotifier3 );
testProjectGroup2.addNotifier( testGroupNotifier3 );
BuildDefinition groupBuildDefinition2 = createTestBuildDefinition( testGroupBuildDefinition2 );
group.addBuildDefinition( groupBuildDefinition2 );
testProjectGroup2.addBuildDefinition( testGroupBuildDefinition2 );
BuildDefinition groupBuildDefinition3 = createTestBuildDefinition( testGroupBuildDefinition3 );
group.addBuildDefinition( groupBuildDefinition3 );
testProjectGroup2.addBuildDefinition( testGroupBuildDefinition3 );
BuildDefinition groupBuildDefinition4 = createTestBuildDefinition( testGroupBuildDefinition4 );
group.addBuildDefinition( groupBuildDefinition4 );
testProjectGroup2.addBuildDefinition( testGroupBuildDefinition4 );
if ( addToStore )
{
projectGroupDao.addProjectGroup( group );
testProjectGroup2.setId( group.getId() );
}
else
{
testProjectGroup2.setId( 2 ); // from expected.xml, continuum-data-management
}
systemConfiguration = new SystemConfiguration();
systemConfiguration.setBaseUrl( "baseUrl" );
systemConfiguration.setBuildOutputDirectory( "buildOutputDirectory" );
systemConfiguration.setDefaultScheduleCronExpression( "* * * * *" );
systemConfiguration.setDefaultScheduleDescription( "Description" );
systemConfiguration.setDeploymentRepositoryDirectory( "deployment" );
systemConfiguration.setGuestAccountEnabled( false );
systemConfiguration.setInitialized( true );
systemConfiguration.setWorkingDirectory( "workingDirectory" );
if ( addToStore )
{
systemConfiguration = systemConfigurationDao.addSystemConfiguration( systemConfiguration );
}
}
@Override
protected void tearDown()
throws Exception
{
super.tearDown();
daoUtilsImpl.eraseDatabase();
daoUtilsImpl.closeStore();
}
protected void assertBuildDatabase()
throws ContinuumStoreException
{
assertProjectGroupEquals( defaultProjectGroup, projectGroupDao.getProjectGroup( defaultProjectGroup.getId() ) );
assertProjectGroupEquals( testProjectGroup2, projectGroupDao.getProjectGroup( testProjectGroup2.getId() ) );
assertProjectEquals( testProject1, projectDao.getProject( testProject1.getId() ) );
assertProjectEquals( testProject2, projectDao.getProject( testProject2.getId() ) );
assertScheduleEquals( testSchedule1, scheduleDao.getSchedule( testSchedule1.getId() ) );
assertScheduleEquals( testSchedule2, scheduleDao.getSchedule( testSchedule2.getId() ) );
assertScheduleEquals( testSchedule3, scheduleDao.getSchedule( testSchedule3.getId() ) );
Iterator<Installation> iterator = installationDao.getAllInstallations().iterator();
assertInstallationEquals( testInstallationJava13, iterator.next() );
assertInstallationEquals( testInstallationJava14, iterator.next() );
assertInstallationEquals( testInstallationMaven20a3, iterator.next() );
/*
// TODO!!! -- definitely need to test the changeset stuff since it uses modello.refid
ProjectNotifier testGroupNotifier1 = createTestNotifier( 1, true, false, true, "type1" );
ProjectNotifier testGroupNotifier2 = createTestNotifier( 2, false, true, false, "type2" );
ProjectNotifier testGroupNotifier3 = createTestNotifier( 3, true, false, false, "type3" );
ProjectNotifier testNotifier1 = createTestNotifier( 11, true, true, false, "type11" );
ProjectNotifier testNotifier2 = createTestNotifier( 12, false, false, true, "type12" );
ProjectNotifier testNotifier3 = createTestNotifier( 13, false, true, false, "type13" );
ProjectDeveloper testDeveloper1 = createTestDeveloper( 1, "email1", "name1", "scmId1" );
ProjectDeveloper testDeveloper2 = createTestDeveloper( 2, "email2", "name2", "scmId2" );
ProjectDeveloper testDeveloper3 = createTestDeveloper( 3, "email3", "name3", "scmId3" );
ProjectDependency testDependency1 = createTestDependency( "groupId1", "artifactId1", "version1" );
ProjectDependency testDependency2 = createTestDependency( "groupId2", "artifactId2", "version2" );
ProjectDependency testDependency3 = createTestDependency( "groupId3", "artifactId3", "version3" );
// TODO: simplify by deep copying the relationships in createTest... ?
long baseTime = System.currentTimeMillis();
testBuildResult1 = createTestBuildResult( 1, true, 1, 1, "error1", 1, baseTime, baseTime + 1000 );
BuildResult buildResult1 = createTestBuildResult( testBuildResult1 );
ScmResult scmResult = createTestScmResult( "commandOutput1", "providerMessage1", true, "1" );
buildResult1.setScmResult( scmResult );
ScmResult testBuildResult1ScmResult = createTestScmResult( scmResult, "1" );
testBuildResult1.setScmResult( testBuildResult1ScmResult );
testCheckoutResult1 = createTestScmResult( "commandOutputCO1", "providerMessageCO1", false, "CO1" );
ScmResult checkoutResult1 = createTestScmResult( testCheckoutResult1, "CO1" );
testProject1.setCheckoutResult( checkoutResult1 );
testProject1.addBuildResult( buildResult1 );
testBuildResult2 = createTestBuildResult( 2, false, 2, 2, "error2", 2, baseTime + 2000, baseTime + 3000 );
BuildResult buildResult2 = createTestBuildResult( testBuildResult2 );
testProject1.addBuildResult( buildResult2 );
testBuildResult3 = createTestBuildResult( 3, true, 3, 3, "error3", 3, baseTime + 4000, baseTime + 5000 );
BuildResult buildResult3 = createTestBuildResult( testBuildResult3 );
scmResult = createTestScmResult( "commandOutput3", "providerMessage3", true, "3" );
buildResult3.setScmResult( scmResult );
testBuildResult3.setScmResult( createTestScmResult( scmResult, "3" ) );
testProject2.addBuildResult( buildResult3 );
BuildDefinition testGroupBuildDefinition1 =
createTestBuildDefinition( "arguments1", "buildFile1", "goals1", profile1, schedule2 );
BuildDefinition testGroupBuildDefinition2 =
createTestBuildDefinition( "arguments2", "buildFile2", "goals2", profile1, schedule1 );
BuildDefinition testGroupBuildDefinition3 =
createTestBuildDefinition( "arguments3", "buildFile3", "goals3", profile2, schedule1 );
BuildDefinition testBuildDefinition1 =
createTestBuildDefinition( "arguments11", "buildFile11", "goals11", profile2, schedule1 );
BuildDefinition testBuildDefinition2 =
createTestBuildDefinition( "arguments12", "buildFile12", "goals12", profile2, schedule2 );
BuildDefinition testBuildDefinition3 =
createTestBuildDefinition( "arguments13", "buildFile13", "goals13", profile1, schedule2 );
ProjectGroup group = createTestProjectGroup( defaultProjectGroup );
Project project1 = createTestProject( testProject1 );
project1.addBuildResult( buildResult1 );
project1.addBuildResult( buildResult2 );
project1.setCheckoutResult( checkoutResult1 );
ProjectNotifier notifier1 = createTestNotifier( testNotifier1 );
project1.addNotifier( notifier1 );
testProject1.addNotifier( testNotifier1 );
BuildDefinition buildDefinition1 = createTestBuildDefinition( testBuildDefinition1 );
project1.addBuildDefinition( buildDefinition1 );
testProject1.addBuildDefinition( testBuildDefinition1 );
BuildDefinition buildDefinition2 = createTestBuildDefinition( testBuildDefinition2 );
project1.addBuildDefinition( buildDefinition2 );
testProject1.addBuildDefinition( testBuildDefinition2 );
ProjectDeveloper projectDeveloper1 = createTestDeveloper( testDeveloper1 );
project1.addDeveloper( projectDeveloper1 );
testProject1.addDeveloper( testDeveloper1 );
ProjectDependency projectDependency1 = createTestDependency( testDependency1 );
project1.addDependency( projectDependency1 );
testProject1.addDependency( testDependency1 );
ProjectDependency projectDependency2 = createTestDependency( testDependency2 );
project1.addDependency( projectDependency2 );
testProject1.addDependency( testDependency2 );
group.addProject( project1 );
defaultProjectGroup.addProject( project1 );
Project project2 = createTestProject( testProject2 );
project2.addBuildResult( buildResult3 );
ProjectNotifier notifier2 = createTestNotifier( testNotifier2 );
project2.addNotifier( notifier2 );
testProject2.addNotifier( testNotifier2 );
ProjectNotifier notifier3 = createTestNotifier( testNotifier3 );
project2.addNotifier( notifier3 );
testProject2.addNotifier( testNotifier3 );
BuildDefinition buildDefinition3 = createTestBuildDefinition( testBuildDefinition3 );
project2.addBuildDefinition( buildDefinition3 );
testProject2.addBuildDefinition( testBuildDefinition3 );
ProjectDeveloper projectDeveloper2 = createTestDeveloper( testDeveloper2 );
project2.addDeveloper( projectDeveloper2 );
testProject2.addDeveloper( testDeveloper2 );
ProjectDeveloper projectDeveloper3 = createTestDeveloper( testDeveloper3 );
project2.addDeveloper( projectDeveloper3 );
testProject2.addDeveloper( testDeveloper3 );
ProjectDependency projectDependency3 = createTestDependency( testDependency3 );
project2.addDependency( projectDependency3 );
testProject2.addDependency( testDependency3 );
group.addProject( project2 );
defaultProjectGroup.addProject( project2 );
ProjectNotifier groupNotifier1 = createTestNotifier( testGroupNotifier1 );
group.addNotifier( groupNotifier1 );
defaultProjectGroup.addNotifier( testGroupNotifier1 );
ProjectNotifier groupNotifier2 = createTestNotifier( testGroupNotifier2 );
group.addNotifier( groupNotifier2 );
defaultProjectGroup.addNotifier( testGroupNotifier2 );
BuildDefinition groupBuildDefinition1 = createTestBuildDefinition( testGroupBuildDefinition1 );
group.addBuildDefinition( groupBuildDefinition1 );
defaultProjectGroup.addBuildDefinition( testGroupBuildDefinition1 );
store.addProjectGroup( group );
defaultProjectGroup.setId( group.getId() );
testProject1.setId( project1.getId() );
testBuildResult1.setId( buildResult1.getId() );
testBuildResult2.setId( buildResult2.getId() );
testProject2.setId( project2.getId() );
testBuildResult3.setId( buildResult3.getId() );
group = createTestProjectGroup( testProjectGroup2 );
ProjectNotifier groupNotifier3 = createTestNotifier( testGroupNotifier3 );
group.addNotifier( groupNotifier3 );
testProjectGroup2.addNotifier( testGroupNotifier3 );
BuildDefinition groupBuildDefinition2 = createTestBuildDefinition( testGroupBuildDefinition2 );
group.addBuildDefinition( groupBuildDefinition2 );
testProjectGroup2.addBuildDefinition( testGroupBuildDefinition2 );
BuildDefinition groupBuildDefinition3 = createTestBuildDefinition( testGroupBuildDefinition3 );
group.addBuildDefinition( groupBuildDefinition3 );
testProjectGroup2.addBuildDefinition( testGroupBuildDefinition3 );
store.addProjectGroup( group );
testProjectGroup2.setId( group.getId() );
*/
assertSystemConfiguration( systemConfiguration, systemConfigurationDao.getSystemConfiguration() );
}
private void assertSystemConfiguration( SystemConfiguration expected, SystemConfiguration actual )
{
assertNotSame( expected, actual );
assertEquals( expected.getBaseUrl(), actual.getBaseUrl() );
assertEquals( expected.getBuildOutputDirectory(), actual.getBuildOutputDirectory() );
assertEquals( expected.getDefaultScheduleCronExpression(), actual.getDefaultScheduleCronExpression() );
assertEquals( expected.getDefaultScheduleDescription(), actual.getDefaultScheduleDescription() );
assertEquals( expected.getDeploymentRepositoryDirectory(), actual.getDeploymentRepositoryDirectory() );
assertEquals( expected.isGuestAccountEnabled(), actual.isGuestAccountEnabled() );
assertEquals( expected.isInitialized(), actual.isInitialized() );
assertEquals( expected.getWorkingDirectory(), actual.getWorkingDirectory() );
}
protected void assertEmpty()
throws ContinuumStoreException
{
assertEquals( 0, installationDao.getAllInstallations().size() );
assertEquals( 0, profileDao.getAllProfilesByName().size() );
assertEquals( 0, projectGroupDao.getAllProjectGroups().size() );
assertEquals( 0, projectDao.getAllProjectsByName().size() );
assertNull( systemConfigurationDao.getSystemConfiguration() );
}
protected static BuildDefinition createTestBuildDefinition( BuildDefinition buildDefinition )
{
return createTestBuildDefinition( buildDefinition.getArguments(), buildDefinition.getBuildFile(),
buildDefinition.getGoals(), buildDefinition.getProfile(), buildDefinition
.getSchedule(), buildDefinition.isDefaultForProject(), buildDefinition
.isBuildFresh() );
}
protected static BuildDefinition createTestBuildDefinition( String arguments, String buildFile, String goals,
Profile profile, Schedule schedule,
boolean defaultForProject, boolean buildFresh )
{
BuildDefinition definition = new BuildDefinition();
definition.setArguments( arguments );
definition.setBuildFile( buildFile );
definition.setGoals( goals );
definition.setProfile( profile );
definition.setSchedule( schedule );
definition.setDefaultForProject( defaultForProject );
definition.setBuildFresh( buildFresh );
return definition;
}
protected static ProjectNotifier createTestNotifier( ProjectNotifier notifier )
{
return createTestNotifier( notifier.getRecipientType(), notifier.isSendOnError(), notifier.isSendOnFailure(),
notifier.isSendOnSuccess(), notifier.getType() );
}
protected static ProjectNotifier createTestNotifier( int recipientType, boolean sendOnError, boolean sendOnFailure,
boolean sendOnSuccess, String type )
{
Map<String, String> configuration = new HashMap<String, String>();
configuration.put( "key1", "value1" );
configuration.put( "key2", "value2" );
ProjectNotifier notifier = new ProjectNotifier();
notifier.setConfiguration( configuration );
notifier.setRecipientType( recipientType );
notifier.setSendOnError( sendOnError );
notifier.setSendOnFailure( sendOnFailure );
notifier.setSendOnSuccess( sendOnSuccess );
notifier.setType( type );
return notifier;
}
private static ScmResult createTestScmResult( ScmResult scmResult, String base )
{
return createTestScmResult( scmResult.getCommandOutput(), scmResult.getProviderMessage(), scmResult.isSuccess(),
base );
}
private static ScmResult createTestScmResult( String commandOutput, String providerMessage, boolean success,
String base )
{
ScmResult scmResult = new ScmResult();
scmResult.setCommandOutput( commandOutput );
scmResult.setProviderMessage( providerMessage );
scmResult.setSuccess( success );
List<ChangeSet> changes = new ArrayList<ChangeSet>();
changes.add( createTestChangeSet( "author" + base + ".1", "comment" + base + ".1", base + ".1" ) );
changes.add( createTestChangeSet( "author" + base + ".2", "comment" + base + ".2", base + ".2" ) );
scmResult.setChanges( changes );
return scmResult;
}
private static ChangeSet createTestChangeSet( String author, String comment, String base )
{
ChangeSet changeSet = new ChangeSet();
changeSet.setAuthor( author );
changeSet.setComment( comment );
changeSet.setDate( System.currentTimeMillis() );
List<ChangeFile> files = new ArrayList<ChangeFile>();
files.add( createTestChangeFile( "name" + base + ".1", "rev" + base + ".1" ) );
files.add( createTestChangeFile( "name" + base + ".2", "rev" + base + ".2" ) );
files.add( createTestChangeFile( "name" + base + ".3", "rev" + base + ".3" ) );
changeSet.setFiles( files );
return changeSet;
}
private static ChangeFile createTestChangeFile( String name, String revision )
{
ChangeFile changeFile = new ChangeFile();
changeFile.setName( name );
changeFile.setRevision( revision );
return changeFile;
}
private static BuildResult createTestBuildResult( BuildResult buildResult )
{
return createTestBuildResult( buildResult.getTrigger(), buildResult.isSuccess(), buildResult.getState(),
buildResult.getExitCode(), buildResult.getError(), buildResult.getBuildNumber(),
buildResult.getStartTime(), buildResult.getEndTime() );
}
private static BuildResult createTestBuildResult( int trigger, boolean success, int state, int exitCode,
String error, int buildNumber, long startTime, long endTime )
{
BuildResult result = new BuildResult();
result.setBuildNumber( buildNumber );
result.setStartTime( startTime );
result.setEndTime( endTime );
result.setError( error );
result.setExitCode( exitCode );
result.setState( state );
result.setSuccess( success );
result.setTrigger( trigger );
return result;
}
protected static Installation createTestInstallation( String name, String type, String varName, String varValue )
{
Installation installation = new Installation();
installation.setName( name );
installation.setType( type );
installation.setVarName( varName );
installation.setVarValue( varValue );
return installation;
}
protected static Installation createTestInstallation( Installation installation )
{
return createTestInstallation( installation.getName(), installation.getType(), installation.getVarName(),
installation.getVarValue() );
}
protected static Schedule createTestSchedule( Schedule schedule )
{
return createTestSchedule( schedule.getName(), schedule.getDescription(), schedule.getDelay(), schedule
.getCronExpression(), schedule.isActive() );
}
protected static Schedule createTestSchedule( String name, String description, int delay, String cronExpression,
boolean active )
{
Schedule schedule = new Schedule();
schedule.setActive( active );
schedule.setCronExpression( cronExpression );
schedule.setDelay( delay );
schedule.setDescription( description );
schedule.setName( name );
return schedule;
}
protected static Profile createTestProfile( Profile profile )
{
return createTestProfile( profile.getName(), profile.getDescription(), profile.getScmMode(), profile
.isBuildWithoutChanges(), profile.isActive(), profile.getJdk(), profile.getBuilder(),
profile.getEnvironmentVariables() );
// createTestInstallation( profile.getJdk() ),
// createTestInstallation( profile.getBuilder() ) );
}
protected static Profile createTestProfile( String name, String description, int scmMode,
boolean buildWithoutChanges, boolean active, Installation jdk,
Installation builder )
{
return createTestProfile( name, description, scmMode, buildWithoutChanges, active, jdk, builder, null );
}
protected static Profile createTestProfile( String name, String description, int scmMode,
boolean buildWithoutChanges, boolean active, Installation jdk,
Installation builder, List<Installation> envVars )
{
Profile profile = new Profile();
profile.setActive( active );
profile.setBuildWithoutChanges( buildWithoutChanges );
profile.setScmMode( scmMode );
profile.setDescription( description );
profile.setName( name );
profile.setBuilder( builder );
profile.setJdk( jdk );
profile.setEnvironmentVariables( envVars );
return profile;
}
protected static ProjectGroup createTestProjectGroup( ProjectGroup group )
{
return createTestProjectGroup( group.getName(), group.getDescription(), group.getGroupId(),
group.getLocalRepository() );
}
protected static ProjectGroup createTestProjectGroup( String name, String description, String groupId,
LocalRepository repository )
{
ProjectGroup group = new ProjectGroup();
group.setName( name );
group.setDescription( description );
group.setGroupId( groupId );
group.setLocalRepository( repository );
return group;
}
protected static Project createTestProject( Project project )
{
return createTestProject( project.getArtifactId(), project.getBuildNumber(), project.getDescription(), project
.getGroupId(), project.getName(), project.getScmUrl(), project.getState(), project.getUrl(), project
.getVersion(), project.getWorkingDirectory() );
}
private static Project createTestProject( String artifactId, int buildNumber, String description, String groupId,
String name, String scmUrl, int state, String url, String version,
String workingDirectory )
{
Project project = new Project();
project.setArtifactId( artifactId );
project.setBuildNumber( buildNumber );
project.setDescription( description );
project.setGroupId( groupId );
project.setName( name );
project.setScmUrl( scmUrl );
project.setState( state );
project.setUrl( url );
project.setVersion( version );
project.setWorkingDirectory( workingDirectory );
return project;
}
protected static void assertProjectEquals( Project expectedProject, Project project )
{
assertEquals( "compare projects", expectedProject, project );
assertNotSame( expectedProject, project );
// aggressive compare, as equals is using the identity
assertEquals( "compare expectedProject - name", expectedProject.getName(), project.getName() );
assertEquals( "compare expectedProject - desc", expectedProject.getDescription(), project.getDescription() );
assertEquals( "compare expectedProject - groupId", expectedProject.getGroupId(), project.getGroupId() );
assertEquals( "compare expectedProject - artifactId", expectedProject.getArtifactId(),
project.getArtifactId() );
assertEquals( "compare expectedProject - buildNumber", expectedProject.getBuildNumber(), project
.getBuildNumber() );
assertEquals( "compare expectedProject - scmUrl", expectedProject.getScmUrl(), project.getScmUrl() );
assertEquals( "compare expectedProject - state", expectedProject.getState(), project.getState() );
assertEquals( "compare expectedProject - url", expectedProject.getUrl(), project.getUrl() );
assertEquals( "compare expectedProject - version", expectedProject.getVersion(), project.getVersion() );
assertEquals( "compare expectedProject - workingDirectory", expectedProject.getWorkingDirectory(), project
.getWorkingDirectory() );
}
protected static void assertProjectGroupEquals( ProjectGroup expectedGroup, ProjectGroup actualGroup )
{
assertEquals( "compare project groups", expectedGroup, actualGroup );
assertNotSame( expectedGroup, actualGroup );
// aggressive compare, as equals is using the identity
assertEquals( "compare project groups - name", expectedGroup.getName(), actualGroup.getName() );
assertEquals( "compare project groups - desc", expectedGroup.getDescription(), actualGroup.getDescription() );
assertEquals( "compare project groups - groupId", expectedGroup.getGroupId(), actualGroup.getGroupId() );
}
protected static void assertScheduleEquals( Schedule expectedSchedule, Schedule actualSchedule )
{
assertEquals( expectedSchedule, actualSchedule );
if ( expectedSchedule != null )
{
assertNotSame( expectedSchedule, actualSchedule );
assertEquals( "compare schedule - id", expectedSchedule.getId(), actualSchedule.getId() );
assertEquals( "compare schedule - name", expectedSchedule.getName(), actualSchedule.getName() );
assertEquals( "compare schedule - desc", expectedSchedule.getDescription(),
actualSchedule.getDescription() );
assertEquals( "compare schedule - delay", expectedSchedule.getDelay(), actualSchedule.getDelay() );
assertEquals( "compare schedule - cron", expectedSchedule.getCronExpression(), actualSchedule
.getCronExpression() );
assertEquals( "compare schedule - active", expectedSchedule.isActive(), actualSchedule.isActive() );
}
}
protected static void assertProfileEquals( Profile expectedProfile, Profile actualProfile )
{
assertEquals( expectedProfile, actualProfile );
if ( expectedProfile != null )
{
assertNotSame( expectedProfile, actualProfile );
assertEquals( "compare profile - name", expectedProfile.getName(), actualProfile.getName() );
assertEquals( "compare profile - desc", expectedProfile.getDescription(), actualProfile.getDescription() );
assertEquals( "compare profile - scmMode", expectedProfile.getScmMode(), actualProfile.getScmMode() );
assertEquals( "compare profile - build w/o changes", expectedProfile.isBuildWithoutChanges(), actualProfile
.isBuildWithoutChanges() );
assertEquals( "compare profile - active", expectedProfile.isActive(), actualProfile.isActive() );
}
}
protected static void assertInstallationEquals( Installation expected, Installation actual )
{
assertNotNull( actual );
assertEquals( "compare installation - name", expected.getName(), actual.getName() );
assertEquals( "compare installation - varName", expected.getVarName(), actual.getVarName() );
assertEquals( "compare installation - varValue", expected.getVarValue(), actual.getVarValue() );
}
protected static void assertBuildResultEquals( BuildResult expected, BuildResult actual )
{
assertEquals( "compare build result - build #", expected.getBuildNumber(), actual.getBuildNumber() );
assertEquals( "compare build result - end time", expected.getEndTime(), actual.getEndTime() );
assertEquals( "compare build result - error", expected.getError(), actual.getError() );
assertEquals( "compare build result - exit code", expected.getExitCode(), actual.getExitCode() );
assertEquals( "compare build result - start time", expected.getStartTime(), actual.getStartTime() );
assertEquals( "compare build result - state", expected.getState(), actual.getState() );
assertEquals( "compare build result - trigger", expected.getTrigger(), actual.getTrigger() );
}
protected static void assertScmResultEquals( ScmResult expected, ScmResult actual )
{
assertEquals( "compare SCM result - output", expected.getCommandOutput(), actual.getCommandOutput() );
assertEquals( "compare SCM result - message", expected.getProviderMessage(), actual.getProviderMessage() );
assertEquals( "compare SCM result - success", expected.isSuccess(), actual.isSuccess() );
assertEquals( "compare SCM result - changes size", actual.getChanges().size(), expected.getChanges().size() );
for ( int i = 0; i < actual.getChanges().size(); i++ )
{
assertChangeSetEquals( (ChangeSet) expected.getChanges().get( i ),
(ChangeSet) actual.getChanges().get( i ) );
}
}
private static void assertChangeSetEquals( ChangeSet expected, ChangeSet actual )
{
assertEquals( "compare change set result - author", expected.getAuthor(), actual.getAuthor() );
assertEquals( "compare change set result - comment", expected.getComment(), actual.getComment() );
//Remove this test, in some case we have a 1ms difference between two dates
//assertEquals( "compare change set result - date", changeSet.getDate(), retrievedChangeSet.getDate() );
assertEquals( "compare change set result - files size", expected.getFiles().size(), actual.getFiles().size() );
for ( int i = 0; i < actual.getFiles().size(); i++ )
{
assertChangeFileEquals( (ChangeFile) expected.getFiles().get( i ),
(ChangeFile) actual.getFiles().get( i ) );
}
}
private static void assertChangeFileEquals( ChangeFile expected, ChangeFile actual )
{
assertEquals( "compare change file result - name", expected.getName(), actual.getName() );
assertEquals( "compare change file result - revision", expected.getRevision(), actual.getRevision() );
}
protected static void assertNotifiersEqual( List<ProjectNotifier> expected, List<ProjectNotifier> actual )
{
for ( int i = 0; i < actual.size(); i++ )
{
assertNotifierEquals( expected.get( i ), actual.get( i ) );
}
}
protected static void assertNotifierEquals( ProjectNotifier expected, ProjectNotifier actual )
{
assertEquals( "compare notifier - recipient type", expected.getRecipientType(), actual.getRecipientType() );
assertEquals( "compare notifier - type", expected.getType(), actual.getType() );
assertEquals( "compare notifier - configuration", expected.getConfiguration(), actual.getConfiguration() );
assertEquals( "compare notifier - send on success", expected.isSendOnSuccess(), actual.isSendOnSuccess() );
assertEquals( "compare notifier - send on failure", expected.isSendOnFailure(), actual.isSendOnFailure() );
assertEquals( "compare notifier - send on error", expected.isSendOnError(), actual.isSendOnError() );
}
protected static void assertBuildDefinitionsEqual( List<BuildDefinition> expectedBuildDefinitions,
List<BuildDefinition> actualBuildDefinitions )
{
for ( int i = 0; i < expectedBuildDefinitions.size(); i++ )
{
BuildDefinition expectedBuildDefinition = expectedBuildDefinitions.get( i );
BuildDefinition actualBuildDefinition = actualBuildDefinitions.get( i );
assertBuildDefinitionEquals( expectedBuildDefinition, actualBuildDefinition );
assertScheduleEquals( expectedBuildDefinition.getSchedule(), actualBuildDefinition.getSchedule() );
assertProfileEquals( expectedBuildDefinition.getProfile(), actualBuildDefinition.getProfile() );
}
}
protected static void assertBuildDefinitionEquals( BuildDefinition expectedBuildDefinition,
BuildDefinition actualBuildDefinition )
{
assertEquals( "compare build definition - arguments", expectedBuildDefinition.getArguments(),
actualBuildDefinition.getArguments() );
assertEquals( "compare build definition - build file", expectedBuildDefinition.getBuildFile(),
actualBuildDefinition.getBuildFile() );
assertEquals( "compare build definition - goals", expectedBuildDefinition.getGoals(), actualBuildDefinition
.getGoals() );
assertEquals( "compare build definition - build fresh", expectedBuildDefinition.isBuildFresh(),
actualBuildDefinition.isBuildFresh() );
assertEquals( "compare build definition - defaultForProject", expectedBuildDefinition.isDefaultForProject(),
actualBuildDefinition.isDefaultForProject() );
}
protected static void assertDevelopersEqual( List<ProjectDeveloper> expectedDevelopers,
List<ProjectDeveloper> actualDevelopers )
{
for ( int i = 0; i < actualDevelopers.size(); i++ )
{
assertDeveloperEquals( expectedDevelopers.get( i ), actualDevelopers
.get( i ) );
}
}
protected static void assertDeveloperEquals( ProjectDeveloper expectedDeveloper, ProjectDeveloper actualDeveloper )
{
assertEquals( "compare developer - name", expectedDeveloper.getName(), actualDeveloper.getName() );
assertEquals( "compare developer - email", expectedDeveloper.getEmail(), actualDeveloper.getEmail() );
assertEquals( "compare developer - scmId", expectedDeveloper.getScmId(), actualDeveloper.getScmId() );
assertEquals( "compare developer - continuumId", expectedDeveloper.getContinuumId(), actualDeveloper
.getContinuumId() );
}
protected static void assertDependenciesEqual( List<ProjectDependency> expectedDependencies,
List<ProjectDependency> actualDependencies )
{
for ( int i = 0; i < actualDependencies.size(); i++ )
{
assertDependencyEquals( expectedDependencies.get( i ), actualDependencies.get( i ) );
}
}
protected static void assertDependencyEquals( ProjectDependency expectedDependency,
ProjectDependency actualDependency )
{
assertEquals( "compare dependency - groupId", expectedDependency.getGroupId(), actualDependency.getGroupId() );
assertEquals( "compare dependency - artifactId", expectedDependency.getArtifactId(), actualDependency
.getArtifactId() );
assertEquals( "compare dependency - version", expectedDependency.getVersion(), actualDependency.getVersion() );
}
protected static ProjectDependency createTestDependency( ProjectDependency dependency )
{
return createTestDependency( dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() );
}
protected static ProjectDeveloper createTestDeveloper( ProjectDeveloper developer )
{
return createTestDeveloper( developer.getContinuumId(), developer.getEmail(), developer.getName(), developer
.getScmId() );
}
protected static ProjectDependency createTestDependency( String groupId, String artifactId, String version )
{
ProjectDependency dependency = new ProjectDependency();
dependency.setArtifactId( artifactId );
dependency.setGroupId( groupId );
dependency.setVersion( version );
return dependency;
}
protected static ProjectDeveloper createTestDeveloper( int continuumId, String email, String name, String scmId )
{
ProjectDeveloper developer = new ProjectDeveloper();
developer.setContinuumId( continuumId );
developer.setEmail( email );
developer.setName( name );
developer.setScmId( scmId );
return developer;
}
protected static LocalRepository createTestLocalRepository( LocalRepository repository )
{
return createTestLocalRepository( repository.getName(), repository.getLocation(), repository.getLayout() );
}
protected static LocalRepository createTestLocalRepository( String name, String location, String layout )
{
LocalRepository repository = new LocalRepository();
repository.setName( name );
repository.setLocation( location );
repository.setLayout( layout );
return repository;
}
protected static RepositoryPurgeConfiguration createTestRepositoryPurgeConfiguration(
RepositoryPurgeConfiguration purgeConfig )
{
return createTestRepositoryPurgeConfiguration( purgeConfig.isDeleteAll(), purgeConfig.getRetentionCount(),
purgeConfig.getDaysOlder(),
purgeConfig.isDeleteReleasedSnapshots(),
purgeConfig.getSchedule(), purgeConfig.isEnabled(),
purgeConfig.getRepository() );
}
protected static RepositoryPurgeConfiguration createTestRepositoryPurgeConfiguration( boolean deleteAllArtifacts,
int retentionCount,
int daysOlder,
boolean deleteReleasedSnapshots,
Schedule schedule,
boolean enabled,
LocalRepository repository )
{
RepositoryPurgeConfiguration purgeConfig = new RepositoryPurgeConfiguration();
purgeConfig.setDeleteAll( deleteAllArtifacts );
purgeConfig.setEnabled( enabled );
purgeConfig.setRetentionCount( retentionCount );
purgeConfig.setDaysOlder( daysOlder );
purgeConfig.setDeleteReleasedSnapshots( deleteReleasedSnapshots );
purgeConfig.setSchedule( schedule );
purgeConfig.setRepository( repository );
return purgeConfig;
}
protected static DirectoryPurgeConfiguration createTestDirectoryPurgeConfiguration(
DirectoryPurgeConfiguration purgeConfig )
{
return createTestDirectoryPurgeConfiguration( purgeConfig.getLocation(), purgeConfig.getDirectoryType(),
purgeConfig.isDeleteAll(), purgeConfig.getRetentionCount(),
purgeConfig.getDaysOlder(), purgeConfig.getSchedule(),
purgeConfig.isEnabled() );
}
protected static DirectoryPurgeConfiguration createTestDirectoryPurgeConfiguration( String location,
String directoryType,
boolean deleteAllDirectories,
int retentionCount,
int daysOlder,
Schedule schedule,
boolean enabled )
{
DirectoryPurgeConfiguration purgeConfig = new DirectoryPurgeConfiguration();
purgeConfig.setDaysOlder( daysOlder );
purgeConfig.setDeleteAll( deleteAllDirectories );
purgeConfig.setDirectoryType( directoryType );
purgeConfig.setEnabled( enabled );
purgeConfig.setLocation( location );
purgeConfig.setRetentionCount( retentionCount );
purgeConfig.setSchedule( schedule );
return purgeConfig;
}
protected static void assertLocalRepositoryEquals( LocalRepository expectedRepository,
LocalRepository actualRepository )
{
assertEquals( expectedRepository, actualRepository );
if ( expectedRepository != null )
{
assertNotSame( expectedRepository, actualRepository );
assertEquals( "compare local repository - id", expectedRepository.getId(), actualRepository.getId() );
assertEquals( "compare local repository - name", expectedRepository.getName(), actualRepository.getName() );
assertEquals( "compare local repository - location", expectedRepository.getLocation(),
actualRepository.getLocation() );
assertEquals( "compare local repository - layout", expectedRepository.getLayout(),
actualRepository.getLayout() );
}
}
protected static void assertRepositoryPurgeConfigurationEquals( RepositoryPurgeConfiguration expectedConfig,
RepositoryPurgeConfiguration actualConfig )
{
assertEquals( "compare repository purge configuration - id", expectedConfig.getId(), actualConfig.getId() );
assertEquals( "compare repository purge configuration - deleteAll", expectedConfig.isDeleteAll(),
actualConfig.isDeleteAll() );
assertEquals( "compare repository purge configuration - retentionCount", expectedConfig.getRetentionCount(),
actualConfig.getRetentionCount() );
assertEquals( "compare repository purge configuration - daysOlder", expectedConfig.getDaysOlder(),
actualConfig.getDaysOlder() );
assertEquals( "compare repository purge configuration - deleteReleasedSnapshots",
expectedConfig.isDeleteReleasedSnapshots(), actualConfig.isDeleteReleasedSnapshots() );
assertEquals( "compare repository purge configuration - enabled", expectedConfig.isEnabled(),
actualConfig.isEnabled() );
}
protected static void assertDirectoryPurgeConfigurationEquals( DirectoryPurgeConfiguration expectedConfig,
DirectoryPurgeConfiguration actualConfig )
{
assertEquals( "compare directory purge configuration - id", expectedConfig.getId(), actualConfig.getId() );
assertEquals( "compare directory purge configuration - location", expectedConfig.getLocation(),
actualConfig.getLocation() );
assertEquals( "compare directory purge configuration - directoryType", expectedConfig.getDirectoryType(),
actualConfig.getDirectoryType() );
assertEquals( "compare directory purge configuration - deleteAll", expectedConfig.isDeleteAll(),
actualConfig.isDeleteAll() );
assertEquals( "compare directory purge configuration - retentionCount", expectedConfig.getRetentionCount(),
actualConfig.getRetentionCount() );
assertEquals( "compare directory purge configuration - daysOlder", expectedConfig.getDaysOlder(),
actualConfig.getDaysOlder() );
assertEquals( "compare directory purge configuration - enabled", expectedConfig.isEnabled(),
actualConfig.isEnabled() );
}
protected static ContinuumReleaseResult createTestContinuumReleaseResult( ProjectGroup group, Project project,
String releaseGoal, int resultCode,
long startTime, long endTime )
{
ContinuumReleaseResult releaseResult = new ContinuumReleaseResult();
releaseResult.setProjectGroup( group );
releaseResult.setProject( project );
releaseResult.setReleaseGoal( releaseGoal );
releaseResult.setResultCode( resultCode );
releaseResult.setStartTime( startTime );
releaseResult.setEndTime( endTime );
return releaseResult;
}
protected static void assertReleaseResultEquals( ContinuumReleaseResult expectedConfig,
ContinuumReleaseResult actualConfig )
{
assertEquals( "compare continuum release result - id", expectedConfig.getId(), actualConfig.getId() );
assertEquals( "compare continuum release result - releaseGoal", expectedConfig.getReleaseGoal(),
actualConfig.getReleaseGoal() );
assertEquals( "compare continuum release result - resultCode", expectedConfig.getResultCode(),
actualConfig.getResultCode() );
assertEquals( "compare continuum release result - startTime", expectedConfig.getStartTime(),
actualConfig.getStartTime() );
assertEquals( "compare continuum release result - endTime", expectedConfig.getEndTime(),
actualConfig.getEndTime() );
}
/**
* Setup JDO Factory
*
* @todo push down to a Jdo specific test
*/
protected void createStore()
throws Exception
{
DefaultConfigurableJdoFactory jdoFactory =
(DefaultConfigurableJdoFactory) lookup( JdoFactory.ROLE, "continuum" );
jdoFactory.setUrl( "jdbc:hsqldb:mem:" + getName() );
daoUtilsImpl = (DaoUtils) lookup( DaoUtils.class.getName() );
}
}