[seam-commits] Seam SVN: r11928 - in branches/enterprise/JBPAPP_5_0/src/test/ftest: examples and 5 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Thu Jan 7 08:00:29 EST 2010


Author: mgencur at redhat.com
Date: 2010-01-07 08:00:28 -0500 (Thu, 07 Jan 2010)
New Revision: 11928

Added:
   branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/booking/jboss5cluster.xml
   branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/
   branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/
   branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java
Modified:
   branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml
   branches/enterprise/JBPAPP_5_0/src/test/ftest/readme.txt
   branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java
Log:
JBPAPP-3348 created automated test for booking example in cluster environment

Added: branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/booking/jboss5cluster.xml
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/booking/jboss5cluster.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/booking/jboss5cluster.xml	2010-01-07 13:00:28 UTC (rev 11928)
@@ -0,0 +1,26 @@
+<!--
+		JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+		Middleware LLC, and individual contributors by the @authors tag. See
+		the copyright.txt in the distribution for a full listing of individual
+		contributors. This is free software; you can redistribute it and/or
+		modify it under the terms of the GNU Lesser General Public License as
+		published by the Free Software Foundation; either version 2.1 of the
+		License, or (at your option) any later version. This software is
+		distributed in the hope that it will be useful, but WITHOUT ANY
+		WARRANTY; without even the implied warranty of MERCHANTABILITY or
+		FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+		License for more details. You should have received a copy of the GNU
+		Lesser General Public License along with this software; if not, write
+		to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+		Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+--> 
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Booking example" verbose="2" parallel="false">
+	<test name="booking_jboss5_cluster">
+		<parameter name="PROPERTY_FILE"
+			value="/org/jboss/seam/example/booking/test/selenium/booking.properties" />
+		<classes>
+			<class name="org.jboss.seam.example.common.test.booking.cluster.selenium.FailoverTest" />
+		</classes>
+	</test>
+</suite>

Modified: branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml	2010-01-07 11:35:55 UTC (rev 11927)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml	2010-01-07 13:00:28 UTC (rev 11928)
@@ -41,6 +41,8 @@
 	<!-- default deployment targets -->
 	<property name="jboss5.deploy.target" value="deploy" />
 	<property name="jboss5.undeploy.target" value="undeploy" />
+	<property name="jboss5.farm.target" value="farm" />
+	<property name="jboss5.unfarm.target" value="unfarm" />
 	<!-- default context paths -->
 	<property name="jboss5.context.path" value="/seam-${example.name}" />
 
@@ -97,10 +99,18 @@
 	<target name="selenium.test" depends="build, container.properties" description="Run Tests">
 		<taskdef resource="testngtasks" classpathref="classpath.test" />
 		<mkdir dir="${test.output.dir}" />
-
+		
+		<condition property="clusterxml" value="cluster">
+		      <equals arg1="${cluster}" arg2="true"/>
+		</condition>
+		<condition property="clusterxml" value="">
+			  <not>
+			  	<equals arg1="${cluster}" arg2="true"/>
+			  </not>				
+		</condition>
 		<!-- execute testng tests -->
 		<testng haltonfailure="false" outputdir="${test.output.dir}" classpathref="classpath.test" listener="${functional.listener}">
-			<xmlfileset file="${container}.xml" />
+			<xmlfileset file="${container}${clusterxml}.xml" />
 			<sysproperty key="selenium.server.port" value="${selenium.server.port}" />
 			<sysproperty key="selenium.host" value="${selenium.host}" />
 			<sysproperty key="selenium.browser" value="${selenium.browser}" />
@@ -111,13 +121,14 @@
 			<sysproperty key="openid.account" value="${openid.account}" />
 			<sysproperty key="openid.password" value="${openid.password}" />
 			<sysproperty key="seam.dir" value="${seam.dir}" />
+			<sysproperty key="jboss.home" value="${jboss.home}" />
 		</testng>
 	</target>
 
-	<target name="test" depends="build, container.properties" description="Run Tests">
+	<target name="simpletest" depends="build, container.properties" description="Run Tests" unless="cluster">
 		<!-- TODO all of these jboss commands must be optional with checks -->
 		<!-- TODO  go get JBoss and extract -->
-
+		<echo message="executing..."/>
 		<!-- TODO start JBoss -->
 		<!-- clean example -->
 		<ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="clean" inheritall="false" dir="${seam.dir}/examples/${example.name}" />
