[jbosstools-commits] JBoss Tools SVN: r21955 - in trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext: config and 2 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri May 7 10:15:36 EDT 2010


Author: lzoubek at redhat.com
Date: 2010-05-07 10:15:34 -0400 (Fri, 07 May 2010)
New Revision: 21955

Added:
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/RemoveServer.java
Modified:
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/RequirementAwareSuite.java
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/SWTEclipseExt.java
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/SWTTestExt.java
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/Annotations.java
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/TestConfigurator.java
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/AddServer.java
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/ClearProjects.java
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/RequirementBase.java
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/StopServer.java
   trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/view/ServersView.java
Log:
SWTbot extensions : auto-shutdown server after all tests finished, improved @Server annotation

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/RequirementAwareSuite.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/RequirementAwareSuite.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/RequirementAwareSuite.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -9,6 +9,7 @@
 import org.jboss.tools.ui.bot.ext.config.TestConfigurator;
 import org.jboss.tools.ui.bot.ext.config.Annotations.SWTBotTestRequires;
 import org.jboss.tools.ui.bot.ext.config.requirement.RequirementBase;
+import org.junit.runner.Description;
 import org.junit.runner.Runner;
 import org.junit.runner.notification.RunListener;
 import org.junit.runner.notification.RunNotifier;
@@ -26,6 +27,9 @@
  * @author lzoubek at redhat.com
  */
 public class RequirementAwareSuite extends Suite {
+	// we have one global instance of cleanup listener
+	final static DoAfterAllTestsRunListener cleanUp = new DoAfterAllTestsRunListener();
+
 	class ReqAwareClassRunner extends BlockJUnit4ClassRunner {
 		private final List<RequirementBase> requirements;
 
@@ -37,14 +41,19 @@
 
 		@Override
 		public void run(RunNotifier notifier) {
-			// adding ability to create screen shot (taken from SWTBotJunit4ClassRunner)
+			// planned test counter must know about all tests (methods) within a class
+			cleanUp.incrPlanned(getChildren().size()-1);
+			// ensure that we have exactly 1 cleanup listener registered
+			notifier.removeListener(cleanUp);
+			notifier.addListener(cleanUp);
+			// adding ability to create screen shot (taken from
+			// SWTBotJunit4ClassRunner)
 			RunListener failureSpy = new ScreenshotCaptureListener();
 			notifier.removeListener(failureSpy);
-			notifier.addListener(failureSpy);			
+			notifier.addListener(failureSpy);
 			try {
 				super.run(notifier);
-			}
-			finally {
+			} finally {
 				notifier.removeListener(failureSpy);
 			}
 		}
@@ -57,7 +66,7 @@
 					r.fulfill();
 				}
 			} catch (Exception e) {
-				log.error("Fulfilling failed", e);				
+				log.error("Fulfilling failed", e);
 			}
 
 			return super.withBeforeClasses(statement);
@@ -74,19 +83,74 @@
 					.getClassRequirements(klass);
 			if (reqs != null) {
 				if (!TestConfigurator.checkConfig()) {
-					log.info("Skipping class '" + klass.getCanonicalName()+"' - incorrect configuration");
+					log.info("Skipping class '" + klass.getCanonicalName()
+							+ "' - incorrect configuration");
 					return null;
 				}
 				log.info("Returning runner for test class "
 						+ klass.getCanonicalName());
-				return new ReqAwareClassRunner(klass, reqs);				
+				// ensure creating runner instance
+				Runner runner = new ReqAwareClassRunner(klass, reqs);
+				// increment number of tests planned to run by 1 (class contains at least 1 test method)
+				cleanUp.incrPlanned();
+				return runner;
 			}
-			log.info("Skipping class '" + klass.getCanonicalName() + "' - annotations do not met configuration");
+			log.info("Skipping class '" + klass.getCanonicalName()
+					+ "' - annotations do not met configuration");
 			return null;
 		}
 
 	}
 
