[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