@@ -136,6 +147,16 @@
 		<!-- TODO remove jboss -->
 	</target>
 
+	<target name="clustertest" depends="build, container.properties" description="Run Tests in a cluster environment" if="cluster">
+			<echo message="executing..."/>
+			<ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="clean" inheritall="false" dir="${seam.dir}/examples/${example.name}" />
+			<antcall target="farm.example" />
+			<antcall target="selenium.test" />
+			<antcall target="unfarm.example" />
+	</target>
+	
+	<target name="test" depends="simpletest, clustertest"/>
+	
 	<!-- TODO get this to next level too - how to combine into one report -->
 	<target name="testreport" depends="test" description="generate html report">
 		<mkdir dir="${test.report.dir}" />
@@ -166,6 +187,26 @@
 			</and>
 		</waitfor>
 	</target>
+	
+	<target name="farm.example" depends="container.properties">
+		<property name="absolute.wait.url" value="${selenium.browser.url.cluster}${wait.url}" />
+		<echo>Deploying ${example.name} example to farm directory of ${container} using ${farm.target} target</echo>
+		<ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="${farm.target}" inheritall="false" dir="${seam.dir}/examples/${example.name}">
+			<property name="jboss.home" value="${container.home}" />
+			<property name="session.replication" value="true" />
+			<property name="distributable" value="true" />				
+			<propertyset refid="deploy.properties" />
+		</ant>
+		<!-- wait for the application to be active -->
+		<!-- TODO is there a better way? -->
+		<echo>Waiting ${wait.time} seconds for ${absolute.wait.url}</echo>
+		<waitfor maxwait="${wait.time}" maxwaitunit="second">
+			<and>
+				<!-- wait for the application to not throw 404 -->
+				<http url="${absolute.wait.url}" errorsBeginAt="404" />
+			</and>
+		</waitfor>
+	</target>
 
 	<target name="undeploy.example" depends="container.properties">
 		<echo>Undeploying example ${example.name} from ${container} using ${undeploy.target} target</echo>
@@ -173,6 +214,13 @@
 			<property name="jboss.home" value="${container.home}" />
 		</ant>
 	</target>
+	
+	<target name="unfarm.example" depends="container.properties">
+		<echo>Undeploying example ${example.name} from farm directory of ${container} using ${unfarm.target} target</echo>
+		<ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="${unfarm.target}" inheritall="false" dir="${seam.dir}/examples/${example.name}">
+			<property name="jboss.home" value="${container.home}" />
+		</ant>
+	</target>
 
 	<target name="container.properties" depends="set.deploy.properties" unless="container.home">
 		<set.container.properties container="${container}" />
@@ -187,6 +235,8 @@
 			<property name="container.jvm.arguments" value="${@{container}.jvm.arguments}" />
 			<property name="deploy.target" value="${@{container}.deploy.target}" />
 			<property name="undeploy.target" value="${@{container}.undeploy.target}" />
+			<property name="farm.target" value="${@{container}.farm.target}" />
+			<property name="unfarm.target" value="${@{container}.unfarm.target}" />
 			<property name="context.path" value="${@{container}.context.path}" />
 			<property name="wait.url" value="${context.path}" />
 			<property name="wait.time" value="${@{container}.deploy.waittime}" />

Modified: branches/enterprise/JBPAPP_5_0/src/test/ftest/readme.txt
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/readme.txt	2010-01-07 11:35:55 UTC (rev 11927)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/readme.txt	2010-01-07 13:00:28 UTC (rev 11928)
@@ -37,6 +37,27 @@
  To run functional tests for single example run:
   * "ant test -Dtest=example_name" for JBoss AS 5
 
+How To Test Cluster Environment:
+--------------------------------
+* Currently there is one test for cluster environment - booking. The main goal of this test is
+* to simulate recovery from breakdown. Two instances of JBoss AS are being used. First part of 
+* the test is executed at first (master) instance. Then the first instance is killed and a second (slave)
+* instance takes over executing of the application. 
+* This test should be executed autonomously (not as a part of test bundle).
+
+* Prior to executing of this test it is needed to start both JBoss AS instances manually. 
+* For example (assuming you have created second "all" configuration ("all2")):
+* JBOSS_HOME/bin/run.sh -c all -g DocsPartition -u 239.255.101.101 -b localhost -Djboss.messaging.ServerPeerID=1 
+* -Djboss.service.binding.set=ports-default
+* JBOSS_HOME/bin/run.sh -c all2 -g DocsPartition -u 239.255.101.101 -b localhost -Djboss.messaging.ServerPeerID=2
+* -Djboss.service.binding.set=ports-01
+* The configuration "all" is considered to be master jboss instance (related to 
+* jboss.service.binding.set=ports-default) and the application is deployed to server/all/farm 
+* directory at "jboss5.home" location specified in ftest.properties
+ 
+To run cluster test for booking example:
+ant test -Dtest=booking -Dcluster=true
+
 Known Limitations:
 ---------------------
 * Only tested on Firefox and IE