+	/**
+	 * listener which listens to test runs, does some cleanup after all tests
+	 * have run
+	 * 
+	 * @author lzoubek
+	 * 
+	 */
+	static class DoAfterAllTestsRunListener extends RunListener {
+		// As we can run more suites at once, we need to count tests which are planned to run
+		// and the ones which already passed (or failed), perform cleanups when the last one finishes
+		private int testsAboutToRun = 0;
+		private int testsFinished = 0;
+
+		public void incrPlanned() {
+			testsAboutToRun += 1;
+		}
+		public void incrPlanned(int amount) {
+			testsAboutToRun += amount;
+		}
+
+		public void incrFinished() {
+			testsFinished += 1;
+		}
+
+		public int getPlanned() {
+			return testsAboutToRun;
+		}
+
+		public int getFinished() {
+			return testsFinished;
+		}		
+		@Override
+		public void testFinished(Description description) throws Exception {
+			incrFinished();
+			log.info("Finished tests : "+getFinished()+"/"+getPlanned());
+			if (getFinished() >= getPlanned()) {
+				log.info("All tests finished, performing cleanup requirements ");
+				try {
+					RequirementBase.createStopServer().fulfill();
+
+					log.info("All cleanup requirements performed");
+				} catch (Exception ex) {
+					log.error("Unable to fulfill cleanup requirements", ex);
+				}
+			}
+			super.testFinished(description);
+		}
+	}
+
 	private final ArrayList<Runner> runners = new ArrayList<Runner>();
 
 	/**
@@ -103,7 +167,6 @@
 	public RequirementAwareSuite(Class<?> klass) throws Throwable {
 		super(klass, Collections.<Runner> emptyList());
 		runners.add(new Suite(klass, new RequirementAwareRunnerBuilder()));
-
 	}
 
 	@Override

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/SWTEclipseExt.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/SWTEclipseExt.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/SWTEclipseExt.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -571,7 +571,30 @@
 		}
 
 	}
+	public void removeServerRuntime(String runtimeName) {
+		  log.info("Removing Server Runtime: " + runtimeName );
+					SWTBot wiz = open
+							.preferenceOpen(ActionItem.Preference.ServerRuntimeEnvironments.LABEL);
+					SWTBotTable tbRuntimeEnvironments = bot.table();
 
+					// first check if Environment doesn't exist
+					int numRows = tbRuntimeEnvironments.rowCount();
+					if (numRows > 0) {
+						int currentRow = 0;
+						while (currentRow < numRows) {
+							if (tbRuntimeEnvironments.cell(currentRow, 0).equalsIgnoreCase(
+									runtimeName)) {
+								tbRuntimeEnvironments.select(currentRow);
+								wiz.button(IDELabel.Button.REMOVE).click();
+								open.finish(wiz,IDELabel.Button.OK);
+								log.info("Server Runtime '" + runtimeName +"' removed.");
+								return;
+							} else {
+								currentRow++;
+							}
+						}
+					}
+	}
 	/**
 	 * adds given java to Installed JRE's
 	 * 

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/SWTTestExt.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/SWTTestExt.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/SWTTestExt.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -65,5 +65,6 @@
 	public static int TIME_5S = Timing.time5S();
 	public static int TIME_10S = Timing.time10S();
 	public static int TIME_20S = Timing.time20S();
+	
 
 }

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/Annotations.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/Annotations.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/Annotations.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -70,6 +70,11 @@
 		 */
 		boolean required() default true;
 		/**
+		 * state (default Running)
+		 * @return
+		 */
+		ServerState state() default ServerState.Running;
+		/**
 		 * server type to match (Default ALL)
 		 * @return
 		 */
@@ -91,7 +96,7 @@
 	 *
 	 */
 	@Retention(RetentionPolicy.RUNTIME)
