You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by jz...@apache.org on 2010/04/02 13:48:28 UTC
svn commit: r930249 - in /continuum/trunk/continuum-webapp-test/src/test:
resources/ testng/org/apache/continuum/web/test/
testng/org/apache/continuum/web/test/parent/
Author: jzurbano
Date: Fri Apr 2 11:48:28 2010
New Revision: 930249
URL: http://svn.apache.org/viewvc?rev=930249&view=rev
Log:
* added test for release prepare with no build agent in selected build environment
* added build environment selection in release prepare and release perform with parameters tests
* used waitForCondition() so page will have more time to load
* added check if browser is IE in assertRelease() and use the waitForPageToLoad instead of waitForCondition
Modified:
continuum/trunk/continuum-webapp-test/src/test/resources/testng.properties
continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/ReleaseTest.java
continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractContinuumTest.java
continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractReleaseTest.java
Modified: continuum/trunk/continuum-webapp-test/src/test/resources/testng.properties
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp-test/src/test/resources/testng.properties?rev=930249&r1=930248&r2=930249&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp-test/src/test/resources/testng.properties (original)
+++ continuum/trunk/continuum-webapp-test/src/test/resources/testng.properties Fri Apr 2 11:48:28 2010
@@ -62,6 +62,21 @@ M2_PROJ_WITH_TAG_POM_URL=http://localhos
M2_PROJ_WITH_TAG_PROJ_GRP_NAME=Continuum 2437 Example Project
M2_PROJ_WITH_TAG_PROJ_GRP_ID=org.apache.continuum.examples
+# Properties for testReleasePrepareProjectWithNoBuildagentInBuildEnvironment
+M2_RELEASE_POM_URL=http://localhost:9595/example-projects/simple-example/pom.xml
+M2_RELEASE_PROJECT_NAME=Continuum Simple Example Project
+M2_RELEASE_GRP_NAME=Simple Example Project Release
+M2_RELEASE_GRP_ID=org.apache.continuum.examples.simple.release
+M2_RELEASE_GRP_DESCRIPTION=Release test project
+M2_RELEASE_GRP_SCM_ROOT_URL=scm:svn:${svn.base.url}/trunk/simple-example
+M2_RELEASE_TAG=simple-example-1.0-test
+M2_RELEASE_RELEASE_VERSION=1.0-test
+M2_RELEASE_DEVELOPMENT_VERSION=1.0-SNAPSHOT
+M2_RELEASE_TAGBASE_URL=http://localhost:9595/example-projects/tags
+M2_RELEASE_BUILD_ENV=RELEASE_BUILD_ENV
+M2_RELEASE_AGENT_GROUP=RELEASE_BUILDAGENT_GROUP
+M2_RELEASE_NO_AGENT_MESSAGE=Unable to prepare release because build agent
+
########################
# mavenOneProject group
########################
Modified: continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/ReleaseTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/ReleaseTest.java?rev=930249&r1=930248&r2=930249&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/ReleaseTest.java (original)
+++ continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/ReleaseTest.java Fri Apr 2 11:48:28 2010
@@ -46,11 +46,15 @@ public class ReleaseTest
try
{
enableDistributedBuilds();
+
+ String M2_PROJECT_BUILD_ENV = getProperty( "M2_RELEASE_BUILD_ENV" );
+ createBuildEnvAndBuildagentGroup();
+
showProjectGroup( M2_PROJ_GRP_NAME, M2_PROJ_GRP_ID, "" );
clickButtonWithValue( "Release" );
assertReleaseSuccess();
releasePrepareProject( M2_PROJ_USERNAME, M2_PROJ_PASSWORD, M2_PROJ_TAGBASE, M2_PROJ_TAG,
- M2_PROJ_RELEASE_VERSION, M2_PROJ_DEVELOPMENT_VERSION, false );
+ M2_PROJ_RELEASE_VERSION, M2_PROJ_DEVELOPMENT_VERSION, M2_PROJECT_BUILD_ENV, false );
assertPreparedReleasesFileCreated();
}
finally
@@ -58,8 +62,56 @@ public class ReleaseTest
disableDistributedBuilds();
}
}
-
+
+ /*
+ * Test release prepare with no build agent configured in the selected build environment.
+ */
@Test( dependsOnMethods = { "testReleasePrepareProjectWithInvalidUsernamePasswordInDistributedBuilds" } )
+ public void testReleasePrepareProjectWithNoBuildagentInBuildEnvironment()
+ throws Exception
+ {
+ String M2_PROJECT_POM_URL = getProperty( "M2_RELEASE_POM_URL" );
+ String M2_PROJECT_NAME = getProperty( "M2_RELEASE_PROJECT_NAME" );
+ String M2_PROJECT_GROUP_NAME = getProperty( "M2_RELEASE_GRP_NAME" );
+ String M2_PROJECT_GROUP_ID = getProperty( "M2_RELEASE_GRP_ID" );
+ String M2_PROJECT_DESCRIPTION = getProperty( "M2_RELEASE_GRP_DESCRIPTION" );
+ String M2_PROJECT_TAGBASE = getProperty( "M2_RELEASE_TAGBASE_URL" );
+ String M2_PROJECT_TAG = getProperty( "M2_RELEASE_TAG" );
+ String M2_PROJECT_RELEASE_VERSION = getProperty( "M2_RELEASE_RELEASE_VERSION" );
+ String M2_PROJECT_DEVELOPMENT_VERSION = getProperty( "M2_RELEASE_DEVELOPMENT_VERSION" );
+ String ERROR_TEXT = getProperty( "M2_RELEASE_NO_AGENT_MESSAGE" );
+
+ addProjectGroup( M2_PROJECT_GROUP_NAME, M2_PROJECT_GROUP_ID, M2_PROJECT_DESCRIPTION, true );
+ addMavenTwoProject( M2_PROJECT_POM_URL, "", "", M2_PROJECT_GROUP_NAME, true );
+
+ init();
+
+ try
+ {
+ enableDistributedBuilds();
+
+ String M2_PROJECT_BUILD_ENV = getProperty( "M2_RELEASE_BUILD_ENV" );
+ createBuildEnvAndBuildagentGroup();
+ detachBuildagentFromGroup();
+
+ buildProjectGroup( M2_PROJECT_GROUP_NAME, M2_PROJECT_GROUP_ID, M2_PROJECT_DESCRIPTION, M2_PROJECT_NAME );
+
+ clickButtonWithValue( "Release" );
+ assertReleaseSuccess();
+ releasePrepareProjectWithBuildEnvironmentSelection( "", "", M2_PROJECT_TAGBASE, M2_PROJECT_TAG, M2_PROJECT_RELEASE_VERSION,
+ M2_PROJECT_DEVELOPMENT_VERSION, M2_PROJECT_BUILD_ENV );
+
+ assertTextPresent( "Release Error" );
+ assertTextPresent( ERROR_TEXT );
+ }
+ finally
+ {
+ attachBuildagentInGroup();
+ disableDistributedBuilds();
+ }
+ }
+
+ @Test( dependsOnMethods = { "testReleasePrepareProjectWithNoBuildagentInBuildEnvironment" } )
public void testReleasePerformUsingProvideParamtersWithDistributedBuilds()
throws Exception
{
@@ -77,11 +129,15 @@ public class ReleaseTest
try
{
enableDistributedBuilds();
+
+ String M2_PROJECT_BUILD_ENV = getProperty( "M2_RELEASE_BUILD_ENV" );
+ createBuildEnvAndBuildagentGroup();
+
showProjectGroup( M2_PROJ_GRP_NAME, M2_PROJ_GRP_ID, "" );
clickButtonWithValue( "Release" );
assertReleaseSuccess();
releasePerformProjectWithProvideParameters( M2_PROJ_USERNAME, M2_PROJ_PASSWORD, M2_PROJ_TAGBASE, M2_PROJ_TAG,
- M2_PROJ_SCM_URL, false );
+ M2_PROJ_SCM_URL, M2_PROJECT_BUILD_ENV, false );
assertPreparedReleasesFileCreated();
removeProjectGroup( M2_PROJ_GRP_NAME );
@@ -102,4 +158,70 @@ public class ReleaseTest
file.delete();
}
}
+
+ private void createBuildEnvAndBuildagentGroup()
+ throws Exception
+ {
+ String M2_PROJECT_BUILD_ENV = getProperty( "M2_RELEASE_BUILD_ENV" );
+ String M2_PROJECT_AGENT_GROUP = getProperty( "M2_RELEASE_AGENT_GROUP" );
+
+ // add build agent group no agents
+ goToBuildAgentPage();
+ if ( !isTextPresent( M2_PROJECT_AGENT_GROUP ) )
+ {
+ clickAndWait( "//input[@id='editBuildAgentGroup_0']" );
+ setFieldValue( "saveBuildAgentGroup_buildAgentGroup_name", M2_PROJECT_AGENT_GROUP );
+ clickButtonWithValue( "Save" );
+ }
+
+ // add build environment with build agent group
+ clickLinkWithText( "Build Environments" );
+ if ( !isTextPresent( M2_PROJECT_BUILD_ENV ) )
+ {
+ clickAndWait( "//input[@id='addBuildEnv_0']" );
+ setFieldValue( "saveBuildEnv_profile_name", M2_PROJECT_BUILD_ENV );
+ clickButtonWithValue( "Save" );
+ selectValue( "profile.buildAgentGroup", M2_PROJECT_AGENT_GROUP );
+ clickButtonWithValue( "Save" );
+ }
+
+ // attach build agent in build agent group created
+ attachBuildagentInGroup();
+ }
+
+ private void attachBuildagentInGroup()
+ throws Exception
+ {
+ String M2_PROJECT_AGENT_GROUP = getProperty( "M2_RELEASE_AGENT_GROUP" );
+ String buildAgent = getProperty( "BUILD_AGENT_NAME2" );
+
+ clickLinkWithText( "Build Agents" );
+ String xPath = "//preceding::td[text()='" + M2_PROJECT_AGENT_GROUP + "']//following::img[@alt='Edit']";
+ clickLinkWithXPath( xPath );
+
+ if ( isElementPresent( "xpath=//select[@id='saveBuildAgentGroup_buildAgentIds']/option[@value='" + buildAgent + "']" ) )
+ {
+ selectValue( "buildAgentIds", buildAgent );
+ clickLinkWithXPath( "//input[@value='->']", false );
+ submit();
+ }
+ }
+
+ private void detachBuildagentFromGroup()
+ throws Exception
+ {
+ String M2_PROJECT_AGENT_GROUP = getProperty( "M2_RELEASE_AGENT_GROUP" );
+ String buildAgent = getProperty( "BUILD_AGENT_NAME2" );
+
+ clickLinkWithText( "Build Agents" );
+ String xPath = "//preceding::td[text()='" + M2_PROJECT_AGENT_GROUP + "']//following::img[@alt='Edit']";
+ clickLinkWithXPath( xPath );
+
+ if ( isElementPresent( "xpath=//select[@id='saveBuildAgentGroup_selectedBuildAgentIds']/option[@value='" + buildAgent + "']" ) )
+ {
+ selectValue( "selectedBuildAgentIds", buildAgent );
+ clickLinkWithXPath( "//input[@value='<-']", false );
+ submit();
+ }
+ }
}
Modified: continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractContinuumTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractContinuumTest.java?rev=930249&r1=930248&r2=930249&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractContinuumTest.java (original)
+++ continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractContinuumTest.java Fri Apr 2 11:48:28 2010
@@ -833,7 +833,7 @@ public abstract class AbstractContinuumT
else
{
String condition = "selenium.browserbot.getCurrentWindow().document.title.replace(/^\\s*/, \"\").replace(/\\s*$/, \"\") != '' && selenium.browserbot.getCurrentWindow().document.getElementById('footer') != null";
- getSelenium().waitForCondition( condition, maxWaitTimeInMs );
+ waitForCondition( condition );
}
Assert.assertEquals( getTitle(), title );
Modified: continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractReleaseTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractReleaseTest.java?rev=930249&r1=930248&r2=930249&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractReleaseTest.java (original)
+++ continuum/trunk/continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractReleaseTest.java Fri Apr 2 11:48:28 2010
@@ -29,7 +29,7 @@ import org.testng.Assert;
public abstract class AbstractReleaseTest
extends AbstractContinuumTest
{
- public void releasePrepareProject( String username, String password, String tagBase, String tag, String releaseVersion, String developmentVersion, boolean success )
+ public void releasePrepareProject( String username, String password, String tagBase, String tag, String releaseVersion, String developmentVersion, String buildEnv, boolean success )
throws Exception
{
goToReleasePreparePage();
@@ -38,6 +38,7 @@ public abstract class AbstractReleaseTes
setFieldValue( "scmTag", tag );
setFieldValue( "scmTagBase", tagBase );
setFieldValue( "prepareGoals", "clean" );
+ selectValue( "profileId", buildEnv );
setFieldValue( "relVersions", releaseVersion );
setFieldValue( "devVersions", developmentVersion );
submit();
@@ -45,7 +46,7 @@ public abstract class AbstractReleaseTes
assertRelease( success );
}
- public void releasePerformProjectWithProvideParameters( String username, String password, String tagBase, String tag, String scmUrl, boolean success )
+ public void releasePerformProjectWithProvideParameters( String username, String password, String tagBase, String tag, String scmUrl, String buildEnv, boolean success )
throws Exception
{
goToReleasePerformProvideParametersPage();
@@ -55,10 +56,27 @@ public abstract class AbstractReleaseTes
setFieldValue( "scmTag", tag );
setFieldValue( "scmTagBase", tagBase );
setFieldValue( "goals", "clean deploy" );
+ selectValue( "profileId", buildEnv );
submit();
assertRelease( success );
}
+
+ public void releasePrepareProjectWithBuildEnvironmentSelection( String username, String password, String tagBase, String tag,
+ String releaseVersion, String developmentVersion, String buildEnv )
+ throws Exception
+ {
+ goToReleasePreparePage();
+ setFieldValue( "scmUsername", username );
+ setFieldValue( "scmPassword", password );
+ setFieldValue( "scmTag", tag );
+ setFieldValue( "scmTagBase", tagBase );
+ setFieldValue( "prepareGoals", "clean" );
+ selectValue( "profileId", buildEnv );
+ setFieldValue( "relVersions", releaseVersion );
+ setFieldValue( "devVersions", developmentVersion );
+ submit();
+ }
public void goToReleasePreparePage()
{
@@ -111,10 +129,28 @@ public abstract class AbstractReleaseTes
public void assertRelease( boolean success )
throws Exception
{
+ String doneButtonLocator = "//input[@id='releaseCleanup_0']";
+ String errorTextLocator = "//h3[text()='Release Error']";
+
// condition for release is complete; "Done" button or "Release Error" in page is present
- String condition = "( selenium.browserbot.getCurrentWindow().document.getElementById( 'releaseCleanup_0' ) != null )";
-
- waitForCondition( condition );
+ if ( browser.equals( "*iexplore" ) )
+ {
+ int currentIt = 0;
+ int maxIt = Integer.valueOf( getProperty( "WAIT_TRIES" ) );
+ String pageLoadTimeInMs = getProperty( "PAGE_LOAD_TIME_IN_MS" );
+
+ while ( ( isElementPresent( doneButtonLocator ) || isElementPresent( errorTextLocator ) ) && currentIt < maxIt )
+ {
+ getSelenium().waitForPageToLoad( pageLoadTimeInMs );
+ currentIt++;
+ }
+ }
+ else
+ {
+ String condition = "( selenium.isElementPresent(\"" + doneButtonLocator + "\") || " +
+ "selenium.isElementPresent(\"" + errorTextLocator + "\") )";
+ waitForCondition( condition );
+ }
assertButtonWithValuePresent( "Rollback changes" );