Added: branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java	                        (rev 0)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java	2010-01-07 13:00:28 UTC (rev 11928)
@@ -0,0 +1,303 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */ 
+package org.jboss.seam.example.common.test.booking.cluster.selenium;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
+
+import org.jboss.seam.example.common.test.selenium.SeamSelenium;
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+
+import com.thoughtworks.selenium.Wait;
+
+/**
+ * This class tests booking functionality of the example. Two instances of JBoss AS are
+ * being used. First part of test is executed at first (master) instance. Then the first 
+ * instance is killed and a second (slave) instance takes over executing of the application.
+ * This behaviour simulates recovery from breakdown.
+ * 
+ * Prior to executing this test it is needed to start both JBoss AS instances manually. 
+ * For example (assuming you have created second "all" configuration ("all2")):
+ * ./run.sh -c all -g DocsPartition -u 239.255.101.101 -b localhost -Djboss.messaging.ServerPeerID=1 
+ * -Djboss.service.binding.set=ports-default
+ * ./run.sh -c all2 -g DocsPartition -u 239.255.101.101 -b localhost -Djboss.messaging.ServerPeerID=2
+ * -Djboss.service.binding.set=ports-01
+ * The configuration all is considered to be master jboss instance (related to 
+ * jboss.service.binding.set=ports-default) and the application is deployed to server/all/farm directory
+ * at "jboss5.home" location specified in ftest.properties
+ * 
+ * 
+ * @author mgencur
+ * @author jharting
+ * 
+ */
+public class FailoverTest extends SeamSeleniumTest 
+{
+    private final String HOTEL_NAME = "W Hotel";
+    private final String DEFAULT_USERNAME = "demo";
+    private final String DEFAULT_PASSWORD = "demo";
+    private final String EXPECTED_NAME = "Demo User";
+    private final String CREDIT_CARD = "0123456789012345";
+    private final String CREDIT_CARD_NAME = "visa";
+    private final long JBOSS_SHUTDOWN_TIMEOUT = 20000;
+    private final int SECOND_BROWSER_PORT = 8180;
+    private final String SECOND_INSTANCE_BROWSER_URL = "http://localhost:" + SECOND_BROWSER_PORT;
+       
+    private SeamSelenium browser2;
+    
+    @Override
+    @BeforeMethod
+    public void setUp() 
+    {
+        super.setUp();        
+        deleteCookies(browser);
+        browser2 = startSecondBrowser();
+        deleteCookies(browser2);
+        assertTrue("Login failed.", login(browser));
+    }
+
+    @Override
+    @AfterMethod
+    public void tearDown() 
+    {
+        logout(browser2);
+        super.tearDown();
+        stopSecondBrowser();
+    }    
+    
+    
+    
+    /**
+     * Simply books hotel with failover during booking.
+     */
+    @Test
+    public void simpleBookingWithFailoverTest() 
+    {        
+        preFailurePart(browser);
+        
+        String newAddress = getAddressForSecondInstance(browser);
+        
+        shutdownMasterJBossInstance();     
+                              
+        postFailurePart(browser2, newAddress);
+        
+        // main page
+        String message = browser2.getText(getProperty("HOTEL_MESSAGE"));
+        assertTrue("Booking failed. Confirmation message does not match.", message.matches(
+              MessageFormat.format(getProperty("BOOKING_CONFIRMATION_MESSAGE"), EXPECTED_NAME, HOTEL_NAME))); 
+    }
+    
+    
+    
+    public void shutdownMasterJBossInstance()
+    {
+      String command = JBOSS_HOME + "/bin/shutdown.sh -s localhost:1099 -S";
+      //System.out.println("Command:" + command);
+      try
+      {
+         Process process = Runtime.getRuntime().exec(command);
+         process.waitFor();
+         Thread.sleep(JBOSS_SHUTDOWN_TIMEOUT);
+      }
+      catch (IOException e)
+      {
+         throw new RuntimeException(e.getCause());
+      }
+      catch (InterruptedException e)
+      {
+      }
+    }
+
+    public void preFailurePart(SeamSelenium browser)
+    {
+      if (!isLoggedIn(browser))
+          fail();
+      if (!browser.isElementPresent(getProperty("SEARCH_SUBMIT"))) {
+          browser.open(CONTEXT_PATH + getProperty("MAIN_PAGE"));
+          browser.waitForPageToLoad(TIMEOUT);
+      }
+      enterSearchQueryUsingAJAX(browser, HOTEL_NAME);
+      browser.click(getProperty("SEARCH_RESULT_TABLE_FIRST_ROW_LINK"));
+      browser.waitForPageToLoad(TIMEOUT);
+      // go to booking page
+      browser.click(getProperty("BOOKING_BOOK"));
+      browser.waitForPageToLoad(TIMEOUT);
+    }
+    
+    
+    public void postFailurePart(SeamSelenium browser, String newAddress)
+    {
+      browser2.open(newAddress);
+       
+       //booking page
+      populateBookingFields(browser); 
+
+      //a jsessionid cookie has to be deleted because at this moment there already exists one
+      deleteCookies(browser);
+      
+      browser.click(getProperty("HOTEL_PROCEED"));
+      browser.waitForPageToLoad(TIMEOUT);
+      
+      deleteCookies(browser);
+      
+      // confirm page
+      browser.click(getProperty("HOTEL_CONFIRM"));
+      browser.waitForPageToLoad(TIMEOUT);
+    }
+    
+    public SeamSelenium startSecondBrowser() 
+    {
+       BROWSER_URL = SECOND_INSTANCE_BROWSER_URL;
+       //System.out.println("host: " + HOST + ", port: " + PORT + ", browser_url: " + BROWSER_URL);
+       return super.startBrowser();
+    }    
+    
+    public void stopSecondBrowser()
+    {
+       browser2.stop();
+    }
+    
+    public String getAddressForSecondInstance(SeamSelenium browser)
+    {
+       String[] parsedStrings = browser.getLocation().split("/");
+       StringBuilder sb = new StringBuilder();
+       for (int i = 3; i != parsedStrings.length; i++){
+          sb.append("/").append(parsedStrings[i]);
+       }      
+       String sid = browser.getCookieByName("JSESSIONID");
+       String newAddress = sb.toString();
+       String firstPart = newAddress.substring(0, newAddress.indexOf("?"));
+       String secondPart = newAddress.substring(newAddress.indexOf("?") , newAddress.length());
+
+       newAddress = firstPart + ";jsessionid=" + sid + secondPart;
+    
+       return newAddress;      
+    }
+    
+    protected void populateBookingFields(SeamSelenium browser) 
+    {
+       populateBookingFields(browser, 2, 0, CREDIT_CARD, CREDIT_CARD_NAME);
+    }
+    
+    protected void populateBookingFields(SeamSelenium browser, int bed, int smoking, String creditCard, String creditCardName) 
+    {
+         browser.select(getProperty("HOTEL_BED_FIELD"),
+                 getProperty("HOTEL_BED_FIELD_SELECT_CRITERIA") + bed);
+         if (smoking == 1) {
+             browser.check(getProperty("HOTEL_SMOKING_1"));
+         } else {
+             browser.check(getProperty("HOTEL_SMOKING_2"));
+         }
+         browser.type(getProperty("HOTEL_CREDIT_CARD"), creditCard);
+         browser.type(getProperty("HOTEL_CREDIT_CARD_NAME"), creditCardName);
+    } 
+    
+    private void deleteCookies(SeamSelenium browser)
+    {
+       browser.deleteCookie("JSESSIONID", "path=" + CONTEXT_PATH + ", domain=localhost, recurse=true");
+    }     
+   
+    public boolean login(SeamSelenium browser) 
+    {
+        return login(browser, DEFAULT_USERNAME, DEFAULT_PASSWORD);
+    }
+   
+    public boolean login(SeamSelenium browser, String username, String password) 
+    {
+         if (isLoggedIn(browser)) 
+         {
+             fail("User already logged in.");
+         }
+         
+         browser.open(CONTEXT_PATH + getProperty("HOME_PAGE"));
+         browser.waitForPageToLoad(TIMEOUT);
+         
+         if (!browser.getTitle().equals(getProperty("PAGE_TITLE"))) 
+         {
+             return false;
+         }
+         
+         browser.type(getProperty("LOGIN_USERNAME_FIELD"), username);
+         browser.type(getProperty("LOGIN_PASSWORD_FIELD"), password);
+         browser.click(getProperty("LOGIN_SUBMIT"));
+         browser.waitForPageToLoad(TIMEOUT);
+         
+         return isLoggedIn(browser);
+    }
+   
+    public void logout(SeamSelenium browser) 
+    {
+        if (isLoggedIn(browser)) 
+        {
+             browser.click(getProperty("LOGOUT"));
+             browser.waitForPageToLoad(TIMEOUT);
+        }
+    }
+   
+    public boolean isLoggedIn(SeamSelenium browser) 
+    {
+        return browser.isElementPresent(getProperty("LOGOUT"));
+    }    
+   
+    public void enterSearchQueryUsingAJAX(final SeamSelenium browser, String query) 
+    {
+       browser.type(getProperty("SEARCH_STRING_FIELD"), "");
+       browser.type(getProperty("SEARCH_STRING_FIELD"), query.substring(0, query.length() - 1));
+       browser.typeKeys(getProperty("SEARCH_STRING_FIELD"), query.substring(query.length() - 1));
+       
+       browser.click(getProperty("SEARCH_SUBMIT"));
+      
+       // wait for javascript to show spinner
+       try 
+       {
+           Thread.sleep(1000);
+       } 
+       catch (InterruptedException e)
+       {
+       }
+       
+       // wait for page to get updated
+       new Wait() 
+       {
+           @Override
+           public boolean until() 
+           {
+               return !browser.isVisible(getProperty("SPINNER"));
+           }
+       }.wait("Spinner hasn't come out.");
+       
+       new Wait() 
+       {
+           @Override
+           public boolean until() 
+           {
+               return (browser.isElementPresent(getProperty("SEARCH_RESULT_TABLE")) || 
+                       browser.isElementPresent(getProperty("NO_HOTELS_FOUND")));
+           }
+       }.wait("Search results not found.");
+    }    
+}