-	public @interface Seam {
+	public @interface Seam {		
 		/**
 		 * true if Seam is required (default)
 		 * @return
@@ -133,6 +138,20 @@
 		String operator() default "=";
 		
 	}
+	public enum ServerState {
+		/**
+		 * server will run
+		 */
+		Running,
+		/**
+		 * server present, but not running
+		 */
+		NotRunning,
+		/**
+		 * server (and runtime) not present
+		 */
+		Disabled
+	}
 	public enum ServerType {
 		/**
 		 * EAP

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/TestConfigurator.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/TestConfigurator.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/TestConfigurator.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -17,6 +17,7 @@
 import org.jboss.tools.ui.bot.ext.config.Annotations.SWTBotTestRequires;
 import org.jboss.tools.ui.bot.ext.config.Annotations.Seam;
 import org.jboss.tools.ui.bot.ext.config.Annotations.Server;
+import org.jboss.tools.ui.bot.ext.config.Annotations.ServerState;
 import org.jboss.tools.ui.bot.ext.config.Annotations.ServerType;
 import org.jboss.tools.ui.bot.ext.config.requirement.RequirementBase;
 
@@ -123,7 +124,7 @@
 	private static RequirementBase getServerRequirement(Server s) {
 		if (!s.required()) {
 			return null;
-		}
+		}				
 		if (!s.type().equals(ServerType.ALL)) {
 			if (s.type().equals(ServerType.EAP)
 					&& !server.type.equals(ServerBean.ServerType.EAP)) {
@@ -134,10 +135,19 @@
 				return null;
 			}
 		}
-
 		if (!matches(server.version, s.operator(), s.version())) {
 			return null;
 		}
+		if (ServerState.Disabled.equals(s.state())) {
+			RequirementBase removeServer = RequirementBase.createRemoveServer();
+			removeServer.getDependsOn().add(RequirementBase.createStopServer());
+			return removeServer;
+		}
+		if (ServerState.NotRunning.equals(s.state())) {
+			RequirementBase stopServer = RequirementBase.createStopServer();
+			stopServer.getDependsOn().add(RequirementBase.createAddServer());
+			return stopServer;
+		}
 		return RequirementBase.createStartServer();
 	}
 

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/AddServer.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/AddServer.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/AddServer.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -46,6 +46,7 @@
 		SWTTestExt.configuredState.getServer().name=runtimeName;
 		SWTTestExt.configuredState.getServer().version=TestConfigurator.server.version;
 		SWTTestExt.configuredState.getServer().type=TestConfigurator.server.type.toString();
+		SWTTestExt.configuredState.getServer().withJavaVersion = TestConfigurator.server.withJavaVersion;
 	}
 
 	

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/ClearProjects.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/ClearProjects.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/ClearProjects.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -1,6 +1,5 @@
 package org.jboss.tools.ui.bot.ext.config.requirement;
 
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
 import org.jboss.tools.ui.bot.ext.SWTTestExt;
 /**
  * undeploys and deletes all projects
@@ -12,13 +11,7 @@
 	@Override
 	public boolean checkFulfilled() {
 		try {		
-			SWTBotTreeItem[] items = SWTTestExt.projectExplorer.show().bot().tree().getAllItems();
-			if (items.length!=0) {
-				for (SWTBotTreeItem item : items) {
-					log.info("Item "+item.getText());					
-				}
-			}
-			return items.length==0;
+			return SWTTestExt.projectExplorer.show().bot().tree().getAllItems().length==0;						
 		}
 		catch (Exception ex) {
 			log.error("Unable to determine count of projects",ex);

Added: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/RemoveServer.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/RemoveServer.java	                        (rev 0)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/RemoveServer.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -0,0 +1,28 @@
+package org.jboss.tools.ui.bot.ext.config.requirement;
+
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+
+/**
+ * removes server and server runtime
+ * @author lzoubek at redhat.com
+ *
+ */
+public class RemoveServer extends RequirementBase {
+
+	@Override
+	public boolean checkFulfilled() {
+		return !SWTTestExt.configuredState.getServer().isConfigured;
+	}
+
+	@Override
+	public void handle() {
+		SWTTestExt.servers.deleteServer(SWTTestExt.configuredState.getServer().name);
+		SWTTestExt.eclipse.removeServerRuntime(SWTTestExt.configuredState.getServer().name);
+		SWTTestExt.configuredState.getServer().isConfigured=false;
+		SWTTestExt.configuredState.getServer().name=null;
+		SWTTestExt.configuredState.getServer().version=null;
+		SWTTestExt.configuredState.getServer().type=null;
+		SWTTestExt.configuredState.getServer().withJavaVersion=null;
+	}
+
+}


Property changes on: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/RemoveServer.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/RequirementBase.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/RequirementBase.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/RequirementBase.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -148,6 +148,16 @@
 		return req;
 	}
 
+	public static RequirementBase createStopServer() {
+		RequirementBase req = new StopServer();
+		return req;
+	}
+
+	public static RequirementBase createRemoveServer() {
+		RequirementBase req = new RemoveServer();
+		return req;
+	}
+
 	
 
 }

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/StopServer.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/StopServer.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/config/requirement/StopServer.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -2,7 +2,7 @@
 
 import org.jboss.tools.ui.bot.ext.SWTTestExt;
 /**
- * Stops server (as dependent requirement has {@link AddServer}
+ * Stops server
  * @author Vladimir Pakan
  *
  */

