Index: continuum-webapp-test/src/test/testng/config/testng.xml
===================================================================
--- continuum-webapp-test/src/test/testng/config/testng.xml (revision 785944)
+++ continuum-webapp-test/src/test/testng/config/testng.xml (working copy)
@@ -55,6 +55,7 @@
+
Index: continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/BuildAgentsTest.java
===================================================================
--- continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/BuildAgentsTest.java (revision 0)
+++ continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/BuildAgentsTest.java (revision 0)
@@ -0,0 +1,153 @@
+package org.apache.continuum.web.test;
+
+/*
+ * 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.web.test.parent.AbstractBuildQueueTest;
+import org.testng.annotations.Test;
+import org.apache.continuum.web.test.parent.AbstractBuildAgentsTest;
+
+
+@Test( groups = { "agent" }, dependsOnMethods = { "testDeleteBuildDefinitionTemplate" } )
+ public class BuildAgentsTest
+ extends AbstractBuildAgentsTest
+ {
+
+ public void testAddBuildAgent()
+ {
+ String BUILD_AGENT_NAME = getProperty( "BUILD_AGENT_NAME" );
+ String BUILD_AGENT_DESCRIPTION = getProperty( "BUILD_AGENT_DESCRIPTION" );
+ String BUILD_AGENT_NAME2 = getProperty( "BUILD_AGENT_NAME2" );
+ String BUILD_AGENT_DESCRIPTION2 = getProperty( "BUILD_AGENT_DESCRIPTION2" );
+ String BUILD_AGENT_NAME3 = getProperty( "BUILD_AGENT_NAME3" );
+ String BUILD_AGENT_DESCRIPTION3 = getProperty( "BUILD_AGENT_DESCRIPTION3" );
+
+ enableDistributedBuilds();
+ goToAddBuildAgent();
+ addBuildAgent( BUILD_AGENT_NAME, BUILD_AGENT_DESCRIPTION, true ) ;
+ goToAddBuildAgent();
+ addBuildAgent( BUILD_AGENT_NAME2, BUILD_AGENT_DESCRIPTION2, true ) ;
+ goToAddBuildAgent();
+ addBuildAgent( BUILD_AGENT_NAME3, BUILD_AGENT_DESCRIPTION3, true ) ;
+ }
+
+ @Test( dependsOnMethods = { "testEditBuildAgent" } )
+ public void testAddAnExistingBuildAgent()
+ {
+ String BUILD_AGENT_NAME = getProperty( "BUILD_AGENT_NAME" );
+ String BUILD_AGENT_DESCRIPTION = getProperty( "BUILD_AGENT_DESCRIPTION" );
+
+ goToAddBuildAgent();
+ addBuildAgent( BUILD_AGENT_NAME, BUILD_AGENT_DESCRIPTION, false ) ;
+ assertTextPresent( "Build agent already exists" );
+ }
+
+ @Test( dependsOnMethods = { "testAddBuildAgent" } )
+ public void testEditBuildAgent()
+
+ {
+ String BUILD_AGENT_NAME = getProperty( "BUILD_AGENT_NAME" );
+ String BUILD_AGENT_DESCRIPTION = getProperty( "BUILD_AGENT_DESCRIPTION" );
+ String new_agentDescription = "new_agentDescription";
+
+ goToEditBuildAgent( BUILD_AGENT_NAME, BUILD_AGENT_DESCRIPTION);
+ addEditBuildAgent( BUILD_AGENT_NAME, new_agentDescription );
+ goToEditBuildAgent( BUILD_AGENT_NAME, new_agentDescription);
+ addEditBuildAgent( BUILD_AGENT_NAME, BUILD_AGENT_DESCRIPTION );
+
+ }
+
+ @Test( dependsOnMethods = { "testAddAnExistingBuildAgent" } )
+ public void testDeleteBuildAgent()
+
+ {
+ goToBuildAgentPage();
+ String BUILD_AGENT_NAME3 = getProperty( "BUILD_AGENT_NAME3" );
+ removeBuildAgent( BUILD_AGENT_NAME3 );
+ assertTextNotPresent( BUILD_AGENT_NAME3 );
+ }
+
+ @Test( dependsOnMethods = { "testDeleteBuildAgent" } )
+ public void testAddEmptyBuildAgent()
+ {
+ String BUILD_AGENT_DESCRIPTION = getProperty( "BUILD_AGENT_DESCRIPTION" );
+
+ goToAddBuildAgent();
+ addBuildAgent( "", BUILD_AGENT_DESCRIPTION, false ) ;
+ assertTextPresent( "Build agent url is required." );
+ }
+
+//TESTS FOR BUILD AGENT GROUPS
+
+ @Test( dependsOnMethods = { "testAddBuildAgent" } )
+ public void testAddBuildAgentGroup()
+ throws Exception
+ {
+ String BUILD_AGENT_GROUPNAME = getProperty( "BUILD_AGENT_GROUPNAME" );
+
+ goToAddBuildAgentGroup();
+ addEditBuildAgentGroup( BUILD_AGENT_GROUPNAME, new String[] { "Agent_url_name", "Second_Agent" }, new String[] {}, true );
+
+ }
+
+ @Test( dependsOnMethods = { "testAddBuildAgentGroup" } )
+ public void testEditBuildAgentGroup()
+ throws Exception
+ {
+ String BUILD_AGENT_GROUPNAME = getProperty( "BUILD_AGENT_GROUPNAME" );
+ String newName = "new_agentgroupname";
+ goToEditBuildAgentGroup( BUILD_AGENT_GROUPNAME, new String[] { "Agent_url_name", "Second_Agent" } );
+ addEditBuildAgentGroup( newName, new String[] {},
+ new String[] { "Second_Agent" }, true );
+ goToEditBuildAgentGroup( newName, new String[] { "Agent_url_name" } );
+ addEditBuildAgentGroup( BUILD_AGENT_GROUPNAME, new String[] { "Second_Agent" },
+ new String[] {}, true );
+ }
+
+ @Test( dependsOnMethods = { "testEditBuildAgentGroup" } )
+ public void testAddAnExistingBuildAgentGroup()
+ throws Exception
+ {
+ String BUILD_AGENT_GROUPNAME = getProperty( "BUILD_AGENT_GROUPNAME" );
+
+ goToAddBuildAgentGroup();
+ addEditBuildAgentGroup( BUILD_AGENT_GROUPNAME, new String[] { "Agent_url_name", "Second_Agent" }, new String[] {}, false );
+ assertTextPresent( "Build agent group already exists." );
+
+ }
+
+ @Test( dependsOnMethods = { "testAddAnExistingBuildAgentGroup" } )
+ public void testAddEmptyBuildAgentGroupName()
+ throws Exception
+ {
+
+ goToAddBuildAgentGroup();
+ addEditBuildAgentGroup( "", new String[] {}, new String[] {}, false );
+ assertTextPresent( "Build agent group name required." );
+ }
+
+ @Test( dependsOnMethods = { "testAddEmptyBuildAgentGroupName" } )
+ public void testDeleteBuildAgentGroup()
+ {
+ String BUILD_AGENT_GROUPNAME = getProperty( "BUILD_AGENT_GROUPNAME" );
+ removeBuildAgentGroup( BUILD_AGENT_GROUPNAME );
+ }
+
+
+}
Index: continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractBuildAgentsTest.java
===================================================================
--- continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractBuildAgentsTest.java (revision 0)
+++ continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/parent/AbstractBuildAgentsTest.java (revision 0)
@@ -0,0 +1,219 @@
+package org.apache.continuum.web.test.parent;
+
+//import org.testng.Assert;
+import org.apache.continuum.web.test.ConfigurationTest;
+
+/*
+ * 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.
+ */
+
+public abstract class AbstractBuildAgentsTest
+ extends AbstractContinuumTest
+{
+ public void enableDistributedBuilds()
+ {
+ ConfigurationTest config = new ConfigurationTest();
+ config.goToConfigurationPage();
+ setFieldValue( "numberOfAllowedBuildsinParallel", "2" );
+ if (!isChecked("configuration_distributedBuildEnabled"));
+ {
+ checkField("configuration_distributedBuildEnabled");
+ }
+ clickAndWait("configuration_");
+ assertTextPresent("true");
+ assertTextPresent("Distributed Builds");
+ assertElementPresent("link=Build Agents");
+
+ }
+
+ public void goToBuildAgentPage()
+ {
+ clickAndWait("link=Build Agents");
+ assertPage("Continuum - Build Agents");
+ }
+
+ public void assertBuildAgentPage()
+ {
+ assertPage("Continuum - Build Agents");
+ assertTextPresent("Build Agents");
+ assertTextPresent("Build Agent Groups");
+ assertButtonWithValuePresent( "Add" );
+
+ }
+
+ public void goToAddBuildAgent()
+ {
+ goToBuildAgentPage();
+ assertBuildAgentPage();
+ clickAndWait("editBuildAgent_0"); //add button
+ assertAddEditBuildAgentPage();
+ }
+
+ public void assertAddEditBuildAgentPage()
+ {
+ assertPage( "Continuum - Add/Edit Build Agent" );
+ assertTextPresent( "Add/Edit Build Agent" );
+ assertTextPresent( "Build Agent URL*:" );
+ assertTextPresent( "Description:" );
+ assertTextPresent( "Enabled" );
+ assertElementPresent( "saveBuildAgent_buildAgent_url" );
+ assertElementPresent( "saveBuildAgent_buildAgent_description");
+ assertButtonWithValuePresent( "Save" );
+ assertButtonWithValuePresent( "Cancel" );
+ }
+
+ public void removeBuildAgent( String agentName )
+ {
+ clickLinkWithXPath( "(//a[contains(@href,'deleteBuildAgent.action') and contains(@href, '" + agentName + "')])//img" );
+ assertPage("Continuum - Delete Build Agent");
+ assertTextPresent( "Delete Build Agent" );
+ assertTextPresent( "Are you sure you want to delete build agent " + agentName + " ?" );
+ assertButtonWithValuePresent( "Delete" );
+ assertButtonWithValuePresent( "Cancel" );
+ clickButtonWithValue( "Delete" );
+ assertBuildAgentPage();
+ }
+
+ public void addBuildAgent( String agentURL, String description, boolean success )
+ {
+ setFieldValue( "saveBuildAgent_buildAgent_url", agentURL );
+ setFieldValue("saveBuildAgent_buildAgent_description", description );
+ checkField("saveBuildAgent_buildAgent_enabled");
+ submit();
+ if ( success )
+ {
+ assertBuildAgentPage();
+ assertElementPresent( "link=" + agentURL );
+
+ }
+ else
+ {
+ assertAddEditBuildAgentPage();
+ }
+
+ }
+
+ public void goToEditBuildAgent( String name, String description )
+ {
+ goToBuildAgentPage();
+ clickImgWithAlt( "Edit" );
+ assertAddEditBuildAgentPage();
+ assertFieldValue( name, "saveBuildAgent_buildAgent_url" );
+ assertFieldValue( description, "saveBuildAgent_buildAgent_description" );
+
+ }
+
+ public void addEditBuildAgent( String agentName, String newDesc )
+ {
+ assertFieldValue( agentName, "saveBuildAgent_buildAgent_url" );
+ setFieldValue( "saveBuildAgent_buildAgent_description", newDesc );
+ submit();
+ assertBuildAgentPage();
+ assertTextPresent( newDesc );
+
+ }
+
+
+ public void goToAddBuildAgentGroup()
+ {
+ goToBuildAgentPage();
+ clickAndWait("editBuildAgentGroup_0"); //add button
+ String[] options =
+ new String[] { "--- Available Build Agents ---", "Agent_url_name", "Second_Agent" };
+ assertAddEditBuildAgentGroupPage( options, null );
+ }
+
+
+ public void addEditBuildAgentGroup( String name, String[] addBuildAgents, String[] removeBuildAgents,
+ boolean success ) throws Exception
+ {
+ setFieldValue( "saveBuildAgentGroup_buildAgentGroup_name", name );
+ if ( addBuildAgents != null && addBuildAgents.length > 0 )
+ {
+ for ( String ba : addBuildAgents )
+ {
+ selectValue( "buildAgentIds", ba );
+ clickButtonWithValue( "->", false );
+ }
+ }
+ if ( removeBuildAgents != null && removeBuildAgents.length > 0 )
+ {
+ for ( String ba : removeBuildAgents )
+ {
+ selectValue( "selectedBuildAgentIds", ba );
+ clickButtonWithValue( "<-", false );
+ }
+ }
+ submit();
+ if ( success )
+ {
+ assertBuildAgentPage();
+ }
+ else
+ {
+ assertAddEditBuildAgentGroupPage( null, null );
+ }
+
+
+ }
+
+ public void assertAddEditBuildAgentGroupPage( String[] availableBuildAgents, String[] usedBuildAgents )
+ {
+ assertPage( "Continuum - Add/Edit Build Agent Group" );
+ assertTextPresent( "Add/Edit Build Agent Group" );
+ assertTextPresent( "Name*:" );
+ assertTextPresent( "Configure the used Build Agents:" );
+ assertElementPresent( "buildAgentGroup.name" );
+ if ( availableBuildAgents != null && availableBuildAgents.length > 0 )
+ {
+ assertOptionPresent( "buildAgentIds", availableBuildAgents );
+ }
+ if ( usedBuildAgents != null && usedBuildAgents.length > 0 )
+ {
+ assertOptionPresent( "selectedBuildAgentIds", usedBuildAgents );
+ }
+
+ assertButtonWithValuePresent( "Save" );
+ assertButtonWithValuePresent( "Cancel" );
+ }
+
+ public void goToEditBuildAgentGroup( String name, String[] buildAgents )
+ {
+ goToBuildAgentPage();
+ String xPath = "//preceding::td[text()='" + name + "']//following::img[@alt='Edit']";
+ clickLinkWithXPath( xPath );
+ assertAddEditBuildAgentGroupPage( null, buildAgents );
+ assertFieldValue( name, "buildAgentGroup.name" );
+ }
+
+
+ public void removeBuildAgentGroup( String name )
+ {
+ goToBuildAgentPage();
+ clickLinkWithXPath( "(//a[contains(@href,'deleteBuildAgentGroup.action') and contains(@href, '" + name + "')])//img" );
+ assertPage("Continuum - Delete Build Agent Group");
+ assertTextPresent( "Delete Build Agent" );
+ assertTextPresent( "Are you sure you want to delete build agent group " + name + " ?" );
+ assertButtonWithValuePresent( "Delete" );
+ assertButtonWithValuePresent( "Cancel" );
+ clickButtonWithValue( "Delete" );
+ assertBuildAgentPage();
+ }
+
+
+}
Index: continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/QueueTest.java
===================================================================
--- continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/QueueTest.java (revision 785944)
+++ continuum-webapp-test/src/test/testng/org/apache/continuum/web/test/QueueTest.java (working copy)
@@ -21,7 +21,9 @@
import org.apache.continuum.web.test.parent.AbstractBuildQueueTest;
import org.testng.annotations.Test;
+import org.apache.continuum.web.test.ScheduleTest;
+
/**
* @author José Morales MartÃnez
* @version $Id$
@@ -32,15 +34,61 @@
public class QueueTest
extends AbstractBuildQueueTest
{
-
+
public void testAddBuildQueue()
{
setMaxBuildQueue( 2 );
String BUILD_QUEUE_NAME = getProperty( "BUILD_QUEUE_NAME" );
addBuildQueue( BUILD_QUEUE_NAME, true );
}
-
- @Test( dependsOnMethods = { "testAddBuildQueue" } )
+
+ @Test( dependsOnMethods = { "testAddBuildQueue" } ) //"testDeleteBuildQueue" } )
+ public void testQueuePageWithoutBuild()
+ {
+ clickAndWait( "link=Queues" );
+ assertPage( "Continuum - Build Queue" );
+ assertTextPresent( "Nothing is building" );
+ assertTextNotPresent( "Project Name* Build Definition" );
+ assertTextPresent( "Current Build" );
+ assertTextPresent( "Build Queue" );
+ assertTextPresent( "Current Checkout" );
+ assertTextPresent( "Checkout Queue " );
+ assertTextPresent( "Current Prepare Build" );
+ assertTextPresent( "Prepare Build Queue" );
+
+ }
+
+ @Test( dependsOnMethods = { "testAddBuildQueue", "testAddSchedule" } )
+ public void testAddBuildQueueToSchedule()
+ {
+ ScheduleTest sched = new ScheduleTest();
+
+ String SCHEDULE_NAME = getProperty( "SCHEDULE_NAME" );
+ String SCHEDULE_DESCRIPTION = getProperty( "SCHEDULE_DESCRIPTION" );
+ String SCHEDULE_EXPR_SECOND = getProperty( "SCHEDULE_EXPR_SECOND" );
+ String SCHEDULE_EXPR_MINUTE = getProperty( "SCHEDULE_EXPR_MINUTE" );
+ String SCHEDULE_EXPR_HOUR = getProperty( "SCHEDULE_EXPR_HOUR" );
+ String SCHEDULE_EXPR_DAY_MONTH = getProperty( "SCHEDULE_EXPR_DAY_MONTH" );
+ String SCHEDULE_EXPR_MONTH = getProperty( "SCHEDULE_EXPR_MONTH" );
+ String SCHEDULE_EXPR_DAY_WEEK = getProperty( "SCHEDULE_EXPR_DAY_WEEK" );
+ String SCHEDULE_EXPR_YEAR = getProperty( "SCHEDULE_EXPR_YEAR" );
+ String SCHEDULE_MAX_TIME = getProperty( "SCHEDULE_MAX_TIME" );
+ String SCHEDULE_PERIOD = getProperty( "SCHEDULE_PERIOD" );
+
+ String BUILD_QUEUE_NAME = getProperty( "BUILD_QUEUE_NAME" );
+
+
+ sched.goToEditSchedule( SCHEDULE_NAME, SCHEDULE_DESCRIPTION, SCHEDULE_EXPR_SECOND, SCHEDULE_EXPR_MINUTE,
+ SCHEDULE_EXPR_HOUR, SCHEDULE_EXPR_DAY_MONTH, SCHEDULE_EXPR_MONTH, SCHEDULE_EXPR_DAY_WEEK,
+ SCHEDULE_EXPR_YEAR, SCHEDULE_MAX_TIME, SCHEDULE_PERIOD );
+ getSelenium().removeSelection("saveSchedule_availableBuildQueues", "label=DEFAULT_BUILD_QUEUE");
+ getSelenium().addSelection("saveSchedule_availableBuildQueues", "label="+BUILD_QUEUE_NAME);
+ getSelenium().click("//input[@value='->']");
+ submit();
+
+ }
+
+ @Test( dependsOnMethods = { "testAddBuildQueue" } )
public void testAddNotAllowedBuildQueue()
{
setMaxBuildQueue( 1 );
@@ -57,8 +105,8 @@
addBuildQueue( BUILD_QUEUE_NAME, false );
assertTextPresent( "Build queue name already exists." );
}
-
- //@Test( dependsOnMethods = { "testAddAlreadyExistBuildQueue" } )
+
+ @Test( dependsOnMethods = { "testAddAlreadyExistBuildQueue" } )
public void testAddEmptyBuildQueue()
{
setMaxBuildQueue( 3 );
@@ -66,7 +114,7 @@
assertTextPresent( "You must define a name" );
}
- @Test( dependsOnMethods = { "testAddBuildQueue", "testAddAlreadyExistBuildQueue" } )
+ @Test( dependsOnMethods = { "testAddBuildQueueToSchedule" } )
public void testDeleteBuildQueue()
{
goToBuildQueuePage();
@@ -74,18 +122,18 @@
removeBuildQueue( BUILD_QUEUE_NAME );
assertTextNotPresent( BUILD_QUEUE_NAME );
}
-
-
+
+
@Test( dependsOnMethods = { "testAddMavenTwoProject" } )
public void testQueuePageWithProjectCurrentlyBuilding()
throws Exception
- {
+ {
//build a project
String M2_PROJ_GRP_NAME = getProperty( "M2_PROJ_GRP_NAME" );
String M2_PROJ_GRP_ID = getProperty( "M2_PROJ_GRP_ID" );
String M2_PROJ_GRP_DESCRIPTION = getProperty( "M2_PROJ_GRP_DESCRIPTION" );
buildProjectForQueuePageTest( M2_PROJ_GRP_NAME, M2_PROJ_GRP_ID, M2_PROJ_GRP_DESCRIPTION, M2_PROJ_GRP_NAME );
-
+
//check queue page while building
clickAndWait( "link=Queues" );
assertPage( "Continuum - Build Queue" );
@@ -103,21 +151,5 @@
waitForElementPresent( "//img[@alt='Success']" );
Thread.sleep( 10000 );
}
-
- //@Test( dependsOnMethods = { "testDeleteBuildQueue" } )
- public void testQueuePageWithoutBuild()
- {
- clickAndWait( "link=Queues" );
- assertPage( "Continuum - Build Queue" );
- assertTextPresent( "Nothing is building" );
- assertTextNotPresent( "Project Name* Build Definition" );
- assertTextPresent( "Current Build" );
- assertTextPresent( "Build Queue" );
- assertTextPresent( "Current Checkout" );
- assertTextPresent( "Checkout Queue " );
- assertTextPresent( "Current Prepare Build" );
- assertTextPresent( "Prepare Build Queue" );
-
- }
-
-}
+
+ }
Index: continuum-webapp-test/src/test/resources/testng.properties
===================================================================
--- continuum-webapp-test/src/test/resources/testng.properties (revision 785944)
+++ continuum-webapp-test/src/test/resources/testng.properties (working copy)
@@ -234,3 +234,14 @@
# Project User
PROJECTUSER_DEFAULTPROJECTGROUP_USERNAME=projectuser
PROJECTUSER_DEFAULTPROJECTGROUP_FULLNAME=Project User - Default Project Group
+
+########################
+# buildAgents group
+########################
+BUILD_AGENT_NAME =Agent_url_name
+BUILD_AGENT_DESCRIPTION =Agent_description
+BUILD_AGENT_NAME2 =Second_Agent
+BUILD_AGENT_DESCRIPTION2 =Agent_description2
+BUILD_AGENT_NAME3 =Third_Agent
+BUILD_AGENT_DESCRIPTION3 =Agent_description3
+BUILD_AGENT_GROUPNAME =agent_groupname