Property changes on: branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java
___________________________________________________________________
Name: svn:executable
   + *

Modified: branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java	2010-01-07 11:35:55 UTC (rev 11927)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java	2010-01-07 13:00:28 UTC (rev 11928)
@@ -40,11 +40,11 @@
  */
 public abstract class SeamSeleniumTest {
 
-    private static String HOST;
-    private static int PORT;
-    private static String BROWSER;
-    private static String BROWSER_URL;
-    private static String SPEED;
+    protected static String HOST;
+    protected static int PORT;
+    protected static String BROWSER;
+    protected static String BROWSER_URL;
+    protected static String SPEED;
     public static String TIMEOUT;
     private static String PROPERTY_FILE;
     protected String CONTEXT_PATH = "";
@@ -54,16 +54,18 @@
     protected static String SEAM_DIR;
     protected static String APP_NAME;
     protected static String OUTPUT_DIR;
+    protected static String JBOSS_HOME;
     
+    
     //protected SeamSelenium
     public static SeamSelenium browser;
 
     @BeforeClass
     @Parameters( { "selenium.host", "selenium.server.port", "selenium.browser",
             "selenium.browser.url", "selenium.speed", "selenium.timeout",
-            "PROPERTY_FILE", "example.context.path", "seam.dir" })
+            "PROPERTY_FILE", "example.context.path", "seam.dir", "jboss.home" })
     public void setParameters(String host, String port, String browser,
-            String browserUrl, String speed, String timeout, String propertyFile, @Optional("") String contextPath, String seamDir) {
+            String browserUrl, String speed, String timeout, String propertyFile, @Optional("") String contextPath, String seamDir, String jbossHome) {
         HOST = host;
         PORT = Integer.parseInt(port);
         BROWSER = browser;
@@ -74,6 +76,7 @@
         CONTEXT_PATH = APP_NAME = contextPath;
         SEAM_DIR = seamDir;
         OUTPUT_DIR = SEAM_DIR + "/test-output/functional-framework";
+        JBOSS_HOME = jbossHome;
     }
 
     @BeforeMethod
@@ -96,14 +99,12 @@
         return newBrowser;
     }
     
-   
-   public void stopBrowser()
-   {
-      if (browser != null)
-      {
-         browser.stop();
-      }
-   }
+    public void stopBrowser() {
+        if (browser != null) 
+        {
+           browser.stop();
+        }
+    }
 
     public String getProperty(String key) {
         if (!propertiesLoaded) {



More information about the seam-commits mailing list