Modified: trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/view/ServersView.java
===================================================================
--- trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/view/ServersView.java	2010-05-07 13:51:18 UTC (rev 21954)
+++ trunk/jst/tests/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/view/ServersView.java	2010-05-07 14:15:34 UTC (rev 21955)
@@ -56,24 +56,42 @@
 	 * @param serverName
 	 */
 	public void stopServer(String serverName) {
-		SWTBot bot = open.viewOpen(ServerServers.LABEL).bot();
+		SWTBot bot = show().bot();
 		SWTBotTree tree = bot.tree();
 		SWTBotTreeItem server = findServerByName(tree,serverName);
 		if (server!=null) {
 			ContextMenuHelper.prepareTreeItemForContextMenu(tree, server);
 	        new SWTBotMenu(ContextMenuHelper.getContextMenu(tree, IDELabel.Menu.STOP, false)).click();
 		    new SWTUtilExt(this).waitForNonIgnoredJobs();
-		    new SWTUtilExt(this).waitForAll(Timing.time3S());
+		    new SWTUtilExt(this).waitForAll(Timing.time10S());
 	        
 		}
 	}
 	/**
+	 * deletes server with given name
+	 * @param serverName
+	 */
+	public void deleteServer(String serverName) {
+		SWTBot bot = show().bot();
+		SWTBotTree tree = bot.tree();
+		SWTBotTreeItem server = findServerByName(tree,serverName);
+		if (server!=null) {
+			ContextMenuHelper.prepareTreeItemForContextMenu(tree, server);
+	        new SWTBotMenu(ContextMenuHelper.getContextMenu(tree, IDELabel.Menu.DELETE, false)).click();
+	        SWTBotShell shell = shell("Delete Server");
+	          shell.activate();
+	          open.finish(shell.bot(), IDELabel.Button.OK);
+	          log.info("Removed  server: " + serverName);
+	        
+		}
+	}
+	/**
 	 * starts application server by given name
 	 * @param serverName
 	 */
 	public void startServer(String serverName) {
 		show();
-		SWTBot bot = open.viewOpen(ServerServers.LABEL).bot();
+		SWTBot bot = show().bot();
 		SWTBotTree tree = bot.tree();
 		SWTBotTreeItem server = findServerByName(tree,serverName);
 		if (server!=null) {



More information about the jbosstools-commits